UnknownUser 0 Опубликовано: 16 мая 2018 Рассказать Опубликовано: 16 мая 2018 (изменено) Здравствуйте. До версии 13.0 даже при присваивании тегу пустой строчки он заменялся на пустоту. Сейчас же в подобном случае тег появляется на странице. Пример: $tpl->set('{user_id}', ''); Результат на странице до версии 13.0 - пустота. Результат на странице в версии 13.0 - {user_id} Хотел бы узнать, было ли так изначально задумано. Если да, то в связи с какими причинами. Изменено 16 мая 2018 пользователем UnknownUser Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 16 мая 2018 Рассказать Опубликовано: 16 мая 2018 29 минут назад, UnknownUser сказал: До версии 13.0 даже при присваивании тегу пустой строчки он заменялся на пустоту. Сейчас же в подобном случае тег появляется на странице. Ничего подобного. Никаких изменений в данном вопросе в скрипте нет. И все должно также заменяться как и всегда, что собственно и делается. Все версии скрипта DLE работают одинаково в данном вопросе, в том числе и 13.0 работает также абсолютно корректно. 29 минут назад, UnknownUser сказал: Результат на странице в версии 13.0 - {user_id} Это значит что ваша строка $tpl->set('{user_id}', ''); не выполнялась в принципе. Например не туда поставили куда нужно. Тег остается на месте, только если нет никаких кодов которые бы его обработали. Или например тег в шаблоне и ваш тег в PHP коде отличаются. Например русская буква e и латинская визуально одинаковы и ошибиться при написании легко. Цитата Ссылка на сообщение Поделиться на других сайтах
UnknownUser 0 Опубликовано: 16 мая 2018 Рассказать Опубликовано: 16 мая 2018 (изменено) Автор 8 minutes ago, celsoft said: Ничего подобного. Никаких изменений в данном вопросе в скрипте нет. И все должно также заменяться как и всегда, что собственно и делается. Это значит что ваша строка $tpl->set('{user_id}', ''); не выполнялась в принципе. Например не туда поставили куда нужно. Тег остается на месте, только если нет никаких кодов которые бы его обработали. Или например тег в шаблоне и ваш тег в PHP коде отличаются. Например русская буква e и латинская визуально одинаковы и ошибиться при написании легко. Изменения не производились там, где находятся подобные сточки. Проблемы с заменой появилось сразу же после обновления. Сама функция set была изменена. До 13.0: function set($name, $var) { if( is_array( $var ) && count( $var ) ) { foreach ( $var as $key => $key_var ) { $this->set( $key, $key_var ); } } else $var = str_ireplace( "{include", "{include", $var ); $var = str_ireplace( "{custom", "{custom", $var ); $var = str_ireplace( "{content", "{content", $var ); $var = str_ireplace( "[xf", "[xf", $var ); $this->data[$name] = $var; } В 13.0: function set($name, $var) { if( is_array( $var ) ) { if( count( $var ) ) { foreach ( $var as $key => $key_var ) { $this->set( $key, $key_var ); } } return; } $var = str_replace(array("{", "["),array("_{_", "_[_"), $var); $this->data[$name] = $var; } Изменено 16 мая 2018 пользователем UnknownUser Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 16 мая 2018 Рассказать Опубликовано: 16 мая 2018 11 минут назад, UnknownUser сказал: Сама функция set была изменена. И ...? Ту функциональность что вы пишите делает в этой функции одна строчка: $this->data[$name] = $var; Где в ней изменения между этими версиями? Никаких багов в данном вопросе нет, иначе бы половина стандартных тегов DLE у вас выводилась бы, а не только ваши правки. В данном случае ваши правки не работают корректно. А изменения которые в этой функции к назначению пустой строки $tpl->set('{user_id}', ''); не имеют никакого отношения. Тег {user_id} у вас где в шаблоне написан? Если в шаблоне, то замена будет. Если не в шаблоне, а например в тексте новости или еще где, то безусловно не будет никаких замен, т.к. функция $tpl->set('{user_id}', ''); только шаблонные теги меняет. Цитата Ссылка на сообщение Поделиться на других сайтах
UnknownUser 0 Опубликовано: 16 мая 2018 Рассказать Опубликовано: 16 мая 2018 (изменено) Автор 15 minutes ago, celsoft said: И ...? Ту функциональность что вы пишите делает в этой функции одна строчка: $this->data[$name] = $var; Где в ней изменения между этими версиями? Никаких багов в данном вопросе нет, иначе бы половина стандартных тегов DLE у вас выводилась бы, а не только ваши правки. В данном случае ваши правки не работают корректно. Не спорил бы, однако почему-то возникли проблемы после обновления, а до этого на разных версиях подобного не было. Примерный код, где используется функция set. $tpl->load_template(/*шаблон*/); $tpl->set('{user_id}', ''); $tpl->clear(); Изменено 16 мая 2018 пользователем UnknownUser Цитата Ссылка на сообщение Поделиться на других сайтах
UnknownUser 0 Опубликовано: 16 мая 2018 Рассказать Опубликовано: 16 мая 2018 Автор Удивительно, судя по всему, помогла обычная чистка кэша. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 16 мая 2018 Рассказать Опубликовано: 16 мая 2018 12 минут назад, UnknownUser сказал: Удивительно, судя по всему, помогла обычная чистка кэша. Видимо вы его добавляете в том месте DLE, где используется кеширование, и код исполняется не всегда, а когда нет информации в кеше. Но опять таки во всех версиях это одинаково. Новые кеширующиеся разделы мы не добавляли. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.