Klike
С нами с 14 января 2015; Место в рейтинге пользователей: #42Super MODx SEO-strict +ускоряем фронтенд
            Михаил задал вопрос про канонизацию урлов в MODx.
Писал ему ответ, но понял, что он слишком большой. Поэтому переписал в статью.
Поехали.
        
        
        
    Писал ему ответ, но понял, что он слишком большой. Поэтому переписал в статью.
Поехали.
Сохранить вид каталога при переходе в новый раздел
            Приветствую! 
При просмотре категории, у посетителя есть три варианта вида каталога.
Может кто сталкивался, как оставить вид при переходе в другую категорию? Чтобы не переключаться каждый раз на ту, что удобна для посетителя.
Спасибо!
        
        
        
    При просмотре категории, у посетителя есть три варианта вида каталога.
Может кто сталкивался, как оставить вид при переходе в другую категорию? Чтобы не переключаться каждый раз на ту, что удобна для посетителя.
Спасибо!
Добавить ID ресурса в alias (url)
            Доброго времени суток!
Можно ли добавить ID ресурса в alias страницы?
К примеру сайт.ру/каталог/раздел-5/товар-12
Или же как можно делать проверку на повторяющиеся alias при автоматическом создании страниц с одинаковым названием?
К примеру, добавлять цифры или id ресурса, если такой alias уже существует.
Спасибо!
        
        
        
    Можно ли добавить ID ресурса в alias страницы?
К примеру сайт.ру/каталог/раздел-5/товар-12
Или же как можно делать проверку на повторяющиеся alias при автоматическом создании страниц с одинаковым названием?
К примеру, добавлять цифры или id ресурса, если такой alias уже существует.
Спасибо!
Повторяющиеся заголовки при синхронизации с 1С
            Структура категорий и товаров в 1С такая:
Как поправить данный конфликт, если не включать «Использовать вложенные URL»?
Может кто сталкивался с подобным?
        
        
        
    - Канцелярия 1
- Ручки
- Parker
 - Бренд 2
 
 
 - Ручки
 - Канцелярия 2
- Ручки
- Parker 2
 - Бренд 3
 
 
 - Ручки
 
Как поправить данный конфликт, если не включать «Использовать вложенные URL»?
Может кто сталкивался с подобным?
Вид списка товаров таблицей
            Поздравляю всех мужчин с праздником!
Есть три вида списка товаров: списком, сеткой, таблицей.
С первыми двумя проблем не возникло, для третьего вида необходимо было скрывать правый столбец с информацией, чтобы таблице больше места было. С этим тоже всё достаточно легко:
        
        
        
    Есть три вида списка товаров: списком, сеткой, таблицей.
С первыми двумя проблем не возникло, для третьего вида необходимо было скрывать правый столбец с информацией, чтобы таблице больше места было. С этим тоже всё достаточно легко:
$('a.three').click(function() {
	  $('.span9').removeClass('col-xs-9').addClass('col-xs-12');
	  $('.rightBlock').addClass('hidden');Но вот результаты обернуть в код таблицы, так и не получилось, пытался так: $("#mse2_results").wrapInner("<table class='table table-bordered'><thead><tr class='gray'><th class='text-center'>Артикул</th><th class='text-center'>Наименование</th><th class='text-center'>Цена</th><th class='text-center'>Количество</th><th class='text-center'>В корзину</th></tr></thead><tbody>")Но как-то тихо всё. Буду рад любой подсказке!        Оптовые цены свыше 10 000руб.
            Добрый день, необходимо реализовать функционал, когда товаров в корзине на сумму больше 10 000руб., начинаются учитываться оптовые цены товаров. В PHP не силён, нашёл такой пример, там есть вариант плагина, пробовал его адаптировать под себя, не получилось:
Кто подскажет, что делаю не так?
И хотелось бы динамическое обновление цен, в данном случае должно обновляться с перезагрузкой.
        
        
        
    <?php
switch ($modx->event->name) {
    case 'msOnChangeInCart': case 'msOnAddToCart': case 'msOnRemoveFromCart':
        $miniShop2 = $modx->getService('minishop2','miniShop2',
        	MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties);
        if (!($miniShop2 instanceof miniShop2)) return '';
        
        // Инициализируем класс в текущий контекст
        $miniShop2->initialize($modx->context->key, $scriptProperties);
        $total_cost = $miniShop2->cart->status()['total_cost'];
        $tmp = $miniShop2->cart->get();
        if ($total_cost > 10000) { // если 10000руб и более – оптовые цены, в интернет-магазине оптовые цены забиваются в поле old_price
            foreach ($tmp as $key1 => $value) {
                if ($product = $modx->getObject('msProduct', $value['id'])) {
                	$realPrice = $product->get('price');
                	$optPrice = $product->get('old_price'); // вместо old_price можно указать любое другое поле товара
                	$tmp[$key1]['price'] = $optPrice;
                }
            }
        }
        else {
            foreach ($tmp as $key1 => $value) {
                if ($product = $modx->getObject('msProduct', $value['id'])) {
                	$realPrice = $product->get('price');
                	$tmp[$key1]['price'] = $realPrice;
                }
            }
        }
        $miniShop2->cart->set($tmp);
        break;
} Кто подскажет, что делаю не так?
И хотелось бы динамическое обновление цен, в данном случае должно обновляться с перезагрузкой.
Алфавитный рубрикатор для ресурсов Modx Revo.
            Результат работы тут: lab.nikann.ru/catalog#abc
За основу был взят: modx.ws/urok-modx-ajax-zagruzka-resursov
        
        
        
    За основу был взят: modx.ws/urok-modx-ajax-zagruzka-resursov
Три вида вывода списка товаров в категории
            Добрый день! 
Есть три варианта отображения категории товара.
(Обновляется динамически, как и по умолчанию в стандартной версии miniShop2+mSearch2)
Тема Bootstrap.
Два из них – Две колонки (ширина 9 [col-md-9] / ширина 3 [col-md-3])
В ширине 9 – Вид списком либо вид Сеткой,
В ширине 3 – доп.информация.
С этим трудностей не возникло.
Третий вариант на полную ширину (на 12 [col-md-12]) вид Таблицей.
Вопрос: Как без обновления страницы убирать колонку с Оп.Информацией и Ширину 9 [col-md-9] соответственно превращать в ширину 12[col-md-12]?
Вообще, было бы здорово использовать два &tplOuter (Один под первые два вида, второй – под третий)
        
        
        
    Есть три варианта отображения категории товара.
(Обновляется динамически, как и по умолчанию в стандартной версии miniShop2+mSearch2)
Тема Bootstrap.
Два из них – Две колонки (ширина 9 [col-md-9] / ширина 3 [col-md-3])
В ширине 9 – Вид списком либо вид Сеткой,
В ширине 3 – доп.информация.
С этим трудностей не возникло.
Третий вариант на полную ширину (на 12 [col-md-12]) вид Таблицей.
Вопрос: Как без обновления страницы убирать колонку с Оп.Информацией и Ширину 9 [col-md-9] соответственно превращать в ширину 12[col-md-12]?
Вообще, было бы здорово использовать два &tplOuter (Один под первые два вида, второй – под третий)
[[!mFilter2?
	&limit=`10`
	&element=`msProducts`
	&filters=`
		parent:categories,
		ms|tmark:default,
		ms|type1:default,
		ms|color1:default
		`
	&tpls=`tpl.msProducts.row,tpl.msProducts.row2,tpl.msProducts.row3`
	&class=`msProduct`
	&tplOuter=`tpl.mFilter2.outer.2`
]]Может плохо описал, не понятно. Но постарался подробно изложить ситуацию.        Динамическая кнопка Купить / В корзине
            Появилась необходимость реализовать динамическую кнопку Купить / В корзине. 
Может кому-то пригодится.
Спасибо Алексею Наумову, Василию Наумкину за помощь в реализации.
Чанк Купить 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]]`]]