ScriptLife » DataLife Engine » Модули / Плагины DLE » Fullstory-Metatags модуль by Sander

Fullstory-Metatags модуль by Sander

19 окт 2022, 21:17
Добавил: ScriptLife
18
0
Данный материал предоставлен сайтом ScriptLife.ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
  • Описание
    • Версия DLE: 13.x - 14.x
    • Автор: 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';
////////////////////////////////////////////////////////////////////////////////////////////////
Ctrl
Enter
Заметили ошЫбку?
Выделите текст и нажмите Ctrl+Enter
Мы в

Комментарии

Минимальная длина комментария - 50 знаков. комментарии модерируются
  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги
Комментариев еще нет. Вы можете стать первым!

Политика конфиденциальности

Сайт использует идентификационные файлы cookies для хранения информации. «Cookies» представляют собой файлы, которые могут использоваться сайтом для идентификации посетителей... Больше информации