yii2-blog
yii2-blog copied to clipboard
Удаление тегов
public static function removeTags($tags)
{
if(empty($tags))
return;
BlogTag::updateAllCounters(['frequency' => 1], 'name in ("' . implode ( '"," ', $tags) . '")');
BlogTag::deleteAll('frequency <= 0');
}
получается, что при удалении тега, частотность увеличивается на 1. А должна уменьшаться: ['frequency' => -1] Но даже в этом случае уменьшается только удин тег. Если удалить сразу два тега, то частотность уменьшится только у первого. Как решение, вызывать для каждого тега в foreach?
foreach ($tags as $tag) {
BlogTag::updateAllCounters(['frequency' => -1], 'name in ("' . $tag . '")');
}
Кстати, плюсуется тоже только один тег.
Да, систему тегов не трогали с момента их создания китайцем 3 года назад. надо исправлять. Если вдруг исправили, можете написать тут или пуллреквестить)
В функции public static function removeTags($tags) Вместо BlogTag::updateAllCounters(['frequency' => 1], 'name in ("' . implode ( '"," ', $tags) . '")'); Используем (с минусом) foreach ($tags as $tag) { BlogTag::updateAllCounters(['frequency' => -1], 'name in ("' . $tag . '")'); }
Аналогично в функции увеличения счетчика тэгов (сейчас не у компа, не помню название) Вместо BlogTag::updateAllCounters(['frequency' => 1], 'name in ("' . implode ( '"," ', $tags) . '")'); Используем (с плюсом) foreach ($tags as $tag) { BlogTag::updateAllCounters(['frequency' => 1], 'name in ("' . $tag . '")'); }
Куда сложнее для меня оказалась вторая проблема с отсутствием фильтрации по тегу (нажал на тег - получил все записи с тегом). Пытался забирать из GET, но тогда почему-то это отрабатывается и в других ситуациях(