Перейти к содержанию

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


VAOZ
 Поделиться


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

Пожалуй лучшее решение, которое поможет вам вывести разные данные тегов которые привязаны к определенному 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}

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


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

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

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

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

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

Войти

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

Войти
 Поделиться


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