Артём Мáлков

Использование тегов [catlist] и [not-catlist] в похожих материалах (relatednews.tpl) в DLE

25 июл3 комм

Используя многофункциональные CMS для создания своего сайта, не всегда удается воспользоваться всеми их возможностями. Так, например, тег [catlist] при следующем его использовании:

[catlist=1,2,5]

	Hello, world!

[/catlist]

в CMS DataLife Engine позволяет выводить определенный текст (или код) в тех материалах, которые относятся к указанным в нем категориям и наоборот:

[not-catlist=1,2,5]

	Hello, world!

[/not-catlist]

отображение содержимого тогда, когда категория материала не соответствует указанным.

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

Чтобы решить эту проблему и добавить поддержку тегов [catlist] и [not-catlist] в похожих записях, сделайте следующее.

1. Подключитесь к вашему сайту по FTP.

2. Откройте файл show.full.php, который находится в папке /engine/modules/.

3. В нем найдите второе совпадение кода:

 $tpl2->compile( 'content' );

и выше него вставьте:

$category_related_news = $related["category"];

if(!function_exists("check_category_related_news")) {

	function check_category_related_news($matches = array()) {

		global $category_related_news;

		$block = $matches[3];
		$category = $category_related_news;
		$temp_array = array();

		$matches[2] = str_replace(" ", "", $matches[2]);
		$matches[2] = explode(",", $matches[2]);

		foreach($matches[2] as $value) {

			$temp_array[] = intval($value);

		}

		$temp_array = implode(",", $temp_array);

		if($matches[1] == "catlist") {

			$action = true;

		} else {

			$action = false;

		}
	
		$cats = explode(",", $temp_array);
		$category = explode(",", $category);
		$found = false;
	
		foreach($category as $element) {
	
			if($action) {
		
				if(in_array($element, $cats)) {
		
					return $block;
		
				}
	
			} else {
		
				if(in_array($element, $cats)) {
				
					$found = true;
		
				}
	
			}
	
		}

		if(!$action && !$found) {	

			return $block;
	
		}

		return "";
	
	}

}

if(strpos($tpl2->copy_template, "[catlist=") !== false) {
						
	$tpl2->copy_template = preg_replace_callback("#\\[(catlist)=(.+?)\\](.*?)\\[/catlist\\]#is", "check_category_related_news", $tpl2->copy_template);
					
}

if(strpos($tpl2->copy_template, "[not-catlist=") !== false) {
						
	$tpl2->copy_template = preg_replace_callback("#\\[(not-catlist)=(.+?)\\](.*?)\\[/not-catlist\\]#is", "check_category_related_news", $tpl2->copy_template);
					
}

Сохраните изменения и отправляете файл обратно на сайт.

4. Чистите кэш сайта. Установка закончена.

Теперь в шаблоне похожих материалов (relatednews.tpl) вам будет доступно полноценное использование тегов [catlist] и [not-catlist].

Рекомендуем к просмотру
Вывод похожих материалов в записи без плагина на WordPress
Хаки
Что делать, если DLE вырезает некоторые HTML-теги из новости?
Хаки
Поиск по определенным категориям в DLE
Хаки
3
комментария
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 1
    1
      •  Пользователь
    9 янв в 18:47

    Артём!! напишите ПЛАТНО хак Использование тегов [catlist] и [not-catlist] в в attachment.tpl для DLE 14.2. Я оплачу! :) озвучьте стоимость!!! :)

    • 1
    1067
      •  Команда Pandoge
    24 авг в 21:01

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

    if(strpos($tpl2->copy_template, "[catlist=") !== false) {
    						
    	$tpl2->copy_template = preg_replace_callback("#\\[(catlist)=(.+?)\\](.*?)\\[/catlist\\]#is", "check_category", $tpl2->copy_template);
    					
    }
                                
    if(strpos($tpl2->copy_template, "[not-catlist=") !== false) {
    						
    	$tpl2->copy_template = preg_replace_callback("#\\[(not-catlist)=(.+?)\\](.*?)\\[/not-catlist\\]#is", "check_category", $tpl2->copy_template);
    					
    }
      • 0
      1
        •  Пользователь
      6 янв в 17:38

      Артём Мáлков, Огромное спасибо!

      Как подобное сотворить в attachment.tpl?

Подняться наверх
«Pandoge» - помощник вебмастера