Простое и удобное управление метатегами и тегами разметки OpenGraph на странице полной новости.
Данный модуль является наследником и продолжением модуля
Простые заголовкиВ этой версии сделаны небольшие изменения и дополнения в функционале, однако основная суть осталась прежней.
С помощью специальной разметки, можно прямо в файле шаблона
fullstory.tpl прописать желаемый алгоритм формирования метатегов.
Принцип модуля построен на том, что сначала выполняется полное формирование шаблона страницы, выполняется обработка всех тегов, всех условий [if ...] и [hide]. И только потом подключается модуль.
После установки модуля, достаточно в любом месте (рекомендую в начале) шаблона
fullstory.tpl прописать код:
[metatags]
<title>Заголовок страницы</title>
<description>Описание страницы</description>
<keywords>ключевые, слова</keywords>
<robots>noindex,follow</robots>
<og:title>Заголовок для OpenGraph разметки</og:title>
<og:image>//example.com/image.jpg</og:image>
<og:any_tag>Содержимое тега any_tag</og:any_tag>
[/metatags]
Все двойные пробелы и табы будет заменены на один пробел. Все параметры не являются обязательными, если их не указать, то значение будет сформировано стандартно средствами движка.
Полагаю в целом принцип понятен, но отдельно стоит отметить логику работы тегов
title и
robots.
title - если в новости вручную задан свой метатег заголовка, то значение этого тега игнорируется
robots - если в новости не отмечена галочка запрета индексации, то будет обработано значение этого параметра.
Но полноценная работа этого тега поддерживается только начиная с DLE 13.3.
В более ранних версиях можно только полностью заблокировать доступ ботам используя любое из значений:
false, no, off, 0Примечание: Если у новости прописан метатег заголовка, то заголовок сформированный модулем будет проигнорирован.
[metatags]
<title>
{title}
[xfgiven_title_en] / [xfvalue_title_en][/xfgiven_title_en]
[xfgiven_year]([xfvalue_year])[/xfgiven_year]
[xfgiven_season][xfvalue_season] сезон [xfgiven_episode][xfvalue_episode] серия[/xfgiven_episode][/xfgiven_season]
- смотреть трейлер онлайн на TestFilm
</title>
<description>
Смотреть {title}
[xfgiven_title_en] / [xfvalue_title_en][/xfgiven_title_en]
[xfgiven_year] [xfvalue_year] года[/xfgiven_year]
бесплатно, онлайн в хорошем качестве
</description>
<keywords>смотреть, онлайн, бесплатно, фильм, сериал, трейлер</keywords>
<og:title>
{title}
[xfgiven_title_en] / [xfvalue_title_en][/xfgiven_title_en]
[xfgiven_year]([xfvalue_year])[/xfgiven_year]
</og:title>
[/metatags]
Создать файл
engine/mods/fullstory.metatags.php с кодом:
<?php
/**
* Управление метатегами и разметкой OpenGraph на странице полной новости
* @author Sandev <oleg.sandev@gmail.com>
* @link https://sandev.pro/
*/
defined('DATALIFEENGINE') || die('Nope');
if (!$news_found) return;
if (preg_match('#\\[(metatags)\\](.+?)\\[/\\1\\]#is', $tpl->result['content'], $simple_meta)) {
preg_match_all('#<(.+?)>(.*?)</\\1>#is', $simple_meta[2], $simple_tags);
foreach ($simple_tags[1] as $k => $v) {
$val = preg_replace('#\s+#is', ' ', $simple_tags[2][$k]);
$val = strip_tags($val);
$val = trim($val);
if (stripos($v, 'og:') === 0) {
$v = substr($v, 3);
$social_tags[$v] = $val;
} elseif ($v != 'title' || !$metatags['header_title']) {
$v == 'title' && $v = 'header_title';
$metatags[$v] = $val;
if ($v == 'robots' && in_array($val, ['0','no','off','false'])) {
$disable_index = true;
unset($metatags[$v]);
}
}
}
$tpl->result['content'] = str_replace($simple_meta[0], '', $tpl->result['content']);
$tpl->result['content'] = trim($tpl->result['content']);
}
Открыть файл
engine/modules/show.full.phpНайти строку:
if (stripos ( $tpl->result['content'], "[hide" ) !== false ) {
Выше нее вставить:
////////////////////////////////////////////////////////////////////////////////////////////////
include_once ENGINE_DIR . '/mods/fullstory.metatags.php';
////////////////////////////////////////////////////////////////////////////////////////////////