Вход

Делаем теги глобальными в DLE

Пожалуй лучшее решение, которое поможет вам вывести разные данные тегов которые привязаны к определенному TPL файлу в другом.
Решение было написано еще в не далеком 2014, автором rocksmart, но почему-то широкого применения ему не было найдено. Реализация простая и не мудреная но штука в итоге получается то что нужно.

Установка:
1. Открываем файл /engine/classes/templates.class.php и после строки:
class dle_template {
Вставить
var $transfer = array ();
Далее ищем код:
function get_real_time() {
И выше вставить
/* Глобализация данных */
	function transfer_result($matches=array()){
		$index   = $matches[2];
		$itsdata = $matches[3];
		$this->transfer[$index] = $itsdata;
	}
В этом же файле найти строку
if( isset( $this->result[$tpl] ) ) $this->result[$tpl] .= $this->copy_template;
И ПЕРЕД ней вставить
/* Глобализация данных */
if (strpos ($this->template, "[transfer=" ) !== false) {
	preg_replace_callback( "#\\[(transfer)=(.+?)\\](.*?)\\[/transfer\\]#is",array( &$this, 'transfer_result'), $this->copy_template);
	foreach($this->transfer as $index => $itsdata) {
			$this->result['transfer'][$index][] = $itsdata;
	}
}
$this->copy_template = preg_replace ( "#\\[(transfer)=(.+?)\\](.*?)\\[/transfer\\]#is", "", $this->copy_template);

2. Далее открываем файл /engine/classes/parse.class.php для защиты вставим, после строки
$source = str_ireplace( "{custom",
Вставить
$source = str_ireplace( "{transfer", "{transfer", $source );

3. Открываем файл /engine/modules/main.php и ПЕРЕД строкой
echo $tpl->result['main'];
Вставить
/* Глобализация данных by rocksmart */
if( count($tpl->result['transfer']) > 0 ) {
	foreach($tpl->result['transfer'] as $index => $itsdata) {
		$tpl->result['main'] = str_replace ( '{transfer_' . $index . '}', implode($itsdata), $tpl->result['main'] );
	}
}
$tpl->result['main'] = preg_replace( "#\\{transfer_(.+?)\\}#i", "", $tpl->result['main']);


Установка закончена!

Пример использования
[transfer=Уникальный идентификатор]какой либо текст с тегами соответствующими данному шаблону[/transfer]

Рассмотрим на примере вывода тега Делаем теги глобальными в DLE с fullstory.tpl в main.tpl
В fullstory.tpl пишем
[transfer=fulltitle]{title}[/transfer]
И потом в main.tpl в нужном месте
{transfer_fulltitle}
В итоге Название новости будет показано в файле main.tpl тегом {transfer_fulltitle}
261
Добавлено: 05 декабрь 2017 в 12:48:53
Собрано 0 рублей Поддержать автора

Войдите на сайт


Данное дополнение сделано на энтузиазме для пользователей. Вы можете помочь автору материально сделав вклад в развитие, создание и поддержку других бесплатных дополнений. Любая помощь это добрый шаг с вашей стороны, вы становитесь одним из спонсоров раздела и непосредственным образом влияете на его дальнейшее развитие.
Прокомментировать
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent

Комментарии (2)

  1. Nurbekov
    Nurbekov Клиенты 16 декабря 2017 11:36
    0
    Dle 12.0 Не работает, проверил несколько раз установку...
  2. burenokartem
    burenokartem Клиенты 5 декабря 2017 17:38
    0
    Хорошая вещь, ранее в 2012 году целое колесо изобретали для подобного. Жалко, что сейчас мне лично это необходимо, а так годный хак для оптимизации...
© PunPun. 2018. При копировании, ссылка на источник обязательна.
Дизайн и верстка: Webrambo