28 февраля 2021, 18:09 Супер спасибо! idx появился. Работает все как надо. Вопросы / Вывод номера итерации в сниппете 9 0
28 февраля 2021, 12:46 Да все верно, и цикл я нашел. Но вот передать отсюда $i в шаблон не хватает знаний public function format($records,$innerTpl,$outerTpl=null,$firstTpl=null,$lastTpl=null,$onOne='innerTpl',$cnt=0) { if (empty($records)) { return ''; } // A Chunk Name was passed $use_tmp_chunk = false; if (!$innerChunk = $this->modx->getObject('modChunk', array('name' => $innerTpl))) { $use_tmp_chunk = true; } $out = ''; $i = 1; foreach ($records as $r) { if (is_object($r)) $r = $r->toArray('',false,false,true); // Handle xPDO objects if ($cnt == 1) { // Real Chunk if ($singleChunk = $this->modx->getObject('modChunk', array('name' => $$onOne))) { $out .= $this->modx->getChunk($$onOne, $r); } // Formatting String else { $uniqid = uniqid() . $i; $singleChunk = $this->modx->newObject('modChunk', array('name' => "{tmp-inner}-{$uniqid}")); $singleChunk->setCacheable(false); $out .= $singleChunk->process($r, $$onOne); // <-- gulp. } break; } // First if ($i == 1) { // Real Chunk if ($singleChunk = $this->modx->getObject('modChunk', array('name' => $firstTpl))) { $out .= $this->modx->getChunk($firstTpl, $r); } // Formatting String else { $uniqid = uniqid() . $i; $singleChunk = $this->modx->newObject('modChunk', array('name' => "{tmp-inner}-{$uniqid}")); $singleChunk->setCacheable(false); $out .= $singleChunk->process($r, $firstTpl); } } // Last elseif ($i == $cnt) { // Real Chunk if ($singleChunk = $this->modx->getObject('modChunk', array('name' => $lastTpl))) { $out .= $this->modx->getChunk($lastTpl, $r); } // Formatting String else { $uniqid = uniqid() . $i; $singleChunk = $this->modx->newObject('modChunk', array('name' => "{tmp-inner}-{$uniqid}")); $singleChunk->setCacheable(false); $out .= $singleChunk->process($r, $lastTpl); } } else { // Use a temporary Chunk when dealing with raw formatting strings if ($use_tmp_chunk) { $uniqid = uniqid() . $i; $innerChunk = $this->modx->newObject('modChunk', array('name' => "{tmp-inner}-{$uniqid}")); $innerChunk->setCacheable(false); $out .= $innerChunk->process($r, $innerTpl); } // Use getChunk when a chunk name was passed else { $out .= $this->modx->getChunk($innerTpl, $r); } } $i++; } if ($outerTpl) { $props = array('content'=>$out); // Formatting String if (!$outerChunk = $this->modx->getObject('modChunk', array('name' => $outerTpl))) { $uniqid = uniqid(); $outerChunk = $this->modx->newObject('modChunk', array('name' => "{tmp-outer}-{$uniqid}")); $outerChunk->setCacheable(false); return $outerChunk->process($props, $outerTpl); } // Chunk Name else { return $this->modx->getChunk($outerTpl, $props); } } return $out; } Вопросы / Вывод номера итерации в сниппете 9 0
27 февраля 2021, 23:40 <?php /** * @name getPageAssets * @description Returns a list of images or other assets for the given page * * * USAGE EXAMPLES * * You can use the resize output filter to display different sizes. * * [[getPageAssets? &innerTpl=`<li><img src="[[+asset_id:resize=`300x500`]]" width="300" height="500" alt="[[+Asset.alt]]" /></li>`]] * * If using the "resize" output filter, you MUST call the snippet cached! Otherwise the "resize" filter attempts to operate on the placeholder * before it's set! * * No results: use a MODX output filter: * * [[getPageAssets:empty=`No images found`? ]] * Available Placeholders * --------------------------------------- * e.g. to format the original image: * <img src="[[+Asset.url]]" width="[[+Asset.width]]" height="[[+Asset.height]]" alt="[[+Asset.alt]]" /> * or the standard Thumbnail: * <img src="[[+Asset.thumbnail_url]]" width="[[+Asset.thumbnail_width]]" height="[[+Asset.thumbnail_height]]" alt="[[+Asset.alt]]" /> * * If needed, include the System Settings (double ++) : * [[++assman.thumbnail_width]] * [[++assman.thumbnail_height]] * e.g. <img src="[[+Asset.thumbnail_url]]" width="[[++assman.thumbnail_width]]" height="[[++assman.thumbnail_width]]" alt="[[+Asset.alt]]"/> * * * * * Parameters * ----------------------------- * @param integer $page_id of the page whose images you want. Defaults to the current page. * @param string $outerTpl Format the Outer Wrapper of List (Optional) * @param string $innerTpl Format the Inner Item of List * @param string $firstTpl Format the first Item of List (optional : defaults to innerTpl) * @param string $lastTpl Format the last Item of List (optional : defaults to innerTpl) * @param string $onOne which tpl to use if there is only 1 result: innerTpl, firstTpl, or lastTpl. Default: innerTpl * @param string $group optional: limit the results to the specified group * @param boolean $is_active Get all active records only * @param boolean $is_image if true, return only images, if false, only other assets. If not set, we get everything. * @param int $limit Limit the records to be shown (if set to 0, all records will be pulled) * @param string $sort which column should we sort by? Default: Product.seq * @param string $dir which direction should results be returned? ASC or DESC (optional) * * Variables * --------- * @var $modx modX * @var $scriptProperties array * * Usage * ------------------------------------------------------------ * To get all Images on certain page * [[!getPageAssets? &page_id=`[[*id]]` &outerTpl=`sometpl` &innerTpl=`othertpl` &firstCLass=`first` &is_active=`1` &limit=`0`]] * [[!getPageAssets? &page_id=`[[*id]]` &outerTpl=`sometpl` &innerTpl=`othertpl` &is_active=`1` &limit=`1`]] * * @package assman */ $core_path = $modx->getOption('assman.core_path', null, MODX_CORE_PATH.'components/assman/'); require_once $core_path .'vendor/autoload.php'; $Snippet = new \Assman\Snippet($modx); $Snippet->log('getProductImages',$scriptProperties); // Formatting Arguments: $innerTpl = $modx->getOption('innerTpl', $scriptProperties, '<li><img src="[[+Asset.url]]" width="[[+Asset.width]]" height="[[+Asset.height]]" alt="[[+Asset.alt]]" /></li>', true); $outerTpl = $modx->getOption('outerTpl', $scriptProperties, '<ul>[[+content]]</ul>', true); $firstTpl = $modx->getOption('firstTpl', $scriptProperties, $innerTpl, true); $lastTpl = $modx->getOption('lastTpl', $scriptProperties, $innerTpl, true); $onOne = $modx->getOption('onOne', $scriptProperties, 'innerTpl', true); $sort = $modx->getOption('sort', $scriptProperties, '`PageAsset`.`seq`', true); $dir = $modx->getOption('dir', $scriptProperties); // Default Arguments: $scriptProperties['is_active'] = (bool) $modx->getOption('is_active',$scriptProperties, 1); $scriptProperties['limit'] = (int) $modx->getOption('limit',$scriptProperties, null); $page_id = (int) $modx->getOption('page_id',$scriptProperties); // Just being safe in case this is run without a resource in context if (!$page_id) { if (isset($modx->resource) && is_object($modx->resource)) { $page_id = $modx->resource->get('id'); } } if (!$page_id) { return 'Page ID is required.'; } $criteria = array(); $criteria['page_id'] = $page_id; $criteria['PageAsset.is_active'] = true; if (isset($scriptProperties['is_image']) && $scriptProperties['is_image'] !== '') { $criteria['Asset.is_image'] = (bool) $scriptProperties['is_image']; } if (isset($scriptProperties['group']) && $scriptProperties['group'] !== '') { $criteria['PageAsset.group'] = $scriptProperties['group']; } $c = $modx->newQuery('PageAsset'); $c->where($criteria); if ($sort && $dir) { $c->sortby($sort,$dir); } elseif($sort) { $c->sortby($sort); } if ($scriptProperties['limit']) { $c->limit($scriptProperties['limit']); } $PageAsset = $modx->getCollectionGraph('PageAsset','{"Asset":{}}', $c); $cnt = count($PageAsset); if ($PageAsset) { return $Snippet->format($PageAsset,$innerTpl,$outerTpl,$firstTpl,$lastTpl,$onOne,$cnt); } $modx->log(\modX::LOG_LEVEL_DEBUG, "No results found",'','getPageAssets',__LINE__); return; Вопросы / Вывод номера итерации в сниппете 9 0
27 февраля 2021, 11:29 Да я заметил не особо популярный. Но нужны для ресурса изображения, а это самое подходящее из всего что нашлось. Полазил в сниппете но к сожалению не такой профи программист, чтобы разобраться как в цикле вывести номера. Смог только установить плейсхолдер с общим количеством элементов. Вопросы / Вывод номера итерации в сниппете 9 0
17 декабря 2018, 22:35 А что может быть настроено не так? первоначально то она работает… Во всех настройках копался, все проверил Вопросы / Tagmanager2 и пагинация 2 0
15 октября 2017, 13:34 хорошо, спасибо и на этих подсказках! А что используете? может оно лучше подойдет мне? Вопросы / Долгая обработка AjaxForm 12 0
15 октября 2017, 13:28 Не верю что все так сложно должно быть, разве нельзя команду которая сообщает об успехе в конце прописать в самом начале? пусть говорит что все ок и выполняет код дальше до конца. Я просто не знаю какая это команда и точную логику работы. Вопросы / Долгая обработка AjaxForm 12 0
15 октября 2017, 12:28 Какой вариант? ссылка ведет сюда же, что я попробовал и не получилось. Вопросы / Долгая обработка AjaxForm 12 0
14 октября 2017, 15:13 К сожалению так тоже не сработало( форма также зависает. message выводится другой не «Сообщение отправлено» На хостинге поставил галочку «Режим cgi», тоже не работает Вопросы / Долгая обработка AjaxForm 12 0
14 октября 2017, 12:46 Не помогло, сайт на beget, видимо сервер без php-fpm Вопросы / Долгая обработка AjaxForm 12 0
13 октября 2017, 15:21 Да так намного грамотнее, сделал все работает. Спасибо. Только вот из-за долгой обработки форма теперь жутко тормозит, нажимаешь кнопку отправить зависает на несколько секунд, как только приходит ответ от мегаплана тогда пишет что форма сообщение отправлено. Как можно сделать чтобы после обработки mail уже форма исчезала, а уже потом сайт обработка шла megaplan? Вопросы / Форма обратной связи FormIt и AjaxForm 4 0
13 октября 2017, 10:31 очередность хуков не при чем, оказывается нужно было прописать полный путь до php Вопросы / Форма обратной связи FormIt и AjaxForm 4 0
Возможно ли реализовать возможность предоплаты за доставку на сайте? У меня Робокасса, у них вроде есть 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... Да, планируется. Даже чуть больше, чем просто бонусная система)
Полазил в сниппете но к сожалению не такой профи программист, чтобы разобраться как в цикле вывести номера. Смог только установить плейсхолдер с общим количеством элементов.
А что используете? может оно лучше подойдет мне?
message выводится другой не «Сообщение отправлено»
На хостинге поставил галочку «Режим cgi», тоже не работает
Только вот из-за долгой обработки форма теперь жутко тормозит, нажимаешь кнопку отправить зависает на несколько секунд, как только приходит ответ от мегаплана тогда пишет что форма сообщение отправлено.
Как можно сделать чтобы после обработки mail уже форма исчезала, а уже потом сайт обработка шла megaplan?