Все сталкивались с проблемой, когда в этой cms после версии 1.0 нужно было повесить опрос. Насколько это было удобно в версии 1.0 на столько это тупо в 1.5. Модуль отображает только конкретно заданый опрос на конкретно назначенных страницах, что ужасно раздражает. А если опросов несколько, то те, которые не выставлены для отображения можно только увидеть в самом компоненте, и голоса для этого опроса растут со скоростью «кому не в лом копаться».
Эту ситуацию нужно было поменять и кардинально.
Задача: Если не указан опрос в модуле, то выводить случайно все доступные опубликованные опросы .
Решение:
Открываем файл \modules\mod_poll\mod_poll.php
Ищем код:
$poll = modPollHelper::getPoll($params->get( 'id', 0 ));
Меняем его на:
if (!($ident = $params->get ('id', 0))) { //Если нет назначенного опраса в этом месте
$database = & JFactory::getDBO (); //подключаем базу данных
$query = 'SELECT id FROM #__polls WHERE published=1'; //ищем все опубликованные опросы
$database->setQuery ($query);
$results = $database->loadObjectList ();
$howmuch = count ($results) - 1; //определяем количество элементов
$item = rand (0, $howmuch); //выбираем случайный элемент
$ident = $results[$item]->id; //присваиваем выбранный id опроса
}
$poll = modPollHelper::getPoll ($ident); //получаем данные опроса по его id
Проще даже сложно придумать. Сохраняем файл и наслаждаемся случайными опросами на каждой назначенной странице