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

Расширение функционала [list]...[/list]

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

1.JPG

 

Преставлением  Расширение функционала

  • ...
, который позволит вам сделать дополнение к шаблонизатору для вывода списка коротких новостей. Расширение функционала шаблонизатора (
  • ...
) для списка коротких новостей невероятно удобным и многофункциональным!

Суть проблемы: 
Нужно было вывести новости на сайте под управлением DLE для разных категорий и с разными шаблонами. Хотя в настройках категорий DLE присутствует параметр "Шаблон короткой новости", однако все бы ничего, но что если вам надо выводить данные в виде списка, плиткой и таблицей. Можно конечно в main.tpl добавить конструкции с помощью тега [category...] и [aviable...], но когда у вас на ресурсе категорий много, то получается довольно громоздко и неудобно. В частности, если категорий около 100 на сайте и периодически приходится добавлять новые категории. 
Стоит помнить о том, что в системной обертке добавляется автоматически перед выводом:

<div id="dle-content">&#123;content}</div>

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

#dle-content{display: table;}
.shortstory{display:table-row;}

Но вот со списком:
 

<ul><li>...</li></ul>

Валидно уж точно не получится.


Решение:
Решение вышло простым, но невероятно удобным и многофункциональным!
Для оформления желаемого списка используется только шаблон shortstory.tpl (или какой выбран для категории). В main.tpl никаких дополнительных тегов не нужно.
Вот пример шаблона короткой новости:
 

[page-count=1]<h1>Какое-то описание SEO для выбранной категории</h1>[/page-count]
<table>
<thead>
<tr>
    <td>Фото</td>
    <td>Описание</td>
</tr>
</thead>
<tbody>
[list]
<tr>
    <td><img src="{image-1}"></td>
    <td>
        [full-link]{title}[/full-link]
        <div>{short-story limit="200"}</div>
    </td>
</tr>
[/list]
</tbody>
</table>
{navigation}

Как видно добавился тег:
 

[list]...[/list]

Внутри тега (list) находится именно тот самый шаблон короткой новости, все остальное непосредственная обертка. Так же обратите внимание на тег навигации. Его можно вручную разместить где угодно или придать ему индивидуальный стиль. Если тег не указан, по умолчанию он будет выведен снизу.

Установка Расширение функционала шаблонизатора (

  • ...
if( preg_match( "#\\[list\\](.+?)\\[/list\\]#is", $tpl->copy_template, $list_tpl ) ){
        $global_tpl = $tpl->template;
        $tpl->template = $tpl->copy_template = $list_tpl[1];
    }else $global_tpl = '';

Найти строку:
 

    switch ( $config['news_navigation'] ) {

ПЕРЕД ней вставить:

      if( !$global_tpl )

В самом низу найти код:
 

}
?>

ПЕРЕД ним вставить:
 

if( $global_tpl AND $news_found ){
        $tpl->result['content'] = str_replace( $list_tpl[0], $tpl->result['content'], $global_tpl );
        if (stripos ( $tpl->result['content'], "[category=" ) !== false) $tpl->result['content'] = preg_replace_callback ( "#\\[(category)=(.+?)\\](.*?)\\[/category\\]#is", "check_category", $tpl->result['content'] );
        if (stripos ( $tpl->result['content'], "[not-category=" ) !== false) $tpl->result['content'] = preg_replace_callback ( "#\\[(not-category)=(.+?)\\](.*?)\\[/not-category\\]#is", "check_category", $tpl->result['content'] );
        if(stripos($global_tpl,"{navigation}")!==false) $tpl->result['content'] = str_replace( "{navigation}", $tpl->result['navi'], $tpl->result['content'] );
        else $tpl->result['content'] .= $tpl->result['navi'];
    }
Цитата

Вот и все.
Если в шаблоне короткой новости не используется тег

  • , то движок работает в стандартном режиме

1.JPG

) для списка коротких новостей:
Открыть файл engine/modules/show.short.php
Найти строку (это кусок строки, для простоты):
if( strpos( $tpl->copy_template, "[xfvalue_"

ПЕРЕД ней вставить:
 

Поделиться сообщением


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

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

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

Guest
Ответить в тему...

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

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

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

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

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


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

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