С этим отлично справляется хук content_list_filter.php
И, казалось бы, всё хорошо, но рейтинг у выведенных материалов отличается от того, что нужен. В результате разборки с пользователями, мол почему мой материал имеет рейтинг выше, а первый не он. И каждый раз объяснения про то, что за вчерашний и другие дни рейтинг в зачет не идет и т.д.
Впихнуть изменения рейтинга в модель не представляется возможным, поэтому решил использовать хук content_{$ctype['name']}_before_list.
Прямо в хуке формирую модель для датасета, там же получаю массив контента, там же получаю рейтинг. Выводится всё замечательно, но… голосование в виджете рейтинга не работает. После нажатия на голосовалку индикатор загрузки зависает навсегда.
Вставлял console.log в rating.js и понял, что почему-то нет значения url: '/rating/vote'
Аякс просто не знает кому звонить.
Значение это формируется в конце файла \templates\default\controllers\rating\widget.tpl.php
<?php if ($is_first_widget) { ?> <script> icms.rating.setOptions({ url: '<?php echo $this->href_to('vote'); ?>' }); </script> <?php }?>
<?php $is_first_widget = $this->addJS('templates/default/js/rating.js'); ?>
Если отменить проверку $is_first_widget например так:
<?php if (1==1) { ?> <script> icms.rating.setOptions({ url: '<?php echo $this->href_to('vote'); ?>' }); </script> <?php }?>
Пробовал уже в разных местах хука писать $is_first_widget == 1 или == true — бесполезно.
Кто поможет в беде?