Перейти к публикации

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

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

До версии 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, где используется кеширование, и код исполняется не всегда, а когда нет информации в кеше. Но опять таки во всех версиях это одинаково. Новые кеширующиеся разделы мы не добавляли.

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...