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

Представляем вам интересный хак дополнение к шаблонизатору для вывода списка коротких новостей для DLE 10.x , итак я столкнулся с задачей что нужно было вывести новости на сайте для разных категорий и для них разный шаблон, но разумеется в настройках категорий есть параметр "шаблон короткой новости", но все же что делать если данные надо выводить в виде списка, плиткой или таблицей также можете посмотреть наши хаки для dle. Можно естественно что в 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>

</tbody>
</table>
{navigation}



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

[list]...



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


Установка:


1. Открыть 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.x
  • Кодировка: utf-8, win-1251
  • Категория: Хаки
  • Автор: Sander
  • Источник:

собрано 3050.00 рублей Поддержать автора

Войдите на сайт


Все собранные средства будут переданы автору этой статьи - DEN
Сумма перевода от 10.00 рублей
00
357
0
1-08-2022, 14:42
Обсудить (0)
Похожие хаки
Комментарии
Минимальная длина комментария - 10 знаков, комментарии могут модерироваться!
Комментариев еще нет. Вы можете стать первым!
Помощь в публикации комментариев:
1.) Если вы хотите задать вопрос, тогда просто оставьте комментарий, не нужно вопрос добавлять в ответ.
2.) Если вы хотите ответить на комментарий, для этого есть кнопка "ответить" под нужным вам вопросом.
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Мы ценим вашу конфиденциальность
Мы используем файлы "cookie" на нашем веб-сайте, чтобы предоставить вам наиболее релевентный результат, помня ваши предпочтения и повторные посещения.
Нажимая "Принять" вы соглашаетесь на использование всех файлов "cookie".
Принять
Не принимаю
Показать цели
X

Платные услуги новостей