xLike не записывает в TV поле

Привет, тут трабл. Не сохраняются лайки, подскажи в чём дело пожалуйста. Все что тут, то и делал, больше нечего. Поле называет rating, всё выводится через pdoResources и $id это ID каждого выведенного ресурса. Буду благодарен! Крутое дополнение :)
Вызов:
{'!xLike' | snippet: [
'parent' => $id,
'class' => 'modResource',
'mode' => 'db',
'list' => 'default',
'likes' => $_modx->resource['likes'],
'dislikes' => $_modx->resource['dislikes'],
'rating' => $_modx->resource['rating'],
]}
tpl.xLike:
{*@formatter:off*}
<{$can? 'a': 'span'}
class=«xlike__link {$value > 0? 'xlike__link_active': ''} [ {$can? 'js-xlike-button': ''} ]»
{$can? 'data-xlike-value=«1» href=«javascript:undefined;»': ''}
>
<svg version=«1.1» id=«Слой_1» xmlns=«www.w3.org/2000/svg» xmlns:xlink=«www.w3.org/1999/xlink» x=«0px» y=«0px»
width=«31px» height=«27px» viewBox=«0 0 31 27» enable-background=«new 0 0 31 27» xml:space=«preserve»>
/>

{$likes | number_format: 0: '': ' '}
</{$can? 'a': 'span'}>

Добавление в TV поле (Плагин: add-rating):
<?php
switch ($modx->event->name) {
case «xLikeOnVote»:
if ($class == 'modResource' && $list == 'default') {
if ($resource = $modx->getObject($class, array('id' => $parent))) {
$resource->setTVValue('rating', $rating);
$resource->save();
}
}
break;
}
Владислав
15 декабря 2020, 09:31
modx.pro
295
0

Комментарии: 7

Артур
15 декабря 2020, 13:38
0
В плагине переменные class, list, rating откуда появились?
    Владислав
    15 декабря 2020, 14:58
    0
    Не от куда, я просто скопировал код с modstore.pro/packages/ecommerce/xlike в само низу
      Артур
      15 декабря 2020, 16:08
      0
      Понятно, в логах что-то есть? Вы проверяли плагин вообще отрабатывает? Что в него приходить? Что он отдает? Если нет, то очищаете журнал ошибок, потом меняете код плагина так
      switch ($modx->event->name) {
          case "xLikeOnVote":
              $modx->log(1, 'Смотрим что в class пришло ' . $class);
               $modx->log(1, 'Смотрим что в list пришло ' . $list);
              if ($class == 'modResource' && $list == 'default') {
                  if ($resource = $modx->getObject($class, array('id' => $parent))) {
                      $modx->log(1, 'Проверяем дошли ли мы до этой строки и что в rating ' . $rating);
                      $resource->setTVValue('rating', $rating);
                      $resource->save();
                  }
              }
              break;
      }
      И смотрите что будет в журнале ошибок после того как отработает плагин.
        Владислав
        15 декабря 2020, 17:03
        0
        15.12.2020 16:59:41 ERROR /home/httpd/vhosts/httpdocs/core/model/modx/modcachemanager.class.php 399
        Error caching action map mgr/actions
          Владислав
          15 декабря 2020, 17:06
          0
          imgur.com/a/6fuc4pW
          Артур, спасибо что помогаете! Вот структура, всё выводиться на главную страницу, с категорий РОК, ПОП и РЭП, на страницах Тест3-3, Тест2-2 и т.д. TV поле rating куда нужно записывать всё.
            Владислав
            15 декабря 2020, 17:11
            0
            Просто смотрите, этим кодом я записываю же в текущий ресурс?, а текущий ресурс это главная страница куда всё выводится, а нужно записывать в TV поле выведенной страницы
            'likes' => $_modx->resource['likes'],
            'dislikes' => $_modx->resource['dislikes'],
            'rating' => $_modx->resource['rating'],
              Артур
              15 декабря 2020, 18:14
              0
              Посмотрите есть в плагине переменная id, если есть то смотрите что в ней. Ещё можно посмотреть что в массиве $_POST, какой-то идентификатор ресурса, за который отдают голос, должен быть. И тогда через $modx->getObject получайте этот ресурс и меняйте значение ТВ.<cut/>
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        7