Василий Наумкин · 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
Возможно ли реализовать возможность предоплаты за доставку на сайте? У меня Робокасса, у них вроде есть docs.robokassa.ru/ru/iframe
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 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 везде