Сергей Фещуков

Сергей Фещуков

С нами с 10 февраля 2015; Место в рейтинге пользователей: #42
Сергей Фещуков
15 марта 2016, 04:07
0
Можно. Если в настройках указаны свойства, а у товара отсутствуют значения в этих свойствах, то для такого товара создаётся только одна запись остатков без учёта свойств.
Сергей Фещуков
13 марта 2016, 12:24
2
0
Обработчик события успешного добавления товара в корзину:
miniShop2.Callbacks.Cart.add.response.success = function(response) {
    //здесь ваш js-код
}
/* Но не забывайте, что есть событие изменения количества товара в корзине */
miniShop2.Callbacks.Cart.change.response.success = function(response) {
    //здесь ваш js-код
}
Сергей Фещуков
11 марта 2016, 12:23
+1
Попробуйте так:
<?php
switch ($modx->event->name) {
    	case 'OnDocPublished':
 		$createdon = $resource->get('createdon');
 		$resource->set('editedon', $createdon);
		$resource->save();
    		break;
    }
Сергей Фещуков
07 марта 2016, 19:08
0
Контексты или ресурсы/категории разные не подходит? Или нужно, чтобы одинаковая ссылка была для обоих городов?
Сергей Фещуков
07 марта 2016, 18:49
+1
Попробуйте после вызова pdoPage добавить такое:
[[+page:is=`1`:else=`<link rel="canonical" href="[[++site_url]][[~[[*id]]]]">`:htmlToHead]]
Сергей Фещуков
04 марта 2016, 06:02
3
0
Для товаров miniShop2 упрощённый вариант плагина:
<?php
if ( $modx->event->name != "OnDocFormSave" || $resource->get('class_key') != 'msProduct' || !empty($resource->get('article')) ) return;
$resource->set('article', substr($resource->get('alias'),0,2).'-'.$resource->get('parent').$resource->get('id'));
$resource->save();
$resource->clearCache();
Сергей Фещуков
04 марта 2016, 05:08
0
Возьму на себя смелость переписать это дело под стандартное поле Артикул компонента miniShop2.
<?php
if ($modx->event->name=="OnDocFormSave") // Плагин срабатывает при сохранении ресурса
{
    $id = $resource->get('id'); // Получаем id ресурса
    $parent = $resource->get('parent'); // Получаем id родительского ресурса
    $alias = $resource->get('alias'); // Получаем alias ресурса
    $res = $modx->getObject('msProduct', $id); // Получаем объект товара
    $tvv = $res->get('article'); // Получаем артикул
    
    if (empty($tvv)) // Если артикул пустой то создаем его
    {
        $article = substr($alias,0,2).'-'.$parent.$id; // Создаем артикул
        $res->set('article', $article); // Записываем артикул в соответствующее поле
        $res->save(); // Сохраняем
        $res->clearCache(); // Чистим кеш
    }
}
Но в этом плагине смущают меня два момента:
1. Зачем снова получаем объект ресурса, если он есть в переменной $resource? По-моему, все функции, типа save() и clearCache() в нём тоже доступны.
2. Плагин выполняет код после сохранения страницы. При сохранении страницы чистится кэш (по умолчанию). И создаётся он только тогда, когда к странице снова обратятся на фронтенде (насколько я знаю). Зачем тогда снова чистить кэш после сохранения поля?
Сергей Фещуков
02 марта 2016, 09:10
0
Смотрите файл конфига core/config/config.inc.php, насколько мне помнится, там также указывается адрес сайта, но влияет ли он на что-то или нет, я точно не знаю. Точно известно, что в этом же config.inc.php формируется MODX_BASE_URL и MODX_SITE_URL. Ещё после своих изменений удалить всё содержимое папки core/cache/. И должно всё заработать.
Сергей Фещуков
01 марта 2016, 15:29
0
Не срабатывает, потому что стоит тип обработки Ресурс, а нужен Динамический ресурс, а в поле Запись выбрать нужно шаблон.
Сергей Фещуков
01 марта 2016, 13:28
0
Я туда в первую очередь полез. Но
core/components/minishop2/processors/mgr/orders/update.class.php

6		public $beforeSaveEvent = 'msOnBeforeUpdateOrder';
7		public $afterSaveEvent = 'msOnUpdateOrder';
всё что находится по этим словам.
Сергей Фещуков
29 февраля 2016, 09:19
0
Плагин я пробовал, когда выставил в качестве обработчика динамический ресурс.
На OnPageNotFound вроде своего ничего не висит. Но вариант сменить событие на OnHandleRequest сработал и теперь появляется страница 404.
Спасибо за помощь.
Сергей Фещуков
29 февраля 2016, 08:38
0
Забыл указать, что в своём случае я использую сниппет в качестве обработчика. Хотя я попробовал всё сделать через плагин, как указано немного выше, и всё равно получаю цикличный редирект.
Сергей Фещуков
29 февраля 2016, 08:28
0
$modx->sendErrorPage();
Приводит к циклическому редиректу.
Нашёл также такой вариант вызова:
$modx->sendErrorPage(array('stop' => true));
Но также приводит к циклическому редиректу.

Как правильно то перебросить на страницу 404?
Сергей Фещуков
25 февраля 2016, 20:10
0
Ой, там по ссылке всё есть. Извините
Сергей Фещуков
13 февраля 2016, 20:14
1
0
Самый простой — 2 вариант. Только не полный код вы скопировали.
Создаёте плагин с любым именем. В него вставляете следующий код:
switch ( $modx->event->name ) {
	case 'msOnAddToCart':
		$tmp = $cart->get();
		$tmp[$key]['price'] = $tmp[$key]['price']+($tmp[$key]['price']*18)/100;
		$cart->set($tmp);	
		break;
}
Затем самое главное — устанавливаете в соседней вкладке запуск плагина при возникновении события msOnAddToCart. И сохраняете плагин. Готово.
Сергей Фещуков
13 февраля 2016, 14:07
0
Ещё что-то не подключено. Какой-то плагин к jQuery.
Качайте jQuery плагины markItUp и jQuery Form Plugin.
Странно, что они автоматически не подключились. Вроде должны идти вместе с компонентом.
Сергей Фещуков
13 февраля 2016, 12:53
0
Самый простой вариант — добавить в секцию head строку
<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
А лучше скачать файл с сайта и подключить локальный файл.
Сергей Фещуков
13 февраля 2016, 12:48
0
jQuery не подключён, видимо. Если подключён, то пробуйте заменить $ на jQuery.
Сергей Фещуков
31 января 2016, 08:23
+1
Тут двоякая ситуация. Многие прямо в чанки компонента вносят правки и чанки являются лишь шаблоном, чтобы было понятно какие плейсхолдеры доступны или какова должна быть конструкция формы и т.д. А ТВ может содержать важный контент, например. Удалять чанки и ТВ при удалении компонента = удалять чужой труд, причём удаляющий может и не знать того, что чанки и ТВ тоже удалятся. Так что я считаю, что чанки и ТВ не должны удаляться. Да и сниппеты не должны наверное удаляться.
Сергей Фещуков
21 января 2016, 19:34
0
Пробуйте. Добавил в магазин версию 2.0.7-pl с необходимыми доработками. Удачно пришло в голову решение указанной выше задачи. :) Всё проверил, должно работать без проблем. Если найдете ошибки, обязательно сообщите мне в техподдержку.
modstore.pro/cabinet/tickets/ticket