Проблема: при отложенном постинге (новости, запланированные для публикации в будущем) теги от них попадают в облако тегов сразу же, в облаке тегов туева хуча ссылок, ведущих на страницу с кодом 404.
Решение: в \engine\modules\tagscloud.php найтиPHP код:заменить на
$db->query("SELECT SQL_CALC_FOUND_ROWS tag, COUNT(*) AS count FROM " . PREFIX . "_tags GROUP BY tag ORDER BY count DESC LIMIT 0,{$config['tags_number']}");
PHP код:Минус данного способа: утяжеление запроса к базе, существенно при отключенном кешировании DLE.
$db->query("SELECT SQL_CALC_FOUND_ROWS tag, COUNT(*) AS count FROM (SELECT ".PREFIX."_tags.id," . PREFIX . "_tags.news_id," . PREFIX . "_tags.tag," . PREFIX . "_post.date FROM " . PREFIX . "_tags LEFT JOIN " . PREFIX . "_post ON " . PREFIX . "_post.id=" . PREFIX . "_tags.news_id WHERE date<NOW()) AS tmp1 GROUP BY tag ORDER BY count DESC LIMIT 0,20");
Есть еще ссылка "Все теги", но ее проще закрыть от индексации. Улучшения данного хака приветствуются.
DLE {tags} - хак вывода тегов только уже опубликованных новостей
(Ответов: 1, Просмотров: 829)
- 20.06.2016 20:33
- 21.06.2016 10:44
На мой взгляд, лучше сделать так - быстрее будет выполняться без подзапросов, и кеширование запросов будет на стороне базы осуществляться
PHP код:$now = date('Y-m-d H:i:s');
$db->query("SELECT SQL_CALC_FOUND_ROWS tag, COUNT(*) AS count FROM " . PREFIX . "_tags LEFT JOIN " . PREFIX . "_post ON " . PREFIX . "_post.id=" . PREFIX . "_tags.news_idWHERE date < " . $now . " GROUP BY tag ORDER BY count DESC LIMIT 0,{$config['tags_number']}");
Спасибо сказали:
MetalMessiah(26.06.2016),
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Meta, h1, tags - не будет ли переспама? | Вопросы от новичков | 3 | 28.02.2014 15:48 |
Способ вывода похожих новостей | WordPress | 4 | 03.01.2014 01:34 |
Запрет вывода определенной категории новостей в похожих новостях | DLE | 3 | 11.05.2013 13:37 |
шаблон вывода новостей по тэгу | DLE | 3 | 22.03.2013 18:39 |
Кто знает хороший Компонент вывода новостей | Joomla | 13 | 08.12.2012 21:35 |