
Александр
С нами с 27 октября 2014; Место в рейтинге пользователей: #1303Как ускорить выборку?
Всем привет!
Работаю над магазином с 50 000 товаров. Встал вопрос о скорости выборки.
Использую msProducts с prepareSnippet, но результат не устраивает.
Вот лог:
Работаю над магазином с 50 000 товаров. Встал вопрос о скорости выборки.
Использую msProducts с prepareSnippet, но результат не устраивает.
Вот лог:
Динамическая кнопка Купить / В корзине
Появилась необходимость реализовать динамическую кнопку Купить / В корзине.
Может кому-то пригодится.
Спасибо Алексею Наумову, Василию Наумкину за помощь в реализации.
Чанк Купить tplOut:
Чанк В корзине tplIn:
Скрипт (требуется подключенный jQuery)
Сниппет myButton:
Кнопка вызывается таким образом:
Может кому-то пригодится.
Спасибо Алексею Наумову, Василию Наумкину за помощь в реализации.
Чанк Купить tplOut:
<button type="submit" class="btn btn-cart btn-primary" name="ms2_action" value="cart/add">
Купить
</button>
<button type="submit" class="btn btn-checkout btn-success hidden" name="ms2_action" value="cart/add">
В корзине
</button>
Чанк В корзине tplIn:
<button type="submit" class="btn btn-checkout btn-success" name="ms2_action" value="cart/add">
В корзине
</button>
Скрипт (требуется подключенный jQuery)
if (typeof(miniShop2) != 'undefined') {
// кнопки В корзину/Оформить
miniShop2.Callbacks.Cart.add.response.success = function(response) {
miniShop2.Order.getcost();
miniShop2.sendData.$form.find('.btn-cart').addClass('hidden');
miniShop2.sendData.$form.find('.btn-checkout').removeClass('hidden');
};
miniShop2.Callbacks.Cart.remove.response.success = function() {
miniShop2.sendData.$form.find('.btn-cart').removeClass('hidden');
miniShop2.sendData.$form.find('.btn-checkout').addClass('hidden');
};
}
Сниппет myButton:
<?php
// Параметры
$idd = $modx->getOption('idd', $scriptProperties, $modx->resource->id);
$tplIn = $modx->getOption('tplIn', $scriptProperties, 'tplIn'); //Можно писать так: ('tplIn', $scriptProperties, '@INLINE Товар в корзине, кол-во – [[+count]], цена = [[+price]].');
$tplOut = $modx->getOption('tplOut', $scriptProperties, 'tplOut'); // '@INLINE Товара нет в корзине.'
// Классы для работы
$pdo = $modx->getService('pdoTools');
$miniShop2 = $modx->getService('minishop2');
$miniShop2->initialize($modx->context->key, $scriptProperties);
$cart = $miniShop2->cart->get();
// Поехали
$found = false;
foreach($cart as $product) {
if ($product['id'] == $idd) {
$found = $product;
break;
}
}
return $found
? $pdo->getChunk($tplIn, $found)
: $pdo->getChunk($tplOut);
Кнопка вызывается таким образом:
[[!myButton? &idd=`[[+id]]`]]
Выборка pdoPage where по дате
Добрый день. В тикете можно указать дату мероприятия через бекенд, вот выборка, которая показывает сегодняшние мероприятия:
[[!pdoPage?
&element=`getTickets`
&includeTVs=`program-start`
&tpl=`program-list-ru`
&sortby=`program-start` &sortbyTV=`program-start` &sortdirTV=`ASC` &sortby=``
&where=`{«program-start:LIKE»:"%[[!today]]%"}`
]] — тут всё ок
Как сделать, чтобы была выборка по сегодняшним и предстоящим?
Пробовал:
[[!pdoPage?
&element=`getTickets`
&includeTVs=`program-start`
&tpl=`program-list-ru`
&sortby=`program-start` &sortbyTV=`program-start` &sortdirTV=`ASC` &sortby=``
&where=`({«program-start:LIKE»:"%[[!today]]%"}) AND ({«program-start RLIKE '[[:>:]]%[[!today]]%'»}) `
]]
[[!pdoPage?
&element=`getTickets`
&includeTVs=`program-start`
&tpl=`program-list-ru`
&sortby=`program-start` &sortbyTV=`program-start` &sortdirTV=`ASC` &sortby=``
&where=`{«program-start:LIKE»:"%[[!today]]%"}`
]] — тут всё ок
Как сделать, чтобы была выборка по сегодняшним и предстоящим?
Пробовал:
[[!pdoPage?
&element=`getTickets`
&includeTVs=`program-start`
&tpl=`program-list-ru`
&sortby=`program-start` &sortbyTV=`program-start` &sortdirTV=`ASC` &sortby=``
&where=`({«program-start:LIKE»:"%[[!today]]%"}) AND ({«program-start RLIKE '[[:>:]]%[[!today]]%'»}) `
]]