Настройка: веб-сайт Joomla в стеке LAMP
У меня есть таблица MySQL, содержащая некоторые записи, которые запрашиваются простым SELECT в статье Joomla, как показано ниже. На этом конкретном веб-сайте Joomla включено кэширование в глобальной конфигурации Joomla. Мне нужно рандомизировать порядок отображения результатов при каждой загрузке страницы.
Обычный php / mysql предложил бы мне два подхода для этого:
1. используйте метод order by RAND () или любой из нескольких методов, чтобы запрос SELECT мог возвращать достаточно случайные результаты.
2. как только php получит результат из SELECT в массив, перетасуйте массив, чтобы получить разумно случайный порядок элементов массива.
Однако, поскольку в этом экземпляре Joomla в глобальной конфигурации включено кэширование, любой из вышеперечисленных подходов завершается неудачей. При первой загрузке страницы порядок рандомизируется, однако дальнейшие перезагрузки не приводят к изменению порядка, поскольку страница доставляется из кэша. В тот момент, когда кэш отключен, оба подхода (случайный порядок / порядок по ранду) работают отлично. Что мне не хватает? Как переопределить глобальный кэш для этой конкретной статьи? Очень простое требование, которое удовлетворительно выполняются как php, так и mysql, блокируется кешем Joomla, который я не могу отключить.
php, который возвращает результаты из базы данных.
<pre>
$db = JFactory::getDBO();
$select = "SELECT id FROM jos_mytable;"; //order by RAND()
$db->setQuery($select);
echo $db->getQuery(); //Show me the Query!
$rows = $db->loadObjectList();
//shuffle($rows);
foreach($rows as $row) {
echo "$row->id";
}