Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

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

Тема в разделе "Хаки DLE", создана пользователем PunPun, 5 дек 2017.

05.12.17 в 21:21
22.07.25 в 13:23
3
3.194
4
  1. TopicStarter Overlay
    PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.433
    Лучших ответов:
    32
    Рейтинги:
    +4.062 / 137 / -0
    1512468727_hoq8pahck5e[1].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']) > ) {
       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}
     
    #1 PunPun, 5 дек 2017
    Последнее редактирование: 6 дек 2017
    • Нравится Нравится x 4
    • Полезно Полезно x 2
  2. Nimad

    Nimad Зелёный

    Регистрация:
    29 дек 2017
    Сообщения:
    14
    Лучших ответов:
    0
    Рейтинги:
    +2 / 0 / -0
    Кто бы адаптировал под 18.х
     
  3. TopicStarter Overlay
    PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.433
    Лучших ответов:
    32
    Рейтинги:
    +4.062 / 137 / -0
    через систему плагинов делаешь правки и проблем нет
     
  4. nravchik

    nravchik Зелёный

    Регистрация:
    13 фев 2020
    Сообщения:
    1
    Лучших ответов:
    0
    Рейтинги:
    +1 / 0 / -0
     

    Вложения:

    • Согласен Согласен x 1
Яндекс.Метрика