• Автор:

    Ash Williams
  • Добавлено:

    янв 20, 2017
  • Комментариев:

    0
  • Просмотров:

    582

Хак Размещаем текст описания на страницах доп. полей

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


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

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

Пример: https://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;


ВЫШЕ этого вставляем:
 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 );
    }


Или скачайте в txt:
Внимание! У Вас нет прав для просмотра скрытого текста.


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

2. Теперь открываем файл шаблона main.tpl
В месте где у вас должен быть текст, нужно вставить:

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


Если вы хотите что бы текст был только на первой странице и не отображался на page страницах, то вам нужно вставить такой код:
[aviable=xfsearch]
 [page-count=1][request="xf=2014"]
Тут текст
 [/request][/page-count]
[aviable]
dle
Вернуться
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.