Василий Столейков
С нами с 19 декабря 2012; Место в рейтинге пользователей: #25Чистим сайт от старых пакетов
При обновлении какого-нибудь компонента, MODX загружает новый пакет в папку /core/packages и добавляет запись в таблицу modx_transport_packages. Со временем в папке /core/packages накапливается приличное количество пакетов компонентов разных версий. И глядя на это разнообразие хочется избавиться от старых версий. И самое просто решение — удалить из папки не нужное. Решение простое, но неправильное. Так как в таблице остаются ссылки на эти пакеты и MODX их помнит. И иногда может и поругаться, что не нашел какой-то пакет. Чтобы не нарушать гармонии, лучше удалять их через специальный интерфейс.
Вывод новостей начинающиеся с букв/цифр и т.п
Пример:
site.ru/catalog/А
site.ru/catalog/Б
site.ru/catalog/В
Tickets - ТВ на основе селекта с мультивыборо
Создаю во фронтенде документ с помощью Tickets.
В чанк tpl.Tickets.form.create есть такая конструкция для полей с множественным выбором:
Если в чанке заменить
А надо чтоб в базе сохранилась запись вида
[[!TicketForm?
&tplFormCreate=`tpl.Tickets.form.create`
&allowedFields=`parent,pagetitle,content,metro,logo`
&allowFiles=`1`
]]
Все поля документа и ТВ-параметры сохраняются, кроме полей с множественным выбором… Как решить проблему?В чанк tpl.Tickets.form.create есть такая конструкция для полей с множественным выбором:
<div class="form-group">
<label for="ticket-metro">Метро</label>
<select name="metro[]" class="form-control" multiple="multiple" id="ticket-metro">
<option value="1" >1</option>
<option value="2" >2</option>
<option value="4" >4</option>
....
</select>
<span class="error"></span>
......
При таком чанке в базе сохраняется Array, если выбрать более 2 значений… Если в чанке заменить
<select name="metro[]"
на <select name="metro"
, сохраняется только одно значение…А надо чтоб в базе сохранилась запись вида
1||2||4
Я так понимаю надо элементы массива metro[] разделить разделителями ||, как это сделать? Алфавитный рубрикатор для ресурсов Modx Revo.
Результат работы тут: lab.nikann.ru/catalog#abc
За основу был взят: modx.ws/urok-modx-ajax-zagruzka-resursov
За основу был взят: modx.ws/urok-modx-ajax-zagruzka-resursov
Динамическая кнопка Купить / В корзине
Появилась необходимость реализовать динамическую кнопку Купить / В корзине.
Может кому-то пригодится.
Спасибо Алексею Наумову, Василию Наумкину за помощь в реализации.
Чанк Купить 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]]`]]
[update] Общая база товаров для разных контекстов
Очень долго не получалось заставить работать товары minishop2 на других контекстах, с выводом через сниппет нет проблем, а вот с ссылками и корзиной беда.
Использовал sendForward, с ним куча гемороя, но случайно наткнулся на вот это:
Использовал sendForward, с ним куча гемороя, но случайно наткнулся на вот это:
$modx->resource = $modx->getObject('modResource', $id);
$modx->request->prepareResponse();
exit();
bootstrap scrollspy и base href
Есть проблема при использовании bootstrap scrollspy www.tutorialrepublic.com/codelab.php?topic=bootstrap&file=scrollspy
При проставлении якорей типа
При проставлении якорей типа
<li><a href="#section-2">Section Two</a></li>
они все ведут на site.com/#section-2. При проставлении <li><a href="[[~[[*id]]]]#section-2">Section Two</a></li>
все ссылки начинают работать правильно, но перестает работать навигация scrollspy. Если убрать base_href из шапки, то весь сайт плывет. Менял link_tag_scheme — тоже безрезультатно. Как заставить приблуду работать? Авторизация админа во фронте
Добрый день! Когда то встречал это решение но сейчас не могу. Как сделать так чтобы администратор автоматически авторизовался на сайте когда авторизован в админке. Для авторизации использую office.
Заранее спасибо
Заранее спасибо
Как сделать кнопку редактировать в tickets?
Как сделать кнопку «редактировать» в tickets?
перерыл доки, так и не нашёл
для себя сохраню, спасибо Виталий Серый
[[!*createdby:is=`[[+modx.user.id]]`:then=`<a href="[[~id_документа_с_TicketForm?tid=`[[*id]]`]]">Редактировать</a>`]]
Как прикрепить изображение к комментарию
Как реализовать такие комменты:
fishspace.ru/places/to/venevskij/platnik-vorotnya/
fishspace.ru/places/to/venevskij/platnik-vorotnya/