Артём
С нами с 29 октября 2018; Место в рейтинге пользователей: #558Массив в системной переменной
Добрый день.
Нигде не могу найти информации, можно ли в системных настройках MODX создать параметр, содержащий массив, чтобы этот массив можно было потом получить в сниппете или плагине с помощью $modx->getOption()? И как эта запись должна выглядеть?
Нигде не могу найти информации, можно ли в системных настройках MODX создать параметр, содержащий массив, чтобы этот массив можно было потом получить в сниппете или плагине с помощью $modx->getOption()? И как эта запись должна выглядеть?
MiniShop2. Вывод во фронтенд цен товаров из корзины без скидки.
Добрый день.
Изучаю написание плагинов на примерах. Поставил себе задачу реализовать простейшую систему скидок от общей суммы заказа. Код плагина такой:
UPD В чанке корзины есть примерно такой код:
Я хочу передать в чанк некие данные, расчитанные в плагине. {$product.price} передаёт высчитанную цену как и положено. {$product.clear_price} не отображается. Как мне это сделать?
UPD2 Обнаружился странный глюк(?). Если я использую для передачи цены без скидки поле old_price товара корзины, то в чанке fenom передаёт её корректно в код {$product.old_price}, но… в зависимости от суммы заказа! Т.е. если сумма заказа более определённой цифры, передаётся вычисленная мной цена, если меньше, передаётся значение, которое хранится в поле old_price данного товара в каталоге. Сейчас код плагина у меня такой:
Изучаю написание плагинов на примерах. Поставил себе задачу реализовать простейшую систему скидок от общей суммы заказа. Код плагина такой:
<?php
switch ($modx->event->name) {
case 'msOnChangeInCart':
case 'msOnRemoveFromCart':
case 'msOnAddToCart':
$discount = 0;
$status = $cart->status();
$tmp = $cart->get();
//Cтавим изначальную цену без скидок
foreach($tmp as $_key=>$cartItem) {
if ($product = $modx->getObject('msProduct', $cartItem['id'])) {
$tmp[$_key]['clear_price'] = $product->get('price');
$tmp[$_key]['price'] = $product->get('price');
}
}
if($status['total_cost']>=6000) $discount = 5;
elseif($status['total_cost']>=3000) $discount = 3;
//Если есть скидка, пересчитываем цены на товары в $tmp
if($discount>0) {
foreach ($tmp as $_key=>$cartItem) {
if ($product = $modx->getObject('msProduct', $cartItem['id'])) {;
$tmp[$_key]['price'] = $product->get('price')*((100-$discount)/100);
}
}
}
//Записываем данные в корзину
$cart->set($tmp);
//$modx->log(xPDO::LOG_LEVEL_ERROR, print_r($cart->get(), true));
break;
}
В коде к товарам корзины я добавил дополнительное поле clear_price, в котором хранится цена товара без скидок. Как можно вывести его в чанк корзины msCart?UPD В чанке корзины есть примерно такой код:
{foreach $products as $product}
...{$product.clear_price}...
...{$product.price}...
{/foreach}
Я хочу передать в чанк некие данные, расчитанные в плагине. {$product.price} передаёт высчитанную цену как и положено. {$product.clear_price} не отображается. Как мне это сделать?
UPD2 Обнаружился странный глюк(?). Если я использую для передачи цены без скидки поле old_price товара корзины, то в чанке fenom передаёт её корректно в код {$product.old_price}, но… в зависимости от суммы заказа! Т.е. если сумма заказа более определённой цифры, передаётся вычисленная мной цена, если меньше, передаётся значение, которое хранится в поле old_price данного товара в каталоге. Сейчас код плагина у меня такой:
<?php
switch ($modx->event->name) {
case 'msOnAddToCart':
case 'msOnChangeInCart':
case 'msOnRemoveFromCart':
$discount = 0;
$status = $cart->status();
$tmp = $cart->get();
foreach ($tmp as $_key=>$cartItem) {
if($product = $modx->getObject('msProduct', $cartItem['id'])) {
$tmp[$_key]['old_price'] = $product->get('price'); // #3
if($status['total_cost']>=6000) $discount = 5; // #1
elseif($status['total_cost']>=3000) $discount = 3;// #2
$tmp[$_key]['price'] = $product->get('price')*((100-$discount)/100);
}
}
//Записываем данные в корзину
$cart->set($tmp);
$modx->log(xPDO::LOG_LEVEL_ERROR, print_r($cart->get(), true));
break;
}
Методом тыка пришёл к выводу, что строки #1 и #2 каким-то образом влияют на значение в {$product.old_price} в чанке. Причём проверка через $modx->log(xPDO::LOG_LEVEL_ERROR, print_r($cart->get(), true)); показывает, что значение old_price в строке #3 устанавливается, но почему-то не передаётся в чанк. Обязательные для заполнения поля в сниппете msOrder
Добрый день.
Я хочу изменить обязательные для заполнения поля в сниппете msOrder плагина MiniShop2. В частности хочу убрать поле email при оформлении заказа. В настройках этого нигде не нахожу. Это в принципе возможно сделать?
Я хочу изменить обязательные для заполнения поля в сниппете msOrder плагина MiniShop2. В частности хочу убрать поле email при оформлении заказа. В настройках этого нигде не нахожу. Это в принципе возможно сделать?
Не работает сниппет getComments плагина Tickets
Добрый день.
Столкнулся с проблемой следующего характера, в одном шаблоне вызываются одновременно сниппеты TicketComments и getComments.
Комментарии к статье:
Столкнулся с проблемой следующего характера, в одном шаблоне вызываются одновременно сниппеты TicketComments и getComments.
Комментарии к статье:
[[!TicketComments?
&tplCommentAuth=`commentAuth_ticketsTpl`
&tplCommentGuest=`commentGuest_ticketsTpl`
&tplCommentForm=`commentForm_ticketsTpl`
&tplComments=`commentsWrapper_ticketsTpl`
&tplLoginToComment=`commentLoginToComment_ticketsTpl`
&gravatarSize=`70`
]]
А в боковой панели я хочу вывести, к примеру, 10 последних комментариев ко всем статьям: Невозможно удалить комментарий в Quip
Добрый день.
Столкнулся с проблемой, над которой ломаю голову уже битый час. Есть система комментирования записей в блоге. Всё в принципе работает, кроме возможности удалить зарегистрированному пользователю его же комментарий. Вот сцыль на мою тестовую площадку. Что самое интересное, под регистрационной записью суперадмина я могу удалить любую запись. Под записью простого зарегистрированного пользователя — нет. Т.е. я понимаю, что нужно копать в сторону настройки прав доступа, но видно тямы не хватает, а информации в нете не нашёл. Не знаю, есть смысл приводить код? Ткните носом, пожалуйста.
ПыСы Всё-таки кину код вызова самого Quip'а:
Столкнулся с проблемой, над которой ломаю голову уже битый час. Есть система комментирования записей в блоге. Всё в принципе работает, кроме возможности удалить зарегистрированному пользователю его же комментарий. Вот сцыль на мою тестовую площадку. Что самое интересное, под регистрационной записью суперадмина я могу удалить любую запись. Под записью простого зарегистрированного пользователя — нет. Т.е. я понимаю, что нужно копать в сторону настройки прав доступа, но видно тямы не хватает, а информации в нете не нашёл. Не знаю, есть смысл приводить код? Ткните носом, пожалуйста.
ПыСы Всё-таки кину код вызова самого Quip'а:
[[!Quip@custom?
&thread=`thread_[[*id]]`
&replyResourceId=`[[*id]]`
&removeThreshold=`10000`
&allowRemove=`1`
&requireAuth=`1`
&tplComment=`tplComment`
&tplComments=`tplComments`
]]
Вложенные обратные кавычки в Inline-чанках
Добрый вечер.
Может не совсем внятно озаглавил. Как можно заэкранировать обратные кавычки внутри параметра сниппета? Например, есть код:
Заранее спасибо за идеи.
Может не совсем внятно озаглавил. Как можно заэкранировать обратные кавычки внутри параметра сниппета? Например, есть код:
[[!getImageList?
&tvname=`siteNews`
&tpl=`@CODE: <li>
<p>[[+text]]</p>
<div class="latest-posts-meta-container clearfix">
<div class="pull-right">
[[+date:strtotime:date=`%d.%m.%Y`]] //Вот тут кавычки нужно как-то заэкранировать
</div>
</div>
</li>`
]]
Писать отдельный чанк на пару-тройку строк не хочется. Как ни странно, что-то поисковики ничем не помогли, хотя ситуация мне кажется достаточно распространённой.Заранее спасибо за идеи.
Получение индекса элемента в массиве результатов сниппета msProducts
Добрый день, уважаемое сообщество.
Влюбился я тут на днях в modx, почти всё получается, но столкнулся с одним затыком.
Есть код:
Влюбился я тут на днях в modx, почти всё получается, но столкнулся с одним затыком.
Есть код:
<ul class="featured-list clearfix">
[[!msProducts?
&parent=`[[*id]]`
&where=`{"Data.favorite":1}`
&tpl=`featuredProducts_msTpl`
]]
</ul>
Чанк featuredProducts_msTpl:<li>
<div class="featured-product clearfix">
<figure>
{if $image?}
<img src="{$image}" alt="{$pagetitle}">
{else}
<img src="{$_modx->config.blank_item_image}">
{/if}
</figure>
<h5><a href="#">{$pagetitle}</a></h5>
<div class="ratings-container">
<div class="ratings">
<div class="ratings-result" data-result="{$itemPopularity}"></div>
</div>
</div>
<div class="featured-price">{$price}</div>
</div>
</li>
Мне нужно в <li>...</li>
выводить по 3 товара из всей выборки. Первое, что приходит в голову — получать индекс каждого товара в выборке, проверять на остаток деления на 3 и fenom'ом ставить теги <li>
и </li>
Что-то вроде такого:{if $index%3==0?}
<li>
{/if}
Так вот, не могу найти в документации, как можно получить индекс выводимого товара из массива всей выборки? Ткните носом, пожалуйста, где копать. Заранее спасибо.