TITAN-UZ
С нами с 27 февраля 2014; Место в рейтинге пользователей: #80Оптимизации и тонкости работы с БД для больших магазинов на MODX Revolution
            Небольшое вступление
Данная статья не претендует на универсальное решение. Всегда пользуйтесь собственной головой. Всё описанное ниже актуально для MODX Revolution 2.8.3-pl, miniShop2 2.9.1-pl.
        
        
        
        
    Данная статья не претендует на универсальное решение. Всегда пользуйтесь собственной головой. Всё описанное ниже актуально для MODX Revolution 2.8.3-pl, miniShop2 2.9.1-pl.
mfilter2 - вывод значений фильтра в алфавитном порядке, с группировкой по первой букве
            Добрый день, давно не писал ничего, вот делюсь рабочим вариантом группировки значений фильтра по первой букве. 
Как это должно выглядеть:

        
        
        
        
    Как это должно выглядеть:

Как генерировать ALIAS из MENUTITLE вместо PAGETITLE?
            Друзья, подскажите пожалуйста, есть ли решение, настройка в MODX REVO, что бы alias создавался из menutitle, а если поле пустое то из pagetitle. Как это сделать? Дело в том что pagetitle всегда огромные, пишутся для SEO, и содержание такое сложное, когда translit отработает, то получается немного не то название простое по смыслу которое хотелось бы, а вот в menutitle всегда пишу короткое и простое название для меню. Хотелось бы из него брать заголовок для aliasa, а если пусто, то как обычно из pagetitle. Есть решения?
Есть плагин у меня на событие OnDocFormSave
Но он не работает почему то :( а должен.
        
        
        
    Есть плагин у меня на событие OnDocFormSave
if ($modx->event->name == 'OnDocFormSave') {
  if($menutitle != ''){
         $resource->set('alias',$menutitle);
    }else{
        $resource->set('alias',$pagetitle);
    }  
    $resource->save();
} Но он не работает почему то :( а должен.
[VCS] Обновление vscodemodx 0.0.3
            Привет! Я снова решил обновить дополнение для Visual Studio Code. Итак, что же нового?
        
        
        
        
    AnotherPages. Виртуальные страницы для СЕОшников и не только.
Скрипт подмены конфигов сайта на лету
            Надоело каждый раз при переносе сайтов между серверами прописывать конфиги в нескольких местах. Каждый раз напрягаешься, чтобы не перепутать. Написал скрипт, который делает это автоматически в зависимости от $_SERVER['HTTP_HOST'] сервера на котором он запускается.         
        
        
        
    Вывод карточек товара магазина в статьях на сайте
            Несколько недель назад от заказчика поступила такая хотелка — надо чтоб в статьи блога на сайте магазина можно было бы вставлять карточки товаров этого самого магазина. Обдумывал разные варианты, но в итоге, совместно с чатиком в телеграме пришел к такому решению:
        
        
        
        
    - В статье в нужном месте менеджер делает конструкцию такого вида: %%34,45,54%%, где 34,45 и 54 — айди товаров в магазине, таких вхождений может быть хоть сколько в статье.
 - На событие onWebPagePrerender вешается плагин, который с помощью регулярки выбирает все вхождения нашего паттерна, для каждого вхождения вызывает сниппет msProducts и последним шагом заменяет в контенте страницы паттерны соответствующими результатами сниппета.
 
[ReachGoal] Управление целями через админку
            ReachGoal — Настройка/управление целями для Яндекс.Метрики, Google.Analytics, Google tag manager через админку.

Компонент позволяет управлять целями из админки, цели добавляются на такие события как:
        
        
        
    
Компонент позволяет управлять целями из админки, цели добавляются на такие события как:
- Добавление в корзину
 - Удаление из корзины
 - Оформление заказа
 - Отправка форм через компонент AjaxForm (по id формы)
 
Автоматическое создание артикула для miniShop2 (с проверкой на уникальность)
            Три года назад этот вопрос поднимался вот здесь.
В результате есть работающий код:
Также есть вариант для TV генерирующий артикулы в числовом виде.
Ну а если этот плагин будет ещё проверять на уникальность артикула, ему вообще цены не будет ))
РЕШЕНИЕ (чтобы не копаться в комментах).
Артикулы получаются уникальные типа: 38125 — ID категории и товара
        
        
        
    В результате есть работающий код:
<?php
if ( $modx->event->name != "OnDocFormSave" || $resource->get('class_key') != 'msProduct' || !empty($resource->get('article')) ) return;
$resource->set('article', substr($resource->get('alias'),0,2).'-'.$resource->get('parent').$resource->get('id'));
$resource->save();
$resource->clearCache();Артикулы получаются типа: pl-38125Также есть вариант для TV генерирующий артикулы в числовом виде.
<?php
if ($modx->event->name == "OnDocFormSave") 
{    
    $tv = 'articul';
    $id = $resource->get('id');
    $parent = $resource->get('parent');
    $tvv = $resource->getTVValue($tv);
    
    if (empty($tvv))
    {
	   switch ($str=strlen($parent.$id))
       {
         case ($str <= 4): $article = mt_rand(0, 9).mt_rand(0, 9).$parent.$id; break;     
         case ($str == 5): $article = mt_rand(0, 9).$parent.$id; break;   
         case ($str == 6): $article = $parent.$id; break;
         case ($str >= 7): $article = substr($parent.$id, 1); break;
       }		
               $resource->setTVValue($tv, $article);
    }
}Просьба специалистам в PHP модифицировать первый код так, чтобы в miniShop2 можно было создавать артикулы в цифровом виде.Ну а если этот плагин будет ещё проверять на уникальность артикула, ему вообще цены не будет ))
РЕШЕНИЕ (чтобы не копаться в комментах).
Артикулы получаются уникальные типа: 38125 — ID категории и товара
<?php
if ( $modx->event->name != "OnDocFormSave" || $resource->get('class_key') != 'msProduct' || !empty($resource->get('article')) ) return;
$resource->set('article', $resource->get('parent').$resource->get('id'));
$resource->save();
$resource->clearCache();Также есть вариант артикула формата: Случайное число от 0 до 999-IDродитель-IDтовара<?php
if ( $modx->event->name != "OnDocFormSave" || $resource->get('class_key') != 'msProduct' || !empty($resource->get('article')) ) return;
// Создаем артикул формата Случайное число от 0 до 999-IDродитель-IDтовара
$resource->set('article', mt_rand(0, 999).$resource->get('parent').$resource->get('id'));
$resource->save();
$resource->clearCache();Благодарность iWatchYouFromAfar и Николай приветствуется ))        
            
                    
                    
                
