CMS DataLife Engine - Система управления сайтами

Авторизация  
UnknownUser

$tpl->set

Рекомендуемые сообщения

Здравствуйте.

До версии 13.0 даже при присваивании тегу пустой строчки он заменялся на пустоту. Сейчас же в подобном случае тег появляется на странице.

Пример:

$tpl->set('{user_id}', '');

Результат на странице до версии 13.0 - пустота.

Результат на странице в версии 13.0 - {user_id}

Хотел бы узнать, было ли так изначально задумано. Если да, то в связи с какими причинами.

 

Изменено пользователем UnknownUser

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
29 минут назад, UnknownUser сказал:

До версии 13.0 даже при присваивании тегу пустой строчки он заменялся на пустоту. Сейчас же в подобном случае тег появляется на странице.

Ничего подобного. Никаких изменений в данном вопросе в скрипте нет. И все должно также заменяться как и всегда, что собственно и делается. Все версии скрипта DLE работают одинаково в данном вопросе, в том числе и 13.0 работает также абсолютно корректно.

 

29 минут назад, UnknownUser сказал:

Результат на странице в версии 13.0 - {user_id}

Это значит что ваша строка $tpl->set('{user_id}', ''); не выполнялась в принципе.  Например не туда поставили куда нужно. Тег остается на месте, только если нет никаких кодов которые бы его обработали. Или например тег в шаблоне и ваш тег в PHP коде отличаются. Например русская буква e и латинская визуально одинаковы и ошибиться при написании легко.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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;
		
	}

 

Изменено пользователем UnknownUser

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 минут назад, UnknownUser сказал:

Сама функция set была изменена.

И ...? Ту функциональность что вы пишите делает в этой функции одна строчка:

$this->data[$name] = $var;

Где в ней изменения между этими версиями?

 

Никаких багов в данном вопросе нет, иначе бы половина стандартных тегов DLE у вас выводилась бы, а не только ваши правки. В данном случае ваши правки не работают корректно. А изменения которые в этой функции к назначению пустой строки $tpl->set('{user_id}', ''); не имеют никакого отношения.

 

Тег {user_id} у вас где в шаблоне написан? Если в шаблоне, то замена будет. Если не в шаблоне, а например в тексте новости или еще где, то безусловно не будет никаких замен, т.к. функция $tpl->set('{user_id}', ''); только шаблонные теги меняет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

15 minutes ago, celsoft said:

И ...? Ту функциональность что вы пишите делает в этой функции одна строчка:


$this->data[$name] = $var;

Где в ней изменения между этими версиями?

 

Никаких багов в данном вопросе нет, иначе бы половина стандартных тегов DLE у вас выводилась бы, а не только ваши правки. В данном случае ваши правки не работают корректно.

Не спорил бы, однако почему-то возникли проблемы после обновления, а до этого на разных версиях подобного не было. Примерный код, где используется функция set.

$tpl->load_template(/*шаблон*/);
$tpl->set('{user_id}', '');
$tpl->clear();
Изменено пользователем UnknownUser

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, UnknownUser сказал:

Удивительно, судя по всему, помогла обычная чистка кэша.

Видимо вы его добавляете в том месте DLE, где используется кеширование, и код исполняется не всегда, а когда нет информации в кеше. Но опять таки во всех версиях это одинаково. Новые кеширующиеся разделы мы не добавляли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация