Василий Наумкин · 22 ноября 2015, 16:37 Парсер MODX работает в цикле до 10 раз, чтобы разобрать все плейсхолдеры. То есть: 1. Видим [[+totalMy]], значения нет 2. Видим [[!getTickets]], запускаем, он выставляет значение 3. Проверяем, что у нас осталось необработанного 4. Запускаемся еще раз и вот теперь только обрабатываем [[+totalMy]] 5. Ой, а чего это у меня так всё тормозит? Fenom работает один раз и позволяет сохранять работу сниппетов в переменные: {set $tickets = $_modx->runSnippet('!getTickets', [ 'parents' => 0, 'totalVar' => 'totalMy', ])} {$_modx->getPlaceholder('totalMy')} {$tickets} Вопросы / Fenom и toPlaceholder 20 0 3
Василий Наумкин · 19 ноября 2015, 10:23 My quick example: <?php $tplWrapper = '@INLINE <ul>{{+output}}</ul>'; $tplYear = '@INLINE <li>{{+year}}<sup>({{+count}})</sup><ul>{{+resources}}</ul></li>'; $tplMonth = '@INLINE <li>{{+month}}<sup>({{+count}})</sup><ul>{{+resources}}</ul></li>'; $tpl = '@INLINE <li><a href="{{+uri}}">{{+pagetitle}}</a></li>'; $pdo = $modx->getService('pdoFetch'); $resources = $pdo->getCollection( 'modResource', array('published' => true, 'deleted' => false), array('parents' => 0, 'sortby' => 'createdon', 'sortdir' => 'DESC') ); $tree = array(); foreach ($resources as $resource) { $year = date('Y', $resource['createdon']); $month = date('m', $resource['createdon']); $tree[$year][$month][] = $resource; } $output = ''; foreach ($tree as $year => $months) { $tmp1 = ''; $count = 0; foreach ($months as $month => $resources) { $tmp2 = ''; foreach ($resources as $resource) { $tmp2 .= $pdo->getChunk($tpl, $resource); $count++; } $tmp1 .= $pdo->getChunk($tplMonth, array( 'month' => $month, 'count' => count($resources), 'resources' => $tmp2, )); } $output .= $pdo->getChunk($tplYear, array( 'year' => $year, 'count' => $count, 'resources' => $tmp1, )); } return $pdo->getChunk($tplWrapper, array('output' => $output)); Result: Вопросы / Archive 11 +7 10
Василий Наумкин · 11 октября 2015, 12:15 В методе getChunk его просто негде указывать, но можно написать свой сниппет, который будет запускать pdoTools, менять в нём tplPath и возвращать $pdoTools->getChunk(имячанка); Дальше всё примерно так же: {$chunk = $_modx->runSnippet('getChunk', [ 'chunk' => 'mychunk.tpl', 'tplPath' => '/my/path/' ])} Новые дополнения и их версии / [pdoTools] Версия 2.1 - улучшения Fenom 74 +1 2
Konstantin · 06 октября 2015, 12:30 Спасибо, на каком то сайте нашел функцию хорошую, получилось так: if($c->stmt->rowCount() > 0){ echo "Ok"; }else{ echo"No"; } Вопросы / Как сделать true и false при запросе UPDATE 6 0 1
Серьёзный · 31 августа 2015, 16:02 Спасибо, код плагина вотЖ <?php switch ($modx->event->name) { case 'OnUserSave': $tpl = $modx->getOption('emailTpl',$scriptProperties,'tpl.reg_user'); if ($mode == 'new') { $message = $modx->getChunk($tpl,array_merge($user->toArray(),$user->Profile->toArray())); $email = $modx->getOption('admin_email'); $modx->getService('mail', 'mail.modPHPMailer'); $modx->mail->set(modMail::MAIL_BODY,$message); $modx->mail->set(modMail::MAIL_FROM,'noreply@from.ru'); $modx->mail->set(modMail::MAIL_FROM_NAME,'Сервис уведомлений'); $modx->mail->set(modMail::MAIL_SUBJECT,'Новый пользователь'); $modx->mail->address('to',$email); $modx->mail->setHTML(true); if (!$modx->mail->send()) { $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo); } $modx->mail->reset(); } break; }на что нужно заменить admin_email чтобы туда вставлялся email человека, который регнулся? Заранее благодарю! Новые дополнения и их версии / Office 1.1.0 - улучшения авторизации 110 0 1
Николай · 29 августа 2015, 16:54 Делал очень давно, сейчас бы сделал по другому, но что есть, то есть ) Сниппет adsense <?php //спустя сколько символов искать перенос строки и вставлять рекламу? $nu = 3800; //Код рекламы $adsense = <<<HTML <div class="sense"> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:inline-block;width:728px;height:90px" data-ad-client="ca-pub-1233335915169539" data-ad-slot="2233378009"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div> HTML; $a = preg_replace('@([^^]{'.$nu.'}.*?)(\r?\n\r?\n|</p>)@', "\\1$adsense\\2", trim($content), 1); return $a;Вызов (в шаблоне вместо [[*content]])[[adsense? &content=`[[*content]]`]] Вопросы / Вставка рекламы после n-го абзаца 20 +1 5
Василий Наумкин · 12 августа 2015, 07:51 Возможность такая есть, хоть и не совсем очевидная: {if !$snippet = $_modx->cacheManager->get('cache_key')} {set $snippet = $_modx->runSnippet('pdoResources', [ 'parents' => 0, 'tpl' => '@INLINE {$id} - {$pagetitle}', 'showLog' => 1, ])} {set $null = $_modx->cacheManager->set('cache_key', $snippet, 1800)} {/if} {$snippet}С одной стороны — нужно самому управлять кэшем, а с другой стороны — можно произвольно задавать параметры кэширования: ключ, время кэширования (в примере полчаса) и т.д. Посмотреть этот кэш можно в /core/cache/default/. set $nullпри выставлении кэша нужно, чтобы не выводилась 1 при успешной работе $_modx->cacheManager->set. Новые дополнения и их версии / [pdoTools] Версия 2.1 - улучшения Fenom 74 +4 2
Павел Романов · 30 июня 2015, 11:31 Если у каждого ресурса, который Вы выводите, есть MIGX-таблица, то выводите ее в чанке через getImageList: <tr> <td class="day">[[+tv.tableTrips.day]] [[getImageList? &tvname=`tableTrips` &tpl=`@CODE: [[+day]]` &docid=`[[+id]]` ]]</td> [[getImageList? &tvname=`tableTrips` &tpl=`table-items` &docid=`[[+id]]` ]] </tr>Чанк «table-items»: <td class="clock">[[+field.clock]]</td> <td class="clock">[[+clock2]]</td> <td class="clock">[[+clock3]]</td> <td class="clock">[[+clock4]]</td> <td class="time">[[+time]]</td> <td class="price"> <span class="suma">[[+suma]]</span> <span class="glyphicon glyphicon-ruble"></span> </td>Ну или сниппет написать типа: <?php $d = array( 'docid'=>$id, 'tvname'=>'tableTrips', 'tpl'=> '@CODE: [[+day]]' ); $a = array( 'docid'=>$id, 'tvname'=>'tableTrips', 'tpl'=> 'table-items' ); $day = $modx->runSnippet('getImageList', $d); $all = $modx->runSnippet('getImageList', $a); return ' <td class="day">[[+tv.tableTrips.day]]'.$day.'</td> '.$all.' </tr> ';и вызывать в чанке: [[!snippetName? &id=`[[+id]]`]] Вопросы / Вывод таблицы Migx через pdoResources 3 +1 1
Сергей Шлоков · 03 апреля 2015, 18:54 Для описанной выше задачи (3-уровня, 3-й уровень — документ) можно сделать все проще. Алгоритм следующий: 1-й уровень — isfolder=1, parent=0 2-й уровень — isflolder=1, parent !=0 3-й уровень — isfolder=0. Ну а составить правильный фильтр дело техники. П.С. Я думаю, это решение будет пошустрее, чем предложенное выше. Вопросы / Определение уровня документа 8 0 1
Дмитрий Кондаков · 20 марта 2015, 18:07 title и date это что? нужно еще добавить class_key который равен Ticket везде Вопросы / Tickets + ImportX 4 +1 1
Возможно ли реализовать возможность предоплаты за доставку на сайте? В любом случаем стандартный флоу минишоп2 рассчитан на оплату по ссылке, т.е. чтобы получить информацию об оплате, нужно чтобы заказ существовал. Чтобы сделать иначе, нужно использ...
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 18 px. Да и текст комментариев можно таким сделать. Для меня лично 16 — мелковато на больших экранах (в комментариях вообще 15 ...
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска события поставить ниже чем orderUI, после
ImageOptimizer - WebP/AVIF и responsive <picture> для MODX 3 Дополнение доступно modstore.pro/packages/photos-and-files/imageoptimizer
Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeV... Добавил localizator3_default_language
msInShopNotify Начиная с версии 3.0.0-beta добавлена поддержка MiniShop3 Минимальные требования: PHP 8.4 MODX 3.2 MiniShop3
MaxNotify Обновление 1.2.0-pl (03.07.2026) — добавлены уведомления о заявках FormIt через hook-сниппет `maxNotifyFormIt`; — добавлены уведомления о заявках SendIt через hook-...
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurre... Да, планируется. Даже чуть больше, чем просто бонусная система)
1. Видим [[+totalMy]], значения нет
2. Видим [[!getTickets]], запускаем, он выставляет значение
3. Проверяем, что у нас осталось необработанного
4. Запускаемся еще раз и вот теперь только обрабатываем [[+totalMy]]
5. Ой, а чего это у меня так всё тормозит?
Fenom работает один раз и позволяет сохранять работу сниппетов в переменные:
Result:
Дальше всё примерно так же:
на что нужно заменить admin_email чтобы туда вставлялся email человека, который регнулся?
Заранее благодарю!
Сниппет adsense
Вызов (в шаблоне вместо [[*content]])
С одной стороны — нужно самому управлять кэшем, а с другой стороны — можно произвольно задавать параметры кэширования: ключ, время кэширования (в примере полчаса) и т.д.
Посмотреть этот кэш можно в /core/cache/default/.
при выставлении кэша нужно, чтобы не выводилась 1 при успешной работе $_modx->cacheManager->set.
Чанк «table-items»:
Ну или сниппет написать типа:
и вызывать в чанке:
Алгоритм следующий:
1-й уровень — isfolder=1, parent=0
2-й уровень — isflolder=1, parent !=0
3-й уровень — isfolder=0.
Ну а составить правильный фильтр дело техники.
П.С. Я думаю, это решение будет пошустрее, чем предложенное выше.
нужно еще добавить class_key который равен Ticket везде