prowebber.ru - Тут есть все для настоящих вебмастеров

Чтение RSS Мы в твиттере
«    Май 2017    »
ПнВтСрЧтПтСбВс
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 

Всё для вебмастера » Всё для DataLife Engine » DLE хаки » Расширение функционала шаблонизатора для списка коротких новостей

Расширение функционала шаблонизатора для списка коротких новостей


Данный материал предоставлен сайтом ProWebber.ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
У нас вы можете скачать бесплатно Расширение функционала шаблонизатора для списка коротких новостей.


Расширение функционала шаблонизатора для списка коротких новостей

Небольшое дополнение к шаблонизатору для вывода списка коротких новостей.

Суть проблемы:
Столкнулся я тут с задачей. Надо было вывести новости на сайте для разных категорий - разные шаблон.
Разумеется в настройках категорий есть параметр "Шаблон короткой новости", но все бы ничего, но что делать, если данные надо выводить в виде списка, плиткой и таблицей. Можно конечно в main.tpl использовать конструкции [category...] и [aviable...] но когда категорий много, то получается ооочень громоздко и неудобно. Особенно когда категорий на сайте более 100 и периодически нужно добавлять новые категории.
Так же не забываем о системной обертке, которая добавляется автоматически перед выводом:
<div id="dle-content">{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]

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


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

ПЕРЕД ней вставить:
////////////////////////////////////////////////////////////////////////////////////////////////
    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'];
    }
////////////////////////////////////////////////////////////////////////////////////////////////


Вот и все.
Если в шаблоне короткой новости не используется тег [list], то движок работает в стандартном режиме.

Версия DLE: 10.0 и старше

Пример: color.sandev.pro

С уважением,
Олег Александрович a.k.a. Sander


+5
Просмотры: 848 VIP ProWebber | Комментарии (0)
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.

Max-energy.top - Заработок на электросчетчиках;)

Skripters.info - все для вебмастера. Только эксклюзивный контент.

Создание шаблонов DLE, быстро и недорого! 3wave.com.ua

Бро лей на лучшую партнёрку

Почти бесплатный VDS хостинг!

Поддержи сайт
Скрипты, cms, шаблоны, статьи по раскрутке

Опросы

Как часто вы бываете на сайте?

Захожу 1-2 раза в день
1-2 часа в сутки
Более 2 часов
Почти целый день тут smile

Архив новостей
Май 2017 (1)
Апрель 2017 (8)
Март 2017 (9)
Февраль 2017 (5)
Январь 2017 (9)
Декабрь 2016 (16)

Последние комментарии:

Искать людей

Ваши переписки