Простые заголовки (метатеги) для DLE

Простые заголовки (метатеги)

Простые заголовки (метатеги)

Приветствую всех и с радостью спешу поделиться с вами простым, но невероятно удобным и полезным инструментом.
Ко мне часто обращались с просьбой сделать заголовок страницы, чтобы он был по шаблону: "Смотреть {title} онлайн", "Скачать торрент {title}" и т.д.
Часто еще нужно было чтобы для разных категорий формировался разный заголовок.
Понятное дело сам алгоритм прост и легко делается на PHP. Но ведь не все знакомы с PHP и смогут правильно и в нужное место прописать код.
Вот данный хак позволяет легко настроить любой заголовок по своему шаблону.
По умолчанию, если у новости не указан индивидуальный заголовок, то он будет сформирован по единому шаблону:
{title} » %Заголовок сайта%

где title - простой заголовок новости.
А что делать если хочется туда же вставить значение доп.поля. Или для разных категорий (фильмы, сериалы, ...) добавить разные шаблоны.
Вот для решения этой задачи я и написал этот хак (честно говоря случайно как-то вышло...)
С помощью хака можно менять title, description и keywords.

Вот простой пример того, что можно сделать, просто в шаблоне fullstory.tpl в самый верх вставить:
[title]
	{title}
	[if xfvalue_original] / [xfvalue_original][/if]
	[if xfvalue_year] ([xfvalue_year])[/if]
	- смотреть онлайн в хорошем качестве
[/title]
[description]
	[if short_story]
		{short-story limit="150"}
	[else]
		Смотреть 
		[catlist=2]фильм[/catlist]
		[catlist=3]сериал[/catlist]
		[catlist=4,8,9]мультфильм[/catlist]
		{title}
		[if1 xfvalue_original] / [xfvalue_original][/if1]
		[if1 xfvalue_year] [xfvalue_year] года[/if1]
		бесплатно, онлайн в хорошем качестве
	[/if]
[/description]
[if !keywords]
	[keywords]смотреть, онлайн, бесплатно, фильм[/keywords]
[/if]

Все двойные пробелы и табы будет заменены на один пробел.
Примечание: В данном примере ключевые слова заполняются только в том случае, если не заполнены ключи в самой новости.

Пример можно посмотреть на демо сайте

В данном примере использован хак Шаблонизатор условий Tpl-If v.2.0. Но можно использовать и xfgiven_ если их функционала будет достаточно.

Установка:


Открыть файл engine/modules/show.full.php
Найти строку:
		$tpl->compile( 'content' );

После нее вставить:
////////////////////////////////////////////////////////////////////////////////////////////////
		$simple_meta = array('title','description','keywords');
		foreach ($simple_meta as $key) {
			if (preg_match("#\[({$key})\](.*?)\[/\\1\]\s*#is", $tpl->result['content'], $meta_found)) {
				if ($key == 'title' && $metatags['header_title']) {
				} else {
					$key = str_replace('title', 'header_title', $key);
					$meta_found[2] = preg_replace("#\s{2,}#s", " ", $meta_found[2]);
					$metatags[$key] = trim(strip_tags($meta_found[2]));
				}
				$tpl->result['content'] = str_replace($meta_found[0], "", $tpl->result['content']);
			}
		}
////////////////////////////////////////////////////////////////////////////////////////////////

На этом все :)

Надеюсь хак окажется полезным и поможет вам в продвижении ваших сайтов.

С уважением,
Олег Александрович a.k.a. Sander
Комментарии: (32)
  1. foto
    Посетитель 10 ноября 2017 16:02 #
    Лучше всё таки хак для engine.php который позволяет полностью разобрать {headers} на составляющие с богатым набором переменных и условий.
    -1
    1. foto
      Администратор 11 ноября 2017 15:39 #
      Чтобы составить простейший шаблон для заголовка в engine.php необходимы как минимум поверхностные знания в PHP.
      Да и то, поверхностные нужны только чтобы человек смог сам внести изменения в написанный код. А вот чтобы самостоятельно составить формулу/условия нужны уже немножко большие знания.

      Данный хак же не требует вообще никаких знаний, кроме знания тегов шаблона DLE, по которым есть наглядный мануал.
      +1
      1. foto
        Посетитель 15 ноября 2017 15:25 #
        Данный хак ограничен, и всё так же требует хоть какого то понимания того что человек делает.

        Я же говорил о разбиение мета тегов на отдельные теги и условия (DLE-ешные шаблонные), и благодаря aviable, можно строить для разных разделов совсем разные заголовки.

        Так понятнее объяснил?

        Целсофт конечно же этого не сделает из коробке, т.к. большинство нубов то с логикой aviable не всегда разобраться могут.
        0
  2. foto
    VIP 22 ноября 2017 20:18 #
    Якщо заголовок з 6 слів - назва сайту в тітл не додається!

    Цитата: RU
    Если длина заголовка из 6 или более слов, то имя сайта не добавляется в title
    0
    1. foto
      VIP 23 января 2018 23:08 #
      Извини, но не не могу понять... Что ты написал?
      0
      1. foto
        Администратор 23 января 2018 23:14 #
        Добавил перевод на русском
        0
  3. foto
    Гость 25 января 2018 04:46 #
    На ДЛЕ 12.1 дескрипшен берется из хака, даже если у новости указан свой при ее добавлении.
    0
    1. foto
      Администратор 25 января 2018 20:06 #
      Для этого нужно использовать хак TplIf.
      [if !descr]
          [description] ... [/description]
      [/if]
      0
  4. foto
    Гость 25 января 2018 22:24 #
    То есть без платного хака этот никак не использовать? Просто фраза "можно использовать и xfgiven_ если их функционала будет достаточно" как бы намекала, что можно работать и со стандартным catlist.
    0
    1. foto
      Администратор 25 января 2018 22:28 #
      Совершенно верно, catlist так же работает.
      Но стандартными средствами шаблона никак не проверить - заполнен метатег description или нет.
      0
  5. foto
    Клиент 29 января 2018 17:27 #
    не работает
    0
    1. foto
      Клиент 29 января 2018 17:32 #
      работает, если не заполнен тег title
      как сделать чтобы производилась замена вручную прописанного title или добавление заголовка к уже существующему
      0
      1. foto
        Администратор 29 января 2018 17:35 #
        Вручную заполненный заголовок имеет наивысший приоритет.
        Если вам не нужен заполненный заголовок вручную - просто очистите это поле.
        0
        1. foto
          Клиент 1 февраля 2018 13:18 #
          Привет, https://sandev.pro/web/123-multivybor-v-dop-polyah-xfields.html открой сюда доступ пожалуйста всем
          0
        2. foto
          Клиент 2 марта 2018 14:12 #
          А если все-таки нужно оставить заполненный заголовок, но установить ему приоритет ниже, т.е. что бы заголовок формируемый данным хаком имел приоритет выше?
          0
          1. foto
            Администратор 2 марта 2018 16:10 #
            Заменить строку
            if ($key == 'title' && $metatags['header_title']) {

            на
            if ($key == 'none') {
            +1
  6. foto
    Гость 26 марта 2018 20:54 #
    У меня в данном файле 2 строки. После какой вставлять ДЛЕ 12.1
    0
  7. foto
    Клиент 29 марта 2018 01:56 #
    Здравствуйте! Подскажите, а можно ли таким образом сделать чтобы заполнялись og:title и og:description? Спасибо!
    0
    1. foto
      Клиент 30 марта 2018 00:07 #
      Сделал так:
      ////////////////////////////////////////////////////////////////////////////////////////////////
      		$simple_meta = array('title','description','keywords');
      		foreach ($simple_meta as $key) {
      			if (preg_match("#\[({$key})\](.*?)\[/\\1\]\s*#is", $tpl->result['content'], $meta_found)) {
      				if ($key == 'title' && $metatags['header_title']) {
      				} else {
      					if ($key !== 'keywords') $social_tags[$key] = trim(strip_tags($meta_found[2]));
      					$key = str_replace('title', 'header_title', $key);
      					$meta_found[2] = preg_replace("#\s{2,}#s", " ", $meta_found[2]);
      					$metatags[$key] = trim(strip_tags($meta_found[2]));
      				}
      				$tpl->result['content'] = str_replace($meta_found[0], "", $tpl->result['content']);
      			}
      		}
      ////////////////////////////////////////////////////////////////////////////////////////////////


      Не плохой вариант?
      0
      1. foto
        Клиент 30 марта 2018 00:09 #
        Стоп.. фигню сморозил
        0
      2. foto
        Клиент 30 марта 2018 00:17 #
        					$meta_found[2] = preg_replace("#\s{2,}#s", " ", $meta_found[2]);
        					if ($key !== 'keywords') $social_tags[$key] = trim(strip_tags($meta_found[2]));
        					$key = str_replace('title', 'header_title', $key);					
        					$metatags[$key] = trim(strip_tags($meta_found[2]));	
        +1
        1. foto
          Администратор 30 марта 2018 12:42 #
          Не совсем.
          После строки
          $tpl->result['content'] = str_replace($meta_found[0], "", $tpl->result['content']);

          Вставить:
          if ($key != 'keywords') $social_tags[$key] = $metatags[$key];
          +2
          1. foto
            Клиент 30 марта 2018 23:53 #
            Благодарю!
            0
  8. foto
    Гость 11 мая 2018 23:21 #
    НЕ подскажыте как составить условия если в новости нету картинки. Брали именно ту картинку которую я укажу.
    0
  9. foto
    Гость 17 июня 2018 16:48 #
    Подскажите, а как вывести title (мета тег TITLE) категории, к которой относится новость? и что будет если она сразу в 2х категориях? Выберется тот, который у основной? Очень нужно:)
    0
    1. foto
      Администратор 17 июня 2018 17:31 #
      Тут перечислены все теги, которые можно использовать в шаблоне полной новости fullstory.tpl

      Выберется тот, который у основной?

      Да.
      0
      1. foto
        Гость 17 июня 2018 18:09 #
        Ну вот, там стандартно нет поддержки вывода cat-title, только имени категории, а это не совсем то.
        0
  10. foto
    Посетитель 5 августа 2018 12:38 #
    Супер спасибо, давно искал подобное решение.
    0
  11. foto
    Гость 26 ноября 2018 23:21 #
    prntscr.com/lnbtpu
    Как пофиксить ?
    0
    1. foto
      Администратор 27 ноября 2018 00:38 #
      Для использования тегов [if] ... [/if] у вас должен быть установлен соответствующий модуль который их обрабатывает.
      0
  12. foto
    Гость 27 ноября 2018 00:21 #
    а как это сделать для категорий ?
    0
    1. foto
      Администратор 27 ноября 2018 00:39 #
      Никак. Это только для полной новости.
      Для категорий необходимо использовать в корне иной подход.
      0
Добавить комментарий
  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2018.
При копировании, ссылка на источник обязательна.