Меню сайта
Fullstory-Metatags модуль by Sander
Fullstory-Metatags предназначен для управлением метатегами и тегами разметки 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
Ручная установка
Создать файл 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( $allow_comments AND $news_found) {
Выше нее вставить:
////////////////////////////////////////////////////////////////////////////////////////////////
include_once ENGINE_DIR . '/mods/fullstory.metatags.php';
////////////////////////////////////////////////////////////////////////////////////////////////
Автор: Sander
Версия DLE: 13.x-14.x