• Есть такой хороший компонент Custom Properties который позволяет добавлять к статьям тэги и выводить облако тэгов, кстати именно он и используется на этом сайте.

    И все бы хорошо, но есть в нем такая неприятная особенность - при клике по тэгу поиск отображается иногда неверно.


    После того, как я немного поломал голову, почему одни тэги работают хорошо, а другие не хотят - я выявил закономерность - не показываются тэги к свежим статьям...

     

    Дальнейшие изыскания привели к файлику components/com_customproperties/models/search.php к строке 453

    if($ce->publish_up) $wherestr[] = "( c.".$ce->publish_up." = " . $database->Quote( $nullDate ) . " OR c.".$ce->publish_up." publish_down)$wherestr[]= "( c.".$ce->publish_down." = " . $database->Quote( $nullDate ) . " OR c.".$ce->publish_down." >= CURDATE() )";
    

    проблема здесь оказалось в том что вызов функции CURDATE() в MySQL возвращает время сервера, а учитывая что он находится в Америке разница составляет 12 часов. То есть нам нужно ждать 12 часов перед тем как статья начнет искаться по тэгам, а это не хорошо.

    Для решения проблемы заменяем строчку на следующую -  

            if($ce->publish_up) $wherestr[] = "( c.".$ce->publish_up." = " . $database->Quote( $nullDate ) . " OR c.".$ce->publish_up." Quote($now)." )";
            if($ce->publish_down)$wherestr[]= "( c.".$ce->publish_down." = " . $database->Quote( $nullDate ) . " OR c.".$ce->publish_down." >= ".$database->Quote($now)." )";

     а в строке 451 (то есть чуть выше) добавляем еще 2 строчки кода

     

            $jnow        =& JFactory::getDate();
            $now        = $jnow->toMySQL();

    Собственно весь рецепт, как обычной простой, но отнявший немало времени.