Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы Как сделать разные meta теги для материалов?

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


     21.07.2015    Общие вопросы    884

вопрос
Как сделать разные 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
7

64 | 16

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
100 | 1

edik8305 - 21 июля 2015 22:12 - Юзер

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

werty1001
18

56 | 30

werty1001 - 22 июля 2015 16:46 - Юзер

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

edik8305
100 | 1

edik8305 - 22 июля 2015 17:50 - Юзер

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

werty1001
18

56 | 30

werty1001 - 22 июля 2015 17:52 - Юзер

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

edik8305
100 | 1

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
18

56 | 30

werty1001 - 26 июля 2015 19:21 - Юзер

Зачем?

edik8305
100 | 1

edik8305 - 26 июля 2015 19:24 - Юзер

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

werty1001
18

56 | 30

werty1001 - 26 июля 2015 19:33 - Юзер

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

edik8305
100 | 1

edik8305 - 27 июля 2015 01:31 - Юзер

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

werty1001
18

56 | 30

werty1001 - 27 июля 2015 01:34 - Юзер

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

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

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