[DLE] Как добавить в пользовательские шаблоны (custom) поддержку тегов {full-story} и {fullimage-x}
Для вывода новостей на страницах в DLE используются пользовательские шаблоны, подключаемые с помощью тега {custom …}. В этих шаблонах есть доступ только к краткой версии новости {short-story} и к изображениям-миниатюрам из полной новости.
Но иногда при выводе новостей на страницах сайта необходимо вывести полную новость или изображение из этой новости.
Для добавления поддержки тега {full-story} в custom необходимо:
В файле engine/engine.php заменить все
1 |
CHAR_LENGTH(p.full_story) as full_story |
на
1 |
p.full_story |
В файле engine/modules/show.short.php найти
1 |
$tpl->set( '{short-story}', $row['short_story'] ); |
и добавить ниже
1 |
$tpl->set( '{full-story}', $row['full_story'] ); |
В файле engine/functions.php заменить
1 |
CHAR_LENGTH(p.full_story) as full_story |
на
1 |
p.full_story |
В файле engine/modules/show.custom.php найти
1 |
$tpl->set( '{short-story}', $row['short_story'] ); |
и добавить ниже
1 |
$tpl->set( '{full-story}', $row['full_story'] ); |
Для добавления поддержки тега {fullimage-x} в custom необходимо:
Добавить поддержку {full-story}, после чего найти
1 |
if (stripos ( $tpl->copy_template, "{image-" ) !== false) |
и перед этой строкой добавить
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
if (stripos ( $tpl->copy_template, "{fullimage-" ) !== false) { $images = array(); preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $row['full-story'], $media); $data=preg_replace('/(img|src)("|\'|="|=\')(.*)/i',"$3",$media[0]); foreach($data as $url) { $info = pathinfo($url); if (isset($info['extension'])) { $info['extension'] = strtolower($info['extension']); if (($info['extension'] == 'jpg') || ($info['extension'] == 'jpeg') || ($info['extension'] == 'gif') || ($info['extension'] == 'png')) array_push($images, $url); } } if ( count($images) ) { $i=0; foreach($images as $url) { $i++; $tpl->copy_template = str_replace( '{fullimage-'.$i.'}', $url, $tpl->copy_template ); } } $tpl->copy_template = preg_replace( "#\\{fullimage-(.+?)\\}#i", "{THEME}/dleimages/no_image.jpg", $tpl->copy_template ); } |
После внесения изменений необходимо очистить кеш.