mngatoff

mngatoff

С нами с 07 февраля 2014; Место в рейтинге пользователей: #32
mngatoff
26 декабря 2018, 03:55
+1
очень крутое обновление, да.

назрела мысль, возможно народ поддержит — хорошо бы добавить параметр, например, «validator» — и писать в него сниппет (с поддержкой файловых), который мог бы проверять нужные поля на правильность заполнения и возращал бы именованные ошибки
mngatoff
24 декабря 2018, 17:29
+2
эм… а что я такого ненормального сказал?
mngatoff
24 декабря 2018, 17:09
0
некоторое время назад я удалял компонент с нескольких сайтов за ненадобностью. удалял через менеджер пакетов. при этом файлы компонента и сам плагин оставались на месте, удалялась только регистрация компонента в системе. в результате консоль сыпала ошибками. приходилось файлы и плагин удалять вручную. такое было на порядка десяти сайтах
mngatoff
24 декабря 2018, 16:07
-1
а вы научили компонент нормально удаляться?
mngatoff
19 ноября 2018, 01:14
0
пишу плагин, чтобы разрешить скидку только на товары определенного бренда:
<?php
$sp = &$scriptProperties;
switch ($modx->event->name) {
    case "mspcOnBeforeSetProductDiscount":
    	if (strtolower($sp['coupon']['code']) == 'hotdays') {
	    	$product = $modx->getObject('msProduct', $sp['product']['id']);
			if ($product->get('vendor') != 9) {
	            $sp['discount'] = 0;
			}	
    	}
        break;
}
$modx->event->returnedValues = $sp;
на фронте, если товар другого бренда, скидка не срабатывает, но все равно приходит сообщение, что промокод применен. А как написать, что недействителен?
mngatoff
30 октября 2018, 01:38
0
// тут проверяешь всё что тебе нужно, чтобы уточнить что это точно тикет, в нужном разделе и т. д. 
// далее: 
// проверяешь, что документ новый и что юзер существует:
if ($mode == 'new' and $user = $modx->getObject('modUserProfile', $resource->createdby)) {
    // подключаешь компонент:
    $pdoTools = $modx->getService('pdoTools');
    $tickets = $modx->getService('tickets', 'Tickets', $modx->getOption(
        'tickets.core_path', null, $modx->getOption('core_path').'components/tickets/').'model/tickets/', array('allowGuestEmails' => true)
    );
    $tickets->initialize($modx->context->key, array('allowGuestEmails' => true));
    // отправляешь письмо:
    $tickets->addQueue(
        $user->id, // кому отправлять;
        'тема письма', 
        $pdoTools->getChunk('имя_чанка',  array(/* плейсхолдеры */)), // тело письма - можно распарсить свой чанк 
        $user->email, // на всякий случай указываешь почту, хотя это и необязательно
    );
}
mngatoff
30 октября 2018, 01:29
0
OnDocFormSave
mngatoff
30 октября 2018, 01:27
+1
круто, пригодится.

маленький нюанс: имеет смысл поменять местами столбцы «категория» и «название», так воспринимается логичнее

mngatoff
27 октября 2018, 04:30
0
что-то не так на стороне js, потому что процессор migx ловит пустое значение. оно тупо не отправляется на сохранение.
у меня две тв-шки рядом: «video» (listbox-multiply) и «gallery» (tvsuperselect)
в migx сырые данные приходят в виде json, и этот кусок выглядит так:
{"video":["1","2","3"],"gallery":""}
что касается поля migx внутри migx (которое тоже json по идее), то оно экранируется и приходит вот так:
{"somemigxfield":"[{\"field\":\"value\"}]"}
и думается мне, что tvsuperselect тоже надо экранировать и строкой отправлять, только где и когда это отловить пока не разобрался
mngatoff
11 октября 2018, 23:35
0
спасибо
mngatoff
11 октября 2018, 21:29
0
приветствую! извиняюсь за офтоп, подскажи пожалуйста, как можно через плагины заставить msie работать с localizator? какое из событий юзать и как модифицировать данные. И пожалуй главное, как заставить его не ругаться на незнакомые названия полей
mngatoff
02 октября 2018, 15:36
+4
Многим она не нужна и вряд-ли понадобится (MIGX DB например)
серьезно? по-моему только ради MIGX-db это и остается наиболее must-have компонентом. и именно по MIGX-db наибольшее количество белых пятен и неисследованных возможностей
mngatoff
15 сентября 2018, 19:28
0

не знаю, у меня работает
mngatoff
15 сентября 2018, 18:18
0
ну и плюс @EVAL это 1. костыль и 2. небезопасно. а тут всё по феншую, через коннектор
mngatoff
15 сентября 2018, 18:16
+1
отличие в способе хранения данных, и это важное отличие на мой взгляд. в обычном тв строка с разделителями, а тут json-массив
mngatoff
06 августа 2018, 14:18
0
Все события магазина задокументированы
хорошо бы еще документацию касательно работы с returnedValues
mngatoff
28 июля 2018, 15:33
0
короче, надо так:
[[*tv:is=``:then=`Пусто`:else=`неПусто`]]
mngatoff
28 июля 2018, 15:31
+1
в голове)
последовательно:
1. выводим tv или слово «пусто»
2.… ииии… 'Пусто':notempty=`неПусто`

слово «пусто» это уже строка, а не пустое место. поэтому в любом случае ты вторым условием проверяешь либо строку из tv, либо строку «пусто», и это никак не может быть пустым значением.