Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как сделать разные meta теги для материалов?

Как сделать разные meta теги для материалов?


     21.07.2015    Все вопросы » Общие вопросы    1302

вопрос
Как сделать разные meta теги для материалов, в зависимости от того в какую категорию входит материал, например если материал входит в категорию "Мультфильмы" то чтоб в meta title выводилось: мультфильм "Название" в хорошем качестве, но если материал не входит в указанную категорию то вывести: фильм "Название" в хорошем качестве

Пробовал сделать в main с помощью следующего кода:

[not-aviable=showfull]{metatags}[/not-aviable]
[aviable=showfull]
<title>{title} [xfvalue] смотреть [not-catlist=2032,2006]фильм [/not-catlist][catlist=2006]мультфильм [/catlist] онлайн в хорошем качества HD 720p</title>
[/aviable]

Но не получилось так как эти теги не работают в main.
Подскажите как можно это реализовать?

Ответил: werty1001


Я так понимаю у вас уже отделены meta теги от js. Тогда вот инструкция как действовать дальше:

1. Открываем файл: /engine/modules/main.php
Найти:
$tpl->set ( '{metatags}', $metatags );

Вставить после:
$tpl->set ( '{maintitle}', $main_title );
$tpl->set ( '{maindescription}', $main_description );

Найти:
$tpl->load_template ( 'main.tpl' );

Вставить после:
if( strpos( $tpl->copy_template, "[xfvalue_" ) !== false AND !empty($xfieldsdata) AND !empty($xfields)) {
    foreach ( $xfields as $value ) {
        $preg_safe_name = preg_quote( $value[0], "'" );
        if( empty( $xfieldsdata[$value[0]] ) ) $tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
        else $tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "\\1", $tpl->copy_template );
        $tpl->copy_template = str_replace( "[xfvalue_{$preg_safe_name}]", stripslashes( $xfieldsdata[$value[0]] ), $tpl->copy_template );
    }
}else $tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );


2. Открываем файл: /engine/engine.php
Найти:
$metatags =

Вставить перед:
$main_title = $metatags['title'];
$main_description = $metatags['description'];


Теперь в main.tpl работают теги {maintitle} и {maindescription}, которые выводят title и description, а также обрабатываются дополнительные поля.

[not-aviable=showfull]{metatags}[/not-aviable]
[aviable=showfull]
<title>{maintitle} [xfvalue] смотреть [not-category=2032,2006]фильм [/not-category][category=2006]мультфильм [/category] онлайн в хорошем качества HD 720p</title>
<meta name="description" content="{maindescription}">
[/aviable]

11 комментариев

Drol
Юзер

Drol - 21 июля 2015 20:44 -

Вот мне отвечали: Тут
Это в engine.php, перед $metatags = <<<HTML
if ($subaction == 'showfull') {
    $catID = array(2006);
    if (in_array($category_id, $catID)) {
        $metatags['title'] = 'Смотреть ' . str_replace(' » '.$config['home_title'], ' ', $metatags['title']) . ' онлайн в хорошем качества HD 720p';
    } else {
        $metatags['title'] = $config['home_title'];
    }
}

Что-то такого)

edik8305
Юзер

edik8305 - 21 июля 2015 22:12 -

WERTY1001, Спасибо за помощь! Но я столкнулся с проблемой на первом шаге, в указанной Вами директории нет файла main.php, может Вы не правильно указали директорию!?

werty1001
Юзер

werty1001 - 22 июля 2015 16:46 -

Значит у вас старая версия дле и вам нужно делать эти манипуляции в файле index.php в корне сайта.

edik8305
Юзер

edik8305 - 22 июля 2015 17:50 -

Но тег catlist не работает, а он мне необходим для реализации задуманного!

werty1001
Юзер

werty1001 - 22 июля 2015 17:52 -

Работает его аналог, смотрите внимательно ответ.

edik8305
Юзер

edik8305 - 26 июля 2015 18:57 -

Из официальной документации dle:
[category=1,2,3] текст [/category]

будет выводить текст заключенный в теги, если посетитель просматривает категории у которых ID равен 1 или 2 или 3.

Внимание вы можете задать также тег [not-category=1,2,3] текст [/not-category] который полностью противоположен тегу category и выводить текст везде кроме перечисленных категорий.

Это мне не нужно, мне нужно чтоб работал следующий тег:
[catlist=1,2....] текст [/catlist]
Выводит текст в теге, если новость принадлежит указанным категориям
[not-catlist=1,2....] текст [/not-catlist]
Выводит текст в теге, если новость не принадлежит указанным категориям.

werty1001
Юзер

werty1001 - 26 июля 2015 19:21 -

Зачем?

edik8305
Юзер

edik8305 - 26 июля 2015 19:24 -

Чтоб сделать разные ключевые слова в meta тегах в зависимости от того в какую категорию входит материал!

werty1001
Юзер

werty1001 - 26 июля 2015 19:33 -

Ясно, а вариант из ответа у вас не работает?

edik8305
Юзер

edik8305 - 27 июля 2015 01:31 -

Нет, не работает!

werty1001
Юзер

werty1001 - 27 июля 2015 01:34 -

А какая структура категорий у вас на сайте? На DLE 10.5 точно работает, проверено.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх