south_park 9 Опубликовано: 14 февраля 2018 Рассказать Опубликовано: 14 февраля 2018 (изменено) Всем привет, появилась нужда по разному вывести похожие новости (источники картинки разные) в разных категориях, так как внутри relatednews.tpl не работает теги вроде категорий, пришлось искать костыль и он был найден - разные шаблоны похожих новостей. Автор хака PUNPUN, хак рабочий но есть 1 неприятная проблема, отписал автору, обещал посмотреть, но жду уже месяц наверно. Сам хак: 1. Открыть /engine/modules/show.full.php найти : $tpl2->load_template( 'relatednews.tpl' ); Заменить на : if (stripos($tpl->copy_template, "{related-news:") !== false) { preg_match("#\\{related-news:(.+?)\\}#is", $tpl->copy_template, $related_matches); $tpl2->load_template( $related_matches[1] . '.tpl' ); } else $tpl2->load_template( 'relatednews.tpl' ); Далее найти : $tpl->set( '{related-news}', $related_buffer ); Заменить на : if (stripos($tpl->copy_template, "{related-news:") !== false) $tpl->set( '{related-news:'.$related_matches[1].'}', $related_buffer ); else $tpl->set( '{related-news}', $related_buffer ); 2. В fullstory.tpl прописывать так [cat-list=1,2,3]{related-news:relatednews_2}[/cat-list] Все работает, но проблема появляется при включении кеша, при первом открытии страницы - похожие новости отображаются корректно, при обновлении страницы - выводится просто {related-news:relatednews_2}, спустя какое то время - снова похожие новости и так по кругу, кеш не создается?. Я думаю это достаточно полезный хак и стоит довести его до ума. Спасибо. Изменено 14 февраля 2018 пользователем south_park Цитата Ссылка на сообщение Поделиться на других сайтах
alex32 942 Опубликовано: 14 февраля 2018 Рассказать Опубликовано: 14 февраля 2018 (изменено) попробуй добавь еще Найти if ( $allow_full_cache ) create_cache( "related", $related_buffer, $row['id'].$config['skin'], true ); заменить на if ( $allow_full_cache ){ if (stripos($tpl->copy_template, "{related-news:") !== false){ create_cache( {$related_matches[1], $related_buffer, $row['id'].$config['skin'], true ); }else{ create_cache( "related", $related_buffer, $row['id'].$config['skin'], true ); } } и выше Найти if ( $allow_full_cache ) $related_buffer = dle_cache( "related", $row['id'].$config['skin'], true ); else $related_buffer = false; заменить на if ( $allow_full_cache ) { if (stripos($tpl->copy_template, "{related-news:") !== false){ preg_match("#\\{related-news:(.+?)\\}#is", $tpl->copy_template, $related_matches); $related_buffer = dle_cache($related_matches[1], $row['id'].$config['skin'], true ); }else{ $related_buffer = dle_cache( "related", $row['id'].$config['skin'], true ); } }else{ $related_buffer = false; } Изменено 14 февраля 2018 пользователем alex32 Цитата Ссылка на сообщение Поделиться на других сайтах
south_park 9 Опубликовано: 15 февраля 2018 Рассказать Опубликовано: 15 февраля 2018 (изменено) Автор alex32 Спасибо, все работает. правда у вас лишняя скобка в первой замене, отредактируйте пожалуйста. Должно быть так: if ( $allow_full_cache ){ if (stripos($tpl->copy_template, "{related-news:") !== false){ create_cache( $related_matches[1], $related_buffer, $row['id'].$config['skin'], true ); }else{ create_cache( "related", $related_buffer, $row['id'].$config['skin'], true ); } } Изменено 15 февраля 2018 пользователем south_park Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.