Ris
Сгенерировать html например этим:
www.whsh4u.com/HTML5-Player.php
И вставить этот код куда нужно. Либо прямо в шаблон, либо в виджет текст HTML.
instantcms.ru/blogs/zapiski-dinozavra/audiopler-dlja-kontenta.html
Уточните пожалуйста, что такое "список связанного контента"?а вот в списке связанного контента они не работают!
Включил оба хука. В первом выбираю список контента, во втором подменяю рейтинг.
Если сделать так:
получаю Notice: Undefined index: rating_widget in ...1 хук — нужная сортировка, $ctype['is_rating'] = 0
2 хук формирование виджета рейтинга, $ctype['is_rating'] = 1
Если убрать отключение-включение рейтинга — голосование работает четко, но у первого контента в спике виджет рейтинга пустой и количество запросов sql возрастает с 28-ми до 42-х… Ведь рейтинг на подмену не от балды берется, а приходится повторить те же операции, что и в первом виджете.
Все же это довольно запутанный и многоступенчатый метод.
Попробую всё же найти способ просто отправить в шаблон виджета $is_first_widget = true;
В общем убился, но так ничего путного и не придумал.
Нарисовал в \templates\default\controllers\rating\widget.tpl.php
Fuze, Loadырь, огромное спасибо за помощь!
Теперь понял, как и что.
Но всё равно создатель яваскрипта — явно недобрый человек…
Я первый хук фильтра совсем выключил. Во втрором хуке content_{$ctype['name']}_before_list формируется модель и из нее новый список контента:Тогда попробуйте в первом хуке, где фильтр, выключать рейтинг ($ctype['is_rating'] = 0;), во втором включать ($ctype['is_rating'] = 1;). Должно получиться.
$this->model->filterIn("id", $newcom)->order_by = "FIELD(i.id, $newstr)"; $items = $this->model->getContentItems($ctype['name']);
// Рейтинг if ($ctype['is_rating'] && $items && $this->isControllerEnabled('rating')){ 'target_controller' => $this->name, 'target_subject' => $ctype['name'] ), cmsRequest::CTX_INTERNAL)); $is_rating_allowed = cmsUser::isAllowed($ctype['name'], 'rate'); $is_first_widget = true; foreach($items as $id=>$item){ $is_rating_enabled = $is_rating_allowed && ($item['user_id'] != $this->cms_user->id); $items[$id]['rating_widget'] = $rating_controller->getWidget($item['id'], $item['rating'], $is_rating_enabled); } }
Uncaught ReferenceError: $ is not defined<script>
$(function(){
icms.rating.setOptions({url: "'.href_to('rating', 'vote').'"});
});
</script>
Приходится формировать новые виджеты. Прямо в хуке. С нужными значениями рейтинга.Тогда я не понял что вы делаете в хуке content_{$ctype['name']}_before_list. Хук вызывается, когда виджеты рейтинга сформированы.
Ведь список заново получается из модели без виджетов рейтинга.
Теперь понял.
Это фишка такая. Ведь новости в первой ветке — категория статей.
Может редиректами как-то? В htaccess. Чтобы с /content/stati отправляло на /stati
Только что проверил. С /content/stati автоматом отфутболивает на /stati
Не работает.2. В вашем хуке сделать что-то вроде:
$this->cms_template->addJS('templates/default/js/rating.js')
не ругается, но тоже не работает.
Пробовал вне кода php писать
<script>icms.rating.setOptions({url: "'.href_to('rating', 'vote').'"});</script>
А это как?1. Текущий HTML виджета реплейсить, меняя что вам нужно.
Виджет рейтинга пропал.3. В вашем хуке content_{$ctype['name']}_list_filter сделайте значение $ctype['is_rating'] в 0 или false. Пожалуй этот вариант самый лучший.

А нельзя ли его как-то отключить, чтобы он потом подключился?Уже отработал ранее, т.е. указанный скрипт подключился и все попытки его подключения вновь возвращают false, которое и записывается в $is_first_widget.
Или $is_first_widget = true в шаблон отправить принудительно?
Пробовал.Вероятно в вашем хуке нет подключения яваскрипта
class 'content' does not have a method 'addJS'
Не понял. Разные разделы с одинаковым url?проверил — действительно все разделы имеют такие дубли.
С этим отлично справляется хук 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 — бесполезно.
Кто поможет в беде?
Делать надо последнюю версию.

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