PomoRde.NET

Официальный сайт

Хаки DataLife Engine

Как разместить текст описания на страницах доп. полей в DLE

04 сентябрь, 2014 0
С тех пор как возникла возможность в DLE сделать из доп полей отличную перелинковку, в особенности для киносайтов, я все время пытался впихнуть туда текст. Кто не знает что за ссылки вот пример:
Как разместить текст описания на страницах доп. полей в DLE

В общем когда ты создаешь дополнительные поля и разрешает сделать это доп поле перекрестной гиперссылкой.
Как разместить текст описания на страницах доп. полей в DLE

То ты получаешь отменную функцию для перелинковки. Удобно пользователям, найти фильмы по годам, по актера или по жанру. В тоже время поисковики блуждают по сайту и радуются.

Эта функция добавляет много и много страниц.

Пример: http://site.org/xfsearch/2005/

И некоторые из них было бы не плохо продвигать. Для правильного продвижения, нужно разумеется красивый человеческий текст. Но как его впихнуть? Да я сейчас расскажу.

Не буду о простом долго писать.

1. Открываем файл "templates.class.php " находится он по адресу "/engine/classes"

Находим в нем:

$this->copy_template = $this->template;

$this->template_parse_time += $this->get_real_time() - $time_before;

[b]ВЫШЕ этого вставляем:[/b]

if( strpos( $this->template, "{request=" ) !== false or strpos( $this->template, "[request=" ) !== false ) {
preg_match_all("#[\{\[]request=['"](.+?)['"]#is",$this->template,$matchs,PREG_PATTERN_ORDER);
$matchs = ((isset($matchs[1]) and is_array($matchs[1]))?$matchs[1]:array());
$matchs = array_unique($matchs);
foreach($matchs as $match){
$vmatch = explode('=',$match);
$amatch = explode('->',$vmatch[0]);
$value = $_REQUEST;
foreach($amatch as $imatch)
$value = (($value and isset($value[$imatch]))?$value[$imatch]:false);

if((isset($vmatch[1]) and (is_array($value) and in_array($vmatch[1],$value) or $vmatch[1]==$value)) or (!isset($vmatch[1]) and $value)){
$this->template = preg_replace ( "#\{request=['"]{$vmatch[0]}['"]\}#is", (is_array($value)?'array':$value), $this->template );
$this->template = preg_replace ( "#\[request=['"]{$vmatch[0]}['"]\](.+?)\[/request\]#is", '\1', $this->template );
$this->template = preg_replace ( "#\[request=['"]{$vmatch[0]}={$vmatch[1]}['"]\](.+?)\[/request\]#is", '\1', $this->template );
} else {
$this->template = preg_replace ( "#\{request=['"]{$vmatch[0]}['"]\}#is", '', $this->template );
$this->template = preg_replace ( "#\[request=['"]{$vmatch[0]}['"]\](.+?)\[/request\]#is", '', $this->template );
$this->template = preg_replace ( "#\[request=['"]{$vmatch[0]}={$vmatch[1]}['"]\](.+?)\[/request\]#is", '', $this->template );
}
}
}
if( strpos( $this->template, "{request}" ) !== false) {
var_dump($_REQUEST);
$this->template = str_replace('{request}', '', $this->template );
}


Сохраняем сайт и заливаем обратно на сервер с заменой.

2. Теперь открываем файл шаблона main.tpl

В месте где у вас должен быть текст, нужно вставить:

[aviable=xfsearch]
[request="xf=2014"]
Тут текст
[/request]
[aviable]


Если вы хотите что бы текст был только на первой странице и не отображался на page страницах, то вам нужно вставить такой код:

[aviable=xfsearch]
[page-count=1][request="xf=2014"]
Тут текст
[/request][/page-count]
[aviable]


В общем все как и обещал легко. Но для оптимизации это незабываемое впечатление.
Прокомментировать
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Введите код с картинки:*
Кликните на изображение чтобы обновить код, если он неразборчив