Хак Делаем теги глобальными в dle

PunPun

Coder
Команда форума
Приватовец
Регистрация
23 Фев 2017
Сообщения
618
Реакции
402
Баллы
63
HoQ8pahcK5E.jpg
Пожалуй лучшее решение, которое поможет вам вывести разные данные тегов которые привязаны к определенному TPL файлу в другом.
Решение было написано еще в не далеком 2014, автором rocksmart, но почему-то широкого применения ему не было найдено. Реализация простая и не мудреная но штука в итоге получается то что нужно.

Установка:
1. Открываем файл /engine/classes/templates.class.php и после строки:
PHP:
class dle_template {
Вставить
PHP:
var $transfer = array ();
Далее ищем код:
PHP:
function get_real_time() {
И выше вставить
PHP:
/* Глобализация данных */
   function transfer_result($matches=array()){
       $index   = $matches[2];
       $itsdata = $matches[3];
       $this->transfer[$index] = $itsdata;
   }
В этом же файле найти строку
PHP:
if( isset( $this->result[$tpl] ) ) $this->result[$tpl] .= $this->copy_template;
И ПЕРЕД ней вставить
PHP:
/* Глобализация данных */
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 для защиты вставим, после строки
PHP:
$source = str_ireplace( "{custom",
Вставить
PHP:
$source = str_ireplace( "{transfer", "{transfer", $source );
3. Открываем файл /engine/modules/main.php и ПЕРЕД строкой
PHP:
echo $tpl->result['main'];
Вставить
PHP:
/* Глобализация данных 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']);
Установка закончена!

Пример использования
PHP:
[transfer=Уникальный идентификатор]какой либо текст с тегами соответствующими данному шаблону[/transfer]
Рассмотрим на примере вывода тега Делаем теги глобальными в DLE с fullstory.tpl в main.tpl
В fullstory.tpl пишем
PHP:
[transfer=fulltitle]{title}[/transfer]
И потом в main.tpl в нужном месте
PHP:
{transfer_fulltitle}
В итоге Название новости будет показано в файле main.tpl тегом {transfer_fulltitle}
 
Последнее редактирование:

aeneas

Новичок
Регистрация
27 Фев 2017
Сообщения
2.974
Реакции
1.352
Баллы
113
чет не вкурил зачем это ) примерно ясно но непонятин смысл для монетизации или трафа
 

Karambole

Новичок
Регистрация
1 Мар 2017
Сообщения
189
Реакции
137
Баллы
43
для самоудовлетворения от своей охуенности в познаниях DLE )))))))
 

pirat.ca

Новичок
Регистрация
13 Дек 2017
Сообщения
110
Реакции
28
Баллы
28
Смысл в том что к переменным куда проще обращатся.

К примеру тебе нужно вывести текст "К сожалению данное видео более недоступно" и при том у тебя есть 5 проигрывателей где этот текст может всплыть.
Вместо того что-бы вкидывать фразу об ошибке 5 раз в пять разных div'ов, span'ов и тд юзаешь лишь одну переменную {removedvideo} или как угодно названную.

<div>К сожалению данное видео более недоступно</div>
<div>К сожалению данное видео более недоступно</div>
<div>К сожалению данное видео более недоступно</div>
<div>К сожалению данное видео более недоступно</div>
<div>К сожалению данное видео более недоступно</div>

vs

<div>{removedvideo}</div>
<div>{removedvideo}</div>
<div>{removedvideo}</div>
<div>{removedvideo}</div>
<div>{removedvideo}</div>

tldr;
1) удобочитаемость кода
2) экономия пространства на хостинге так как фраза сохраняется единожды в переменную
3) скорость заполнения страницы
 

PunPun

Coder
Команда форума
Приватовец
Регистрация
23 Фев 2017
Сообщения
618
Реакции
402
Баллы
63
Смысл в том что к переменным куда проще обращатся.

К примеру тебе нужно вывести текст "К сожалению данное видео более недоступно" и при том у тебя есть 5 проигрывателей где этот текст может всплыть.
Вместо того что-бы вкидывать фразу об ошибке 5 раз в пять разных div'ов, span'ов и тд юзаешь лишь одну переменную {removedvideo} или как угодно названную.

<div>К сожалению данное видео более недоступно</div>
<div>К сожалению данное видео более недоступно</div>
<div>К сожалению данное видео более недоступно</div>
<div>К сожалению данное видео более недоступно</div>
<div>К сожалению данное видео более недоступно</div>

vs

<div>{removedvideo}</div>
<div>{removedvideo}</div>
<div>{removedvideo}</div>
<div>{removedvideo}</div>
<div>{removedvideo}</div>

tldr;
1) удобочитаемость кода
2) экономия пространства на хостинге так как фраза сохраняется единожды в переменную
3) скорость заполнения страницы
В первые вижу такого понятливого юзера, спасибо тебе добрый человек.
 
Сверху Снизу