TITAN-UZ

TITAN-UZ

С нами с 27 февраля 2014; Место в рейтинге пользователей: #56

Оптимизации и тонкости работы с БД для больших магазинов на MODX Revolution

Небольшое вступление

Данная статья не претендует на универсальное решение. Всегда пользуйтесь собственной головой. Всё описанное ниже актуально для MODX Revolution 2.8.3-pl, miniShop2 2.9.1-pl.

wfoojjaec
16 сентября 2021, 19:09
modx.pro
31
2 889
+26

mfilter2 - вывод значений фильтра в алфавитном порядке, с группировкой по первой букве

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


Евгений Webinmd
26 января 2021, 00:17
modx.pro
18
1 827
+27

Как генерировать ALIAS из MENUTITLE вместо PAGETITLE?

Друзья, подскажите пожалуйста, есть ли решение, настройка в MODX REVO, что бы alias создавался из menutitle, а если поле пустое то из pagetitle. Как это сделать? Дело в том что pagetitle всегда огромные, пишутся для SEO, и содержание такое сложное, когда translit отработает, то получается немного не то название простое по смыслу которое хотелось бы, а вот в menutitle всегда пишу короткое и простое название для меню. Хотелось бы из него брать заголовок для aliasa, а если пусто, то как обычно из pagetitle. Есть решения?

Есть плагин у меня на событие OnDocFormSave
if ($modx->event->name == 'OnDocFormSave') {
  if($menutitle != ''){
         $resource->set('alias',$menutitle);
    }else{
        $resource->set('alias',$pagetitle);
    }  
    $resource->save();
}


Но он не работает почему то :( а должен.
Роман
05 февраля 2020, 13:07
modx.pro
2
1 114
0

[VCS] Обновление vscodemodx 0.0.3

Привет! Я снова решил обновить дополнение для Visual Studio Code. Итак, что же нового?
Павел Бигель
15 ноября 2019, 00:06
modx.pro
2
1 305
+16

AnotherPages. Виртуальные страницы для СЕОшников и не только.

Компонент позволяет создавать неограниченное количество «виртуальных копий» ресурса, не создавая дубль самого ресурса. Бесплатно.


Алексей Шумаев
07 ноября 2019, 16:38
modx.pro
11
2 298
+21

Скрипт подмены конфигов сайта на лету

Надоело каждый раз при переносе сайтов между серверами прописывать конфиги в нескольких местах. Каждый раз напрягаешься, чтобы не перепутать. Написал скрипт, который делает это автоматически в зависимости от $_SERVER['HTTP_HOST'] сервера на котором он запускается.
Николай
25 октября 2019, 10:17
modx.pro
14
2 041
+13

Вывод карточек товара магазина в статьях на сайте

Несколько недель назад от заказчика поступила такая хотелка — надо чтоб в статьи блога на сайте магазина можно было бы вставлять карточки товаров этого самого магазина. Обдумывал разные варианты, но в итоге, совместно с чатиком в телеграме пришел к такому решению:
  1. В статье в нужном месте менеджер делает конструкцию такого вида: %%34,45,54%%, где 34,45 и 54 — айди товаров в магазине, таких вхождений может быть хоть сколько в статье.
  2. На событие onWebPagePrerender вешается плагин, который с помощью регулярки выбирает все вхождения нашего паттерна, для каждого вхождения вызывает сниппет msProducts и последним шагом заменяет в контенте страницы паттерны соответствующими результатами сниппета.
Под катом код плагина:
Антон
19 августа 2019, 01:30
modx.pro
7
1 464
+7

SocialNetworks

Компонент для вывода социальных сетей и других сервисов.

Админка



Aleksandr Huz
07 мая 2019, 15:28
modx.pro
11
2 301
+21

[ReachGoal] Управление целями через админку

ReachGoal — Настройка/управление целями для Яндекс.Метрики, Google.Analytics, Google tag manager через админку.



Компонент позволяет управлять целями из админки, цели добавляются на такие события как:
  • Добавление в корзину
  • Удаление из корзины
  • Оформление заказа
  • Отправка форм через компонент AjaxForm (по id формы)
Mikhail Tyrsyna
07 мая 2019, 13:47
modx.pro
6
5 643
+20

Автоматическое создание артикула для miniShop2 (с проверкой на уникальность)

Три года назад этот вопрос поднимался вот здесь.
В результате есть работающий код:
<?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 и Николай приветствуется ))
websfera
04 мая 2019, 11:44
modx.pro
2
1 330
-2