вопрос
Есть необходимость вывода в краткой новости тегов { full-story } и { full-story limit=x }. Почему то по умолчанию такой возможности нет. Дело в том что сейчас в краткой новости текста у меня не выводится (шаблон такой) и я краткую новость никогда не заполнял, и не совсем понимаю смысл ее заполнять. Но столкнулся с той проблемой что полную новость в краткой оказывается вывести нельзя. Я так понимаю нужен хак, но найти не могу. Заранее спасибо за помощь
Для вывода полной новости в короткой достаточно добавить кусок кода, вывдящий полную новость.
Файл engine.php
заменить на
файл show.short.php
найти:
Ниже вставить:
Код из dle9.7
Файл 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