Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » {full-story} в шаблоне короткой новости

{full-story} в шаблоне короткой новости


     12.01.2013    Все вопросы » Общие вопросы    10324

вопрос
Добрый день!

Гуру DLЕ, возможен ли сабж? Захотел выводить полные новости в одной из категорий и был уверен, что {full-story} работает в шаблоне короткой новости, ан нет.

Вариант № 1 — засунуть весь текст в короткую новость ({short-story}, напротив, выводится в шаблоне полной новости), увы, не подходит, так как текст у меню бьется картинкой.

Вариант № 2 —Block.Pro, но насколько это будет кашерно в плане нагрузки, ведь он будет вызываться 5-10 раз на странице?

Заранее большое спасибо за помощь!

Ответил: vitnet


Итак, начнем.

1.0 Открыть файл engine/engine.php
Найти в SQL запросе (примерно 13 шт.)
CHAR_LENGTH(p.full_story) as full_story, p.xfields,

Заменить на (привести в такой вид)
CHAR_LENGTH(p.full_story) as full_story, p.full_story, p.xfields,

2.0 Открыть файл engine/modules/show.short.php
Найти
        if( isset($view_template) AND $view_template == "rss" ) {
            
            $tpl->set( '{rsslink}', $full_link );

Добавить выше
        $row['full_story'] = stripslashes($row['full_story']);
        // out this tags "{full-story limit=x}"
        if( preg_match( "#\\{full-story limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {
            $count = intval($matches[1]);

            $row['full-story'] = str_replace( "</p><p>", " ", $row['full_story'] );
            $row['full-story'] = strip_tags( $row['full-story'], "<br>" );
            $row['full-story'] = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "\n", " ", str_replace( "\r", "", $row['full-story'] ) ) ) ));
    
            if( $count AND dle_strlen( $row['full-story'], $config['charset'] ) > $count ) {
                $row['full-story'] = dle_substr( $row['full-story'], 0, $count, $config['charset'] );
                if( ($temp_dmax = dle_strrpos( $row['full-story'], ' ', $config['charset'] )) ) $row['full-story'] = dle_substr( $row['full-story'], 0, $temp_dmax, $config['charset'] );
            }
    
            $tpl->set( $matches[0], $row['full-story'] );
        } else {
            $tpl->set( '{full-story}', $row['full_story'] );
        }
        // out this tags "{full-story limit=x}"

3.0 В шаблоне shortstory.tpl использовать следующие теги:
{full-story}
{full-story limit="200"}

Очистить Кеш, Готово!

PS: писал с мобилы, сильно не пинать ;)

7 комментариев

DomiTori
Юзер

DomiTori - 14 января 2013 06:59 -

Я не очень понял суть вопроса. За вывод краткой новости отвечает файл в вашем шаблоне shortstory.tpl. Вставте туда до/после/вместо {short-story} (как вам удобнее) тег {full-story}. При этом на главной и при навигации по категориям, будет выводится полная новость вместе/вместо краткой новости. Также можно вставить тег в main.tpl. Эффект будет тотже.

ZABor
Юзер

ZABor - 14 января 2013 20:32 -

{full-story} не работает в shortstory.tpl, равно, как оказалось, и в шаблонах Block.Pro. :-(

dj-avtosh
PHP-developer

dj-avtosh - 14 января 2013 07:35 -

Как то там $tpl->set('fullstory',$row['full_story']);

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

nowheremany
Эксперт

nowheremany - 14 января 2013 13:20 -

Там в запросе менять нужно тоже, целсофт от полной новости взял лишь 15 символов вроде

Благодарность принимаю тут Связь

Korobasow
Юзер

Korobasow - 15 августа 2013 21:10 -

Кто-нибудь решил проблему?
Мне то же нужно вывести тег {full-story} в шаблоне короткой новости!
помогите!?

wearnings
Юзер

wearnings - 27 ноября 2018 01:05 -

***Комментарий удален***

vitnet
PHP-developer

vitnet - 17 августа 2014 15:31 -

Там делов на 2 мин.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх