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;
}
Вызов:
{'!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;
}
Комментарии: 7
В плагине переменные class, list, rating откуда появились?
Не от куда, я просто скопировал код с modstore.pro/packages/ecommerce/xlike в само низу
Понятно, в логах что-то есть? Вы проверяли плагин вообще отрабатывает? Что в него приходить? Что он отдает? Если нет, то очищаете журнал ошибок, потом меняете код плагина так
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.12.2020 16:59:41 ERROR /home/httpd/vhosts/httpdocs/core/model/modx/modcachemanager.class.php 399
Error caching action map mgr/actions
Error caching action map mgr/actions
imgur.com/a/6fuc4pW
Артур, спасибо что помогаете! Вот структура, всё выводиться на главную страницу, с категорий РОК, ПОП и РЭП, на страницах Тест3-3, Тест2-2 и т.д. TV поле rating куда нужно записывать всё.
Артур, спасибо что помогаете! Вот структура, всё выводиться на главную страницу, с категорий РОК, ПОП и РЭП, на страницах Тест3-3, Тест2-2 и т.д. TV поле rating куда нужно записывать всё.
Просто смотрите, этим кодом я записываю же в текущий ресурс?, а текущий ресурс это главная страница куда всё выводится, а нужно записывать в TV поле выведенной страницы
'likes' => $_modx->resource['likes'],
'dislikes' => $_modx->resource['dislikes'],
'rating' => $_modx->resource['rating'],
'dislikes' => $_modx->resource['dislikes'],
'rating' => $_modx->resource['rating'],
Посмотрите есть в плагине переменная id, если есть то смотрите что в ней. Ещё можно посмотреть что в массиве $_POST, какой-то идентификатор ресурса, за который отдают голос, должен быть. И тогда через $modx->getObject получайте этот ресурс и меняйте значение ТВ.<cut/>
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.