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

Вывод { full-story } в краткой новости


     02.11.2012    full-story, вывод, краткая, новость    Все вопросы » Общие вопросы по PHP    12079

вопрос
Есть необходимость вывода в краткой новости тегов { full-story } и { full-story limit=x }. Почему то по умолчанию такой возможности нет. Дело в том что сейчас в краткой новости текста у меня не выводится (шаблон такой) и я краткую новость никогда не заполнял, и не совсем понимаю смысл ее заполнять. Но столкнулся с той проблемой что полную новость в краткой оказывается вывести нельзя. Я так понимаю нужен хак, но найти не могу. Заранее спасибо за помощь

Ответил: ПафНутиЙ


Для вывода полной новости в короткой достаточно добавить кусок кода, вывдящий полную новость.
Файл engine.php
CHAR_LENGTH(p.full_story) as full_story

заменить на
p.full_story


файл show.short.php
найти:
else    $tpl->set( '{short-story}', "<div id=\"news-id-" . $row['id'] . "\" style=\"display:inline;\">" . $row['short_story'] . "</div>" );

Ниже вставить:
        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], "<div id=\"news-id-" . $row['id'] . "\" style=\"display:inline;\">" .$row['full_story'] . "</div>" );

        } else $tpl->set( '{full-story}', "<div id=\"news-id-" . $row['id'] . "\" style=\"display:inline;\">" . $row['full_story'] . "</div>");


Код из dle9.7

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

cybernatic
Эксперт

cybernatic - 3 ноября 2012 11:30 -

Почему то выводит цифры... хотя в БД есть текст новостей =)

ПафНутиЙ
Админ

ПафНутиЙ - 3 ноября 2012 13:59 -

адрес сайта дайте.

Каков вопрос - таков и ответ. Просто помните об этом.

Martyn911
Юзер

Martyn911 - 15 февраля 2013 17:15 -

cybernatic, у меня тоже цыфры, но в новостисти таких цыфр даже нет, адрес не дам на локалхосте

nowheremany
Эксперт

nowheremany - 15 февраля 2013 19:19 -

Подправил ответ

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

Martyn911
Юзер

Martyn911 - 18 февраля 2013 18:22 -

nowheremany,
Спасибо Вам, работает, появилась еще потребность выводить тоже самое в результатах поиска не подскажете как это реализовать?

Martyn911
Юзер

Martyn911 - 19 февраля 2013 13:58 -

Это вопрос ко всем, а не только nowheremany, кто может помочь с выводом в результатах поиска {full-story limit="X"} ?

Martyn911
Юзер

Martyn911 - 19 февраля 2013 18:22 -

да блин и в /favorites/ тоже надо выводить, ну помогите же, Паша выручайте, Вы же этот движек перекопали уже полностью(знаю Вы не любите менять файлы движка, так может подскажете другое решение)

vlits
Юзер

vlits - 18 ноября 2013 07:20 -

{full-story limit="X"} как сделать что бы работал вывод ???
что бы текст выводился и обризался.

вставляю код, он мне так и выводит его ! просто код.

gamesaved
Юзер

gamesaved - 12 января 2014 14:20 -

Столкнулся с аналогичной проблемой, все делал исключительно по инструкции, но так и не помогло - теперь в коротких новостях выводятся цифры - ни как не связанные с материалами.

serialpark
Юзер

serialpark - 14 июля 2014 17:32 -

Подскажите, кроме как модуль поставить, не ужели нет решения?

serialpark
Юзер

serialpark - 14 июля 2014 17:40 -

Сам нашёл решение, найти в show.short.php код:

$tpl->set( '{short-story}', $row['short_story'] );
if ( preg_match( "#\\{short-story limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {

выше добавить:
$tpl->set( '{full-story}', $row['full_story'] );

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'] );

}

версия 10.2

Emelya.sp
Юзер

Emelya.sp - 3 ноября 2014 14:58 -

Всё сделал по инструкции, всё выводит, НО.................
Он выводит полную новость без дополнительных полей, а в моем случае, как раз полная новость почти не нужна, у меня вся информация берется с дополнительных полей, а вот уже фотографии с помощью тега {fullimage-x} берутся из полной новости.

Короче, смысл такой:
<div id="main" class="page">
<header class="page-header">
<div class="container">
<h4 class="title">{title}</h4>
</div>    
</header>
<div class="container">
<div class="row">
<article class="content product-page col-sm-12 col-md-12">
<div class="row">
<div class="col-sm-5 col-md-5">
<div class="image-box">
<span class="sale top"></span>
<div class="general-img">
<img alt="" src="{fullimage-1}" data-zoom-image="{fullimage-1}" width="700" height="700">
</div><!-- .general-img -->
<div class="thumblist-box load">
<a href="#" class="prev">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="9px" height="16px" viewBox="0 0 9 16" enable-background="new 0 0 9 16" xml:space="preserve">
<polygon fill-rule="evenodd" clip-rule="evenodd" fill="#fcfcfc" points="8,15.999 9,14.999 2,8 9,1.001 8,0.001 0,8 "></polygon>
</svg>
</a>
<a href="#" class="next">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="9px" height="16px" viewBox="0 0 9 16" enable-background="new 0 0 9 16" xml:space="preserve">
<polygon fill-rule="evenodd" clip-rule="evenodd" fill="#fcfcfc" points="1,0.001 0,1.001 7,8 0,14.999 1,15.999 9,8 "></polygon>
</svg>
</a>
<div id="thumblist" class="thumblist">
<a href="#" data-image="{fullimage-1}" data-zoom-image="{fullimage-1}">
<img alt="" src="{fullimage-1}" width="700" height="700">
</a>
[fullimage-2]<a class="active" href="#" data-image="{fullimage-2}" data-zoom-image="{fullimage-2}">
<img alt="" src="{fullimage-2}">
</a>[/fullimage-2]
[fullimage-3]<a href="#" data-image="{fullimage-3}" data-zoom-image="{fullimage-3}">
<img alt="" src="{fullimage-3}" width="700" height="700">
</a>[/fullimage-3]
[fullimage-4]<a href="#" data-image="{fullimage-4}" data-zoom-image="{fullimage-4}">
<img alt="" src="{fullimage-4}" width="700" height="700">
</a>[/fullimage-4]
</div><!-- #thumblist -->
</div><!-- .thumblist -->
</div>
</div>
<div class="col-sm-7 col-md-7">
<div class="reviews-box">
[rating]<div class="ratebox"><div class="rate">{rating}</div></div>[/rating]
<span class="separator">|</span>
Категория: {link-category}  |  <span class="argviews"> Просмотров: {views}</span>
<span class="separator">|</span>{favorites} [edit]<img src="{THEME}/dleimages/editstore.png" title="Редактировать" alt="Редактировать" />[/edit]
</div>
<div class="description">
{short-story}
</div>
</div>
</div>
</article><!-- .content -->
<article class="content product-page col-sm-12 col-md-12">
<div class="row">          
<div class="col-sm-12 col-md-12">
<div class="description">
<table class="table table-bordered table-striped">
<thead>
<tr>
[xfgiven_massap]<th>Полная масса</th>[/xfgiven_massap]
</tr>
</thead>
<tbody>
<tr>
[xfgiven_massap]<td>[xfvalue_massap] кг</td>[/xfgiven_massap]
</tr>
</tbody>
<thead>
<tr>
[xfgiven_kd]<th>Длина кузова</th>[/xfgiven_kd]
</tr>
</thead>
<tbody>
<tr>
[xfgiven_kd]<td>[xfvalue_kd]</td>[/xfgiven_kd]
</tr>
</tbody>
<thead>
<tr>
[xfgiven_gd]<th>Длина габариты</th>[/xfgiven_gd]
</tr>
</thead>
<tbody>
<tr>
[xfgiven_gd]<td>[xfvalue_gd]</td>[/xfgiven_gd]
</tr>
</tbody>
</table>
</div>
[xfgiven_opisanie][xfvalue_opisanie][/xfgiven_opisanie]
</div>
</div>
</div>
</article><!-- .content -->
</div>
</div>
</div><!-- #main -->

P.S. Приношу извинения за такую краткость, но говорят, мол... "У Вас слишком длинное сообщение"

Помогите пожалуйста! Я итак уже много чего обманул в ентом движке, но тут я бессилен... Ужасно не хочется добавлять в модальное окно кучу инфы, и создавать кучу дополнительных полей для фотографий...
Кому интересно, вот страничка -

Emelya.sp
Юзер

Emelya.sp - 3 ноября 2014 15:13 -

При нажатии на фото выводится модальное окно, куда я хочу запихнуть свою информацию.
А при нажатии на название ({title}), показывается та самая информация, которая должна быть в модальном окне!

Есть отдельный шаблон для вывода полной новости, он индивидуальный для этой категории, и установлен в настройках категории (Шаблон полной новости: kurgan_fullstory.tpl), а он почему-то выводит не шаблон, а просто поле полного описания новости...

При вставки тега {include file="kurgan_fullstory.tpl"} вместо {full-story}, он делает кильды мильды на странице краткой новости, и не выводит фотографии {fullimage-x} в полной новости модального окна.

Emelya.sp
Юзер

Emelya.sp - 14 ноября 2014 15:22 -

Разобрался

boltuk
Юзер

boltuk - 24 февраля 2015 21:50 -

Интересует данный вопрос, DLE 10.3. Ниже приведенный код, встречает в файле engine.php во множестве случаях, нужно во всех них поменять код:
CHAR_LENGTH(p.full_story) as full_story

на:
p.full_story

И будет ли выше предложенное решение "Пафунтий" работать на DLE 10.2?

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

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

наверх