des1gner

des1gner

С нами с 09 февраля 2019; Место в рейтинге пользователей: #1062

Максимальное количество товара

Здравствуйте. Подскажите пожалуйста, как сделать максимальное количество одного товара равным 1? То есть сделать так, чтобы пользователь не мог добавить в корзину товар больше одного раза
Vbif
27 апреля 2016, 17:25
modx.pro
5
3 772
0

Как я расширил стандартную таблицу пользователей

В последнее время довольно часто приходится делать различные стартапы на заказ, суть которых сводится к платному сервису, с регистрацией, личным кабинетом, ну и как следствие каталогом пользователей, представляющих ту или иную услугу.

Обычно использую office, который обеспечивает готовый личный кабинет из коробки с минимальными усилиями, он же позволяет сохранять все в базу, пользователей. Но вот беда, полей катастрофически не хватает. Логичным решением было создавать страницы для каждого пользователя, и добавлять сколько угодно TV. Так я и делал, но решил заморочиться и не дублировать страницы, а расширить таблицу пользователей и работать с ней напрямую, как с ресурсом.

Вот что я сделал:
Николай Савин
30 марта 2016, 14:48
modx.pro
25
5 814
+6

AdminTools 1.4.0 Авторизация в админке через email

В новой версии можно авторизоваться в админке просто указав имя пользователя или email. На почту придет ссылка, кликнув на которую в течение определённого времени произойдет авторизация в админке.

Сергей Шлоков
24 января 2016, 16:00
modx.pro
1
2 804
+7

Расширение любых таблиц MODX

В очередной раз понадобилось изменить таблицу сайта, менять которую не предусмотрено.

Что обычно люди делают в таких случаях? Верно, редактируют ядро или нужный компонент, и больше их не обновляют. Но ведь это неправильно, и можно решить вопрос иначе.

Пишем обычный плагин, выставляем для него событие OnMODXInit и меняем модель для нужных классов системы или дополнений. Например, я добавил id менеджера в заказ miniShop2:
Василий Наумкин
16 ноября 2015, 07:07
modx.pro
117
11 665
+11

[xButtons] Сохраняем элементы в файл

Решение вытекло из моей доработки Console. В диалоге редактирования элементов появляется кнопка с пунктами меню «Сохранить в файл», «Загрузить из файла», «Сохранить на ПК» и «Загрузить с ПК». Разработчикам, возможно, пригодится.
Сергей Шлоков
04 сентября 2015, 05:47
modx.pro
3
2 952
+5

Создание мультисайта на MODX REVO

Лучше поздно, чем никогда. Как и обещал https://modx.pro/help/5194/ пишу про создание мультисайта на MODX REVO. Выкладываю в блог Готовые решения, т.к. в статье есть чуть-чуть кода.

Смысл всей затеи — упростить поддержку сайтов.

Под поддержкой понимаются любые действия связанные с работой сайта:
— размещение контента
— технические доработки сайта (программирование, верстка)
— консультирование модераторов, сеошников и т.д.
— бэкапы и восстановление информации

Кроме того, для упрощения работы необходимо внедрить стандарты, чтобы упростить рутину. Звучит громко, но на самом деле все просто — по «узким» моментам единожды принимаем какое-то решение и дальше просто поступаем по образцу, чтобы не тратить время на изобретение велосипедов. По принятому решению пишем короткую заметку в Евернот, чтобы потом когда понадобится можно было быстро найти, на чем основывалось решение.

В таких «стандартах» у меня:
— ресайз картинок с примерами кода
— настройки галереи fancybox с примерами кода
— создание файловых архивов
— названия чанков, например почти везде у меня есть чанки HEADER.site1, FOOTER.site1, ASIDE.site1 (в названии используем название контекста).
— и т.д. и т.п.

Т.е. единожды продумываем тонкости и решаем, что будем делать именно так и никак иначе. В дальнейшем это позволит избежать бардака и существенно ускорит процесс переноса существующих сайтов в мультисайт или разработку новых сайтов.

Иван Чуваев
06 июля 2015, 02:48
modx.pro
41
23 239
+9

Динамическая кнопка Купить / В корзине

Появилась необходимость реализовать динамическую кнопку Купить / В корзине.

Может кому-то пригодится.

Спасибо Алексею Наумову, Василию Наумкину за помощь в реализации.

Чанк Купить 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]]`]]
Klike
17 февраля 2015, 13:36
modx.pro
43
6 408
+2

Как не хакать сторонние классы

Бывает, что вы используете какой-то сниппет или компонент, и он немного вас не устраивает. Вам нужно поправить буквально пару строк, но вы понимаете, что при обновлении эти измения пропадут.

Что же делать?
Все просто — нужно расширить сторонний класс своими методами. По сути, это очень похоже на «классные процессоры», только без процессоров и использовать можно везде — это стандартная возможность ООП.
Василий Наумкин
30 июня 2012, 12:21
modx.pro
54
8 722
0