Виталий Серый

Виталий Серый

С нами с 17 января 2013; Место в рейтинге пользователей: #107

Tickets сортировка по просмотрам

В сообществе не нашел, оставлю может кому-то по запросу пригодится.
&sortby=`views`
&select=`{"View":"COUNT(DISTINCT View.uid) as views"}`
&leftJoin=`{"View":{"class":"TicketView","alias":"View","on":"Ticket.id=View.parent"}}`
Ruslan Butakov
25 марта 2015, 09:31
modx.pro
15
2 897
+3

Организация рутины при свежей установке modx.

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

Скрипты можно запустить на свежей установке через консоль сервера, ну или вызывать в браузере страницу, предварительно отредактировав список опций.
По умолчанию все настройки рассчитаны на корень сайта example.com/packages.php
На локальном сервере php5-fpm nginx настроенном по инструкции Bezumkin все работает отлично.
Abu
Abu
23 марта 2015, 23:29
modx.pro
42
5 673
+11

Привязка встроенных объектов к кастомным

В силу ряда причин, мне потребовалось в свой кастомный объект, имеющий свою таблицу в бд и наследующий xPDOSimpleObject, добавить привязку к стандартному объекту MODX. Например, modUser.
Сделать это с помощью aggregates и composites в схеме моего кастомного объекта не получилось (собственно, добавление в схему связи с нативным modx-объектом ни к чему не привело — связи не появилось). Я полагаю, это свзяано с тем, что в схеме modx.mysql.schema.xml свзяи с моим кастомным объектом как не было, так и нет.
Антон Фомичёв
04 марта 2015, 10:42
modx.pro
5
2 046
+2

TvTable - таблица

Добрый день! Понадобилась мне тут табличка в виде Тв-параметра, в которой можно менять не только кол-во строк, но и столбцов. Поэтому migx не подходит (
В общем, было найдено решение, но как оказалось оно для EVO =(



В итоге взяла его за основу и переписала.
yani
02 марта 2015, 08:34
modx.pro
39
16 351
+14

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

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

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

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

Чанк Купить 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
40
5 578
+2

[update] Общая база товаров для разных контекстов

Очень долго не получалось заставить работать товары minishop2 на других контекстах, с выводом через сниппет нет проблем, а вот с ссылками и корзиной беда.
Использовал sendForward, с ним куча гемороя, но случайно наткнулся на вот это:
$modx->resource = $modx->getObject('modResource', $id);
$modx->request->prepareResponse();
exit();
but1head
17 февраля 2015, 12:45
modx.pro
26
4 950
+3

Бесплатная доставка если сумма total больше чем ..

Всем привет, подскажите, как можно сделать так чтобы доп. стоимость товара не засчитывалась, в случае если общая стоимость больше чем 15 000?
То если если человек набирает товаров больше чем на 15 к, то доставка бесплатная.
Николай Загумённов
04 февраля 2015, 05:03
modx.pro
5
1 535
+1

Время менять SHA-1 сертификаты

С сегодняшнего дня Google Chrome начал показывать мои SSL сертификаты SHA-1 как небезопасные.

Выглядит это так:
Сайты пока работают, проблем нет, но в будущем браузеры будут ругаться на эти сертификаты как на самоподписанные. Подробности можно прочитать на Хабре, а проверить свои сертификаты вот здесь.

Что же делать, если у вас старый SHA-1?
Василий Наумкин
24 января 2015, 11:00
modx.pro
4
3 688
+3

Авторизация админа во фронте

Добрый день! Когда то встречал это решение но сейчас не могу. Как сделать так чтобы администратор автоматически авторизовался на сайте когда авторизован в админке. Для авторизации использую office.
Заранее спасибо
wgame
23 января 2015, 11:21
modx.pro
5
2 903
0

Сниппет Declension для склонения слов

Предлагаю вашему вниманию небольшой сниппет для вывода склонения. Работает как фильтр вывода, использовать нужно примерно так:
[[+balls]] [[+balls:declension=`балл,балла,баллов`]]

Как видите, он применяется к любым тегам с числами, а в options нужно указать три формы слова (1 яблоко, 2 яблока и 10 яблок) для русского, или 2 (1 ticket, 2 tickets) для английского.

Для экспериментов можно повызывать сниппет с произвольными числами:
15 [[*id:input=`15`:declension=`яблоко,яблока,яблок`]]
Полный код под катом.
Василий Наумкин
22 января 2015, 06:44
modx.pro
28
7 340
+15