Алексей

Алексей

С нами с 25 декабря 2012; Место в рейтинге пользователей: #69
Андрей
Андрей
03 апреля 2015, 19:54
1
+4
Весьма благодарен, что находите это изящным)

У меня на сайте Tickets используется для оценки товаров и оставления отзыва о том или ином товаре. Соответственно, голосовалка за отзывы мне не нужна (как здесь со стрелочками), а вот само поле `rating` в базе очень даже подходит для оценки товара, причём по любой шкале)

Поэтому я убрал возможность голосовать за отзывы, а на событие OnCommentSave повесил плагин, сохраняющий оценку пользователя в поле `rating`. Соответственно, в форму отзыва добавил радиокнопки для возможности выставить оценку. С помощью JS высвечивается та оценка, которую выбирает в данный момент пользователь.

Звёздочки картинками выводятся сниппетом (выбирает этот самый `rating` из базы) и чанком на основании выставленной оценки (c плейсхолдером [[+rating]]). В чанке примерно следующее:
<img src="/assets/theme/image/stars-[[+rating]].png" alt="Оценка [[+rating]]">
Там ещё прикручена общая оценка для товара на основании всех оценок юзеров.
В общем, может это и не совсем прямое использование компонента, и в некоторых местах костыльно получилось, но всё же работает быстро и свои функции выполняет, и меня в целом устраивает)
Василий Наумкин
18 марта 2015, 10:30
1
+2
mobiledetect.net — вот этот я пробовал лично, понравился.
Василий Наумкин
09 марта 2015, 11:47
1
+2
1. В pdoTools подобного сниппета нет. Подсчет просмотров ресурсов есть в Tickets, но не думаю, что его стоит использовать только для этого.

2. docs.modx.pro/components/pdotools/general-settings#Параметры-шаблонов — просто укажи специальный чанк в параметре &tpl_n5=``
Іван Клімчук
25 февраля 2015, 11:00
1
+1
Есть еще такой инструмент Teleport, который это умеет. Его можно и на крон поставить. github.com/modxcms/teleport/blob/master/doc/use/packages/gc.md
Василий Наумкин
19 января 2015, 04:07
1
0
Пробовать можно, но гарантии работы на каком-нибудь Denwer или OpenServer никто не даст.

Потому что для нормальной работы сервер должен кое-что уметь.
А что там умеет локальный сервер на windows и как будет выходить работа с изображениями — я без понятия.
Алексей Карташов
14 января 2015, 17:22
1
+2
Для ознакомления:
bezumkin.ru/sections/components/1857/#comment-15167

В своё время задавлся этим вопросом и даже пытался сделать что-то реальное, но в итоге… Всё расписано в том комменте)
Виталий Серый
22 декабря 2014, 19:57
1
0
Тоже нужно были тэги, только для категорий товаров miniShop2, решил использовать Tagger и собственно так же уткнулся в конфликт. Все дело в переопределении MODx.panel.Resource. Решение github.com/bezumkin/miniShop2/pull/155
Думаю для Tickets в ту же сторону надо копать.
Андрей
08 ноября 2014, 11:15
4
+8
Также хочу дать совет начинающим — не бойтесь экспериментировать.
А мы и не боимся… На тикетах недавно форум собрал: vsemee.kz/forums/
Василий Наумкин
24 сентября 2014, 06:25
1
0
По умолчанию в miniShop2 разные корзины для разных контекстов.

Это можно изменить, если немного расширить класс корзины.
Andrey Grachov
04 июня 2014, 17:07
1
0
Набросал схематический вариант, посмотреть можно здесь: s5885.test.modx.pro/index.php?id=5 (доступ s5885/VPdm-g7Y6zKf), плагин QuickOrder.
Код плагина:
<?php
$context = $modx->context->get('key');
if ($context == 'mgr' || empty($_POST['quick_order']) || empty($_POST['id']) || empty($_POST['customer'])) {
	return;
}
/**
 * @var miniShop2 $miniShop2
 */
$miniShop2 = $modx->getService('minishop2');
$miniShop2->initialize($context, array(
	'json_response' => false,
));
if (!($miniShop2 instanceof miniShop2)) {
	return;
}
$_POST['customer'] = array_merge(array(
	'delivery' => 1,
	'payment' => 1,
), $_POST['customer']);
foreach (array('email', 'phone', 'delivery', 'payment') as $field) {
	$response = $miniShop2->order->add($field, $modx->getOption($field, $_POST['customer'], ''));
	if (empty($response['success'])) {
		return;
	}
}
$response = $miniShop2->cart->clean();
if (empty($response['success'])) {
	return;
}
$response = $miniShop2->cart->add($_POST['id'], $modx->getOption('count', $_POST, 1), $modx->getOption('options', $_POST, array()));
if (empty($response['success'])) {
	return;
}
$miniShop2->order->submit();
$modx->sendRedirect($modx->makeUrl($modx->resource->get('id')));