Использование тегов [catlist] и [not-catlist] в похожих материалах (relatednews.tpl) в DLE
Используя многофункциональные 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].