Алексей
С нами с 16 июля 2015; Место в рейтинге пользователей: #378Динамическая кнопка Купить / В корзине
Появилась необходимость реализовать динамическую кнопку Купить / В корзине.
Может кому-то пригодится.
Спасибо Алексею Наумову, Василию Наумкину за помощь в реализации.
Чанк Купить 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]]`]]
Работа с prepareSnippet
Доброго времени суток!
Пытаюсь на своем сайте сделать все правильно, а именно вызывать pdoPage сразу с шаблоном, и обрабатывать данные заранее, через prepareSnippet. Но самостоятельно, у меня ничего не выходит — не хватает опыта. Подскажите, что делаю неправильно.
Пытаюсь на своем сайте сделать все правильно, а именно вызывать pdoPage сразу с шаблоном, и обрабатывать данные заранее, через prepareSnippet. Но самостоятельно, у меня ничего не выходит — не хватает опыта. Подскажите, что делаю неправильно.
Отправляем заголовки Last-Modified и Not Modified
Написал небольшой плагинчик для отправки браузеру заголовка Last-Modified и, если браузер спросит If modified since — ответа 304 Not Modified
Вызов msCart через ajax и совместно с msMiniCart
Проблемная страничка new.kami-kadze.ru/sets/
Собственно имеем:
На странице по умолчанию вызывается только msMiniCart.
При клике на msMiniCart аяксом в попап подгружается msCart. В DOM отлично встраивается элемент с id=«msCart» и правильным содержимым корзины.
Однако при добавлении новых товаров обновляется только миникорзина. Содержимое полной корзины не меняется.
Пробовал вызов без аякса — аналогичная проблема.
Перерыл все похожие вопросы и ничего не решилось
Собственно имеем:
На странице по умолчанию вызывается только msMiniCart.
При клике на msMiniCart аяксом в попап подгружается msCart. В DOM отлично встраивается элемент с id=«msCart» и правильным содержимым корзины.
Однако при добавлении новых товаров обновляется только миникорзина. Содержимое полной корзины не меняется.
Пробовал вызов без аякса — аналогичная проблема.
Перерыл все похожие вопросы и ничего не решилось
Про Vagrant + готовый образ для работы с MODX
На днях рассказали про очень интересный проект — Vagrant
Vagrant (англ. бродяга) — это обёртка для удобного управления виртуальной машиной. Он работает с собственными образами (*.box), для которых предъявляются определённые требования.
Если коротко: то вы скачиваете готовый образ, инициализируете и запускаете. Это позволяет вам запустить новый виртуальный сервер секунд за 30.
При каждой инициализации создаётся отдельная виртуальная машина в VirtualBox и вы не меняете исходный образ. То есть, вы можете запускать сколько угодно виртуальных машин, делать с ними что угодно, потом удалять и создавать новые.
Исходный образ, как бы, распаковывается и создаётся копия на вашей машине.
Самое приятное, что текущую машину можно запаковать обратно в новый box, скопировать на флешку и подарить другу, или еще кому-то. Он так же запустит её у себя в Vagrant и сразу сможет работать.
Vagrant (англ. бродяга) — это обёртка для удобного управления виртуальной машиной. Он работает с собственными образами (*.box), для которых предъявляются определённые требования.
Если коротко: то вы скачиваете готовый образ, инициализируете и запускаете. Это позволяет вам запустить новый виртуальный сервер секунд за 30.
При каждой инициализации создаётся отдельная виртуальная машина в VirtualBox и вы не меняете исходный образ. То есть, вы можете запускать сколько угодно виртуальных машин, делать с ними что угодно, потом удалять и создавать новые.
Исходный образ, как бы, распаковывается и создаётся копия на вашей машине.
Самое приятное, что текущую машину можно запаковать обратно в новый box, скопировать на флешку и подарить другу, или еще кому-то. Он так же запустит её у себя в Vagrant и сразу сможет работать.
Про xPDO
Эта заметка назревала уже очень давно, полгода минимум. Вокруг замечательного MODX Revolution сломано много копий. Ходят слухи, что он «тормозной», «прожорливый» и «неповоротливый». И главным виновником всегда называют xPDO.
Конечно, это чушь и цель заметки — развенчание мифов. Закрыть, наконец, вопрос с «тормозами» и «прожорливостью». Показать, насколько Revolution удобен и гибок, что он позволяет работать как через ORM xPDO, так и без него — через обычный PDO.
Конечно, это чушь и цель заметки — развенчание мифов. Закрыть, наконец, вопрос с «тормозами» и «прожорливостью». Показать, насколько Revolution удобен и гибок, что он позволяет работать как через ORM xPDO, так и без него — через обычный PDO.
Сервер: резервное копирование и выгрузка в Dropbox
Первым делом всегда-всегда-всегда нужно заботиться о резервной копии. Вариантов огромное множество, но лично я написал для себя простой и понятный скрипт для ежесуточного запаковывания данных с любого сервера, в том числе и shared-хостинга.
Основы Ajax
Ajax — это метод асинхронного запроса к серверу. Текущая страница html с помощью скрипта обращается к серверу с определенным вопросом, получает ответ и что-то с ним делает. Обычно — вставляет результат в страницу.