Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы {full-story} в шаблоне короткой новости

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


     12.01.2013    Общие вопросы    5670

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

Гуру 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: писал с мобилы, сильно не пинать ;)

Комментарии пользователей (6)

DomiTori
9

135 | 21

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

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

ZABor
9 | 11

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

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

dj-avtosh
39

1479 | 390

dj-avtosh - 14 января 2013 07:35 - шашлычник

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

skype: elhan.isaev

nowheremany
192

1659 | 1292

nowheremany - 14 января 2013 13:20 - Эксперт

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

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

Korobasow
52 | 33

Korobasow - 15 августа 2013 21:10 - Юзер

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

vitnet
218

2174 | 930

vitnet - 17 августа 2014 15:31 - Эксперт

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

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

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