• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Хак Генерация meta-тегов полной новости через fullstory.tpl

killoff

CD тихо, и не DVD меня ;)
Команда форума
Модератор
Регистрация
13 Май 2008
Сообщения
2.619
Реакции
1.123
  • Автор темы
  • Модер.
  • #1
Частая проблема возникаем у многих что они хотят сделать на разные категории разные кейворды и разные дескрипшены, чтобы они генерировались автоматически да ещё и с использованием доп полей. Раньше я всегда делал всё правкой в engine.php с указанием списка айди категорий, но только сейчас понял что в этом нам может помочь модуль metagen.

Итак.

В engine.php меняем
PHP:
$metatags = <<<HTML
<meta http-equiv="Content-Type" content="text/html; charset={$config['charset']}" />
<title>{$metatags['title']}</title>
<meta name="description" content="{$metatags['description']}" />
<meta name="keywords" content="{$metatags['keywords']}" />{$disable_index}
<meta name="generator" content="DataLife Engine (http://dle-news.ru)" />
{$s_meta}<link rel="search" type="application/opensearchdescription+xml" href="{$config['http_home_url']}engine/opensearch.php" title="{$config['home_title']}" />
HTML;
на код
PHP:
if ($subaction != "showfull") {

    $meta_no_swowfull .= <<<HTML
<meta name="description" content="{$metatags['description']}" />
<meta name="keywords" content="{$metatags['keywords']}" />
HTML;

}

$metatags = <<<HTML
<meta http-equiv="Content-Type" content="text/html; charset={$config['charset']}" />
<title>{$metatags['title']}</title>
{$meta_no_swowfull}{$disable_index}
<meta name="generator" content="DataLife Engine (http://dle-news.ru)" />
{$s_meta}<link rel="search" type="application/opensearchdescription+xml" href="{$config['http_home_url']}engine/opensearch.php" title="{$config['home_title']}" />
HTML;
Тут мы сделали запрет вывода мета кейворд/дескрипшн.

Далее папку в engine кидаем файл metagen.php (качаем с атача или с сайта автора Для просмотра ссылки Войди или Зарегистрируйся)Для просмотра ссылки Войди или Зарегистрируйся

в main.tpl после {headers} Добавляем код:
Код:
{include file='engine/metagen.php?a=get&r=meta&t=<meta name="{p}" content="{v}" />'}
в fullstory.tpl в самое начало формируем наше описание и ключевики как душе угодно:
Код:
{include file="engine/metagen.php?a=add&r=meta&p=keywords&v=наши ключики через запятую с использованием доп полей или без них"}
{include file="engine/metagen.php?a=add&r=meta&p=description&v=наше мета описание описание "}

Аналогично можно генерировать и мета титл:
В полную новость - {include file="engine/metagen.php?a=add&r=metatitle&p=description&v=наш титл через метаген"}
В main.tpl - {include file='engine/metagen.php?a=get&r=metatitle&t=<title>{v}</title>'}
в engine.php перенести в коде выше
Код:
<title>{$metatags['title']}</title>
перед
Код:
<meta name="description" content="{$metatags['description']}" />

Таким образом вся настройка у нас идёт в файле шаблона полной новости fullstory.tpl c минимальными правками движка и сводит к минимуму правки двига при следующем обновлении до актуальной версии ДЛЕ.

Аналогично можно настроить и метаданные для xfserach. Для этого в main.php перед
PHP:
if ( $dle_module == "showfull" AND $news_found ) {
добавить
PHP:
if ( $dle_module == "xfsearch" AND $news_found ) {$tpl->set ( '{xfsearch}', $xf );}
в шаблоне main.tpl использовать строку подключения со значением доп поля просматриваемой страницы через {xfsearch}.

Таким образом можно будет немного уникализировать мата данные для доп полей с минимальной правкой шаблона.
 

Вложения

  • metagen.zip
    600 байт · Просмотры: 8
  • Автор темы
  • Модер.
  • #2
Ещё один вариант от Сандера:

Вот простой пример того, что можно сделать, просто в шаблоне 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]

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

Установка:

Открыть файл 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') $key = 'header_title';
               $meta_found[2] = preg_replace("#\s{2,}#s", " ", $meta_found[2]);
               $metatags[$key] = trim($meta_found[2]);
               $tpl->result['content'] = str_replace($meta_found[0], "", $tpl->result['content']);
           }
       }
////////////////////////////////////////////////////////////////////////////////////////////////

На этом все :)

Автор: Олег Александрович a.k.a. Sander
Страница хака: Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:
Назад
Сверху