Сергей Шлоков

Сергей Шлоков

С нами с 31 января 2013; Место в рейтинге пользователей: #3
Сергей Шлоков
18 августа 2016, 16:22
0
Да, промашка Яндекса.
Закралось подозрение, что ты говоришь про adminTools, а не про dbAdmin.
Сергей Шлоков
18 августа 2016, 16:15
0
В планы также входит сделать вывод запроса не в виде массива, а таблицей.
Сергей Шлоков
18 августа 2016, 16:14
+1
Спасибо!
Замечание по форме оплаты. Поскольку это форма от Яндекса, наверно должен быть выбор с карты ли платить или с кошелька Яндекс-денег. Очень муторно вводить реквизиты карты, когда с кошелька много оплата проще.
Там рядом с полем суммы есть 2 кнопки — оплата через карты или через яндекс.
Сергей Шлоков
18 августа 2016, 10:30
+1
Для начала импортозамещайте getResources на pdoTools и используйте его методы getCollection и getChunk (он не лезет в базу за чанком при каждом вызове, а берёт его из памяти).
Получается что-то типа такого
foreach ($resources1 as $res1) {
   $output2 = '';
    foreach ($resources2 as $res2) {
        $output3 = '';
        foreach ($resources3 as $res3) {
            $output3 .= $pdoFetch->getChunk($tpl3,$res3);
        }
        $res2['wrapper'] = $output3;
        $output2 .= $pdoFetch->getChunk($tpl2, $res2);
    }
    $res1['wrapper'] = $output2;
    $output .= $pdoFetch->getChunk($tpl1, $res1);
} 
return $output;
}
Ну и соответственно в чанки $tpl1 и $tpl2 нужно добавить плейсхолдер [[+wrapper]] в нужное место
// Чанк $tpl1
<div class="level1">
	...
	[[+wrapper]]
</div>
Если чанки простые, можно использовать INLINE чанки.
Как-то так. Может «прям разработчики» что-нибудь допилят.
Сергей Шлоков
18 августа 2016, 08:19
0
Жесткая конструкция. Даже при небольшом количестве ресурсов тормоза будут серьёзные. Я так понимаю, что подразумевается конструкция —
Раздел
    Подраздел
         Ресурсы
Используйте pdoMenu.
Сергей Шлоков
17 августа 2016, 19:01
+1
Посмотрите какой sql запрос получается включив showLog.
Сергей Шлоков
15 августа 2016, 19:03
0
По первому замечанию подскажу.
$outputSeparator вообще не нужен.
А $scriptProperties['outputSeparator'] присвоить значение без условий
$scriptProperties['outputSeparator'] = '||';
Ну и возврат делать так
return implode(PHP_EOL, $output);
Сергей Шлоков
15 августа 2016, 18:56
0
Вот этот сниппет достоин плюса.
Есть пара замечаний.
Непонятна вот эта конструкция
$outputSeparator = $modx->getOption('outputSeparator', $scriptProperties, PHP_EOL);
if (!isset($scriptProperties['outputSeparator'])) {
    $scriptProperties['outputSeparator'] = '||';
}
Представь, как будет выглядеть вывод, если вызвать сниппет с параметром &outputSeparator=`||`.
Ну и второе. Ничего сложного с биндингом нет. Достаточно глянуть в документацию. Нужно добавить одну строчку и одну изменить.
...
$pdoTools = $modx->getService('pdoTools');
foreach ($groupped as $group) {
   $wrapper  = implode(PHP_EOL, $group);
   $output[] = $pdoTools->getChunk($tplWrapper, array('wrapper' => $wrapper));
}
Тогда шаблон можно указать в стиле pdoTools, к которому многие уже привыкли
$tplWrapper = $modx->getOption('tplWrapper', $scriptProperties, '@INLINE <div class="group-wrapper">[[+wrapper]]</div>');

П.С. Не увидел ни одного комментария Ильи. Видимо вы с ним телепатически общаетесь.
Сергей Шлоков
15 августа 2016, 17:33
0
Собственный сниппет выглядит уже короче и серьёзнее. Я же говорил, что автор может лучше. )
Но это ещё не предел. Если обратить внимание на любой сниппет pdoTools, то можно увидеть, что у них есть параметры tpl, в которых можно указать чанк или INLINE код. Что гораздо удобнее, чем указывать теги, классы, id и т.д. Таким образом, один параметр tpl заменяет несколько параметров. Как я уже писал выше, для данного сниппета достаточно 2 параметров. Или 3-х, если нужно указать сниппет получения результатов. Но так как в этом сообществе уже мало кто пользуется getResources, то и этот параметр можно опустить. Просто сразу вызывать pdoResources, но разумеется с проверкой его наличия.
Сергей Шлоков
15 августа 2016, 11:42
1
+3
Это и раньше работать не могло, если только Вы ошибки без восклицательного знака вызывали.
Могло и может. Всё очень просто. Парсер по умолчанию гоняет 10 циклов. Если за 9 циклов он не обработает какой-нибудь плейсхолдер, то на 10-й раз он его удалит.
В данном случае, парсер в первом проходе проверяет плейсхолдер [[!+cp.error_message]]. Он пустой, поэтому остается не обработанным. Далее обрабатывается тег сниппета. Он (сниппет) выставляет этот плейсхолдер. Во втором цикле парсер проверяет оставшиеся плейсхолдеры и на этот раз распарсивает этот плейсхолдер.
А когда используется фильтр notempty, то плейсхолдер обрабатывается сразу же. Т.е. парсер на первом цикле вернет или пустое значение или указанное в фильтре. На втором круге парсить уже нечего.
Как-то так.
Сергей Шлоков
15 августа 2016, 10:27
0
Если в коде нет ни строчки вашего кода, то беру свои слова «выложил как свое решение» обратно. Но тогда тем более не понятно возмущение Павла отсутствием плюсов.
Что за грубости в мой адрес…
Где я произнёс хоть одно слово грубости? Я дискутирую с Павлом. Про автора упомянул 1 раз. И ничего плохого я не вижу в коде начинающего программиста. Лично я помню, что сам был таким. Просто заметил, что для плюса он пока слабоват. Уверен, что тот же Павел сможет его сократить минимум раза в 3.
Сергей Шлоков
15 августа 2016, 09:57
0
Не мне судить, плохо это или хорошо. Однако, это говорит о том, что такие люди неблагодарные.
Прикольно. Эти два предложения писал один и тот же человек? )) Павел, помню твои горячие споры про «благоДарю» и алкоголь. Ты идеалист. Но мир не черно-белый. Если человек не подходит под твое понимание добра и зла, это не значит что он плохой. Он просто другой. Тем более, что ты сам когда-то пришел к такому выводу.
Для примера скажу. Я мог бы добавить эту заметку в закладки для того, чтобы не забыть идею и использовать её в будущем, если вдруг встанет такая задача. Но плюса я бы не поставил. Человек взял чужой сниппет, старый престарый, и выложил как своё решение. Для новичка неплохо. Но выглядит оно как решение практического задания на курсах PHP первого уровня.
if ($scriptProperties['wrapper'] == 1) {
    $output .= "\n<" . $scriptProperties['wrapperTag'] . " ";
};
 
if (isset($scriptProperties['wrapperClass']) && $scriptProperties['wrapper'] == 1) {
    $output .= "class='" . $scriptProperties['wrapperClass'] . "'";
};
 
if ($scriptProperties['wrapper'] == 1) {
    $output .= ">";
};
Для плюса нужно всё-таки что-то посерьёзнее. Уверен, автор может лучше. Тем более он знаком с pdoTools.

П.С. Кстати, данную возможность можно было бы легко добавить в pdoTools. Достаточно добавить всего 2 параметра — groupLimit и tplGroup.

В общем:
1. Избранное — это как закладка в книге. Плюс/минус — это реакция на содержание. У них разная семантика.
2. С этими рейтингами разработчики начинают путать этот ресурс с соц. сетями. Осталось только ввести тут «друзей» и лайкать друг друга за фото собачки.
Сергей Шлоков
14 августа 2016, 18:23
0
А чего выводится в ссылке вместо {$link}?
Сергей Шлоков
13 августа 2016, 21:54
1
+1
$modx->event->output("Сообщение об ошибке");
Сергей Шлоков
12 августа 2016, 13:43
+1
Вывести модальное окно можно только через яваскрипт. Самый простой вариант — в плагине по событию OnWebPagePrerender проверить куку, если её нет, то вставить на страницу диалог и скрипт.
Сергей Шлоков
11 августа 2016, 19:56
+4
Вот если бы я был программистом, я бы для начала включил showLog и посмотрел какой формируется sql запрос в том и в другом случае. Но я не программист, поэтому даже не знаю чем помочь.
Сергей Шлоков
11 августа 2016, 17:32
0
или посмотреть в кэше — core/cache/system_settings.
Сергей Шлоков
11 августа 2016, 17:24
+1
Тут проще. Дополнения можно сделать самим или заказать разработку. Это недорого и не сложно. И проверяющим будет что показывать.
А вот разработать свою CMS, настоящую, с лицензиями и сертификатами, годную для импортозамещения, под силу только Роснано. :) Нужно только подождать несколько лет и выделить из бюджета несколько сот лярдов.
Сергей Шлоков
11 августа 2016, 17:12
+1
Залезть в таблицу modx_site_content и поправить поле properties или вызвать на нужной странице сниппет ClearHitsPage
$page =  $modx->getObject('modResource', $modx->resource->get('id'));
$page->setProperty('hitts',0,'hitspage');
$page->save();