TITAN-UZ

TITAN-UZ

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

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

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


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

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

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

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

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


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

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

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

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

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

SocialNetworks

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

Админка



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

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

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



Компонент позволяет управлять целями из админки, цели добавляются на такие события как:
  • Добавление в корзину
  • Удаление из корзины
  • Оформление заказа
  • Отправка форм через компонент AjaxForm (по id формы)
Mikhail Tyrsyna
07 мая 2019, 13:47
modx.pro
5
2 913
+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
1
953
-2

Динамическое обновление цены товара miniShop2 по курсу доллара, через Cron.

Всем привет, друзья. Возникла у меня задача, сделать так, чтобы цены у товаров менялись в соответствии с курсом доллара, раз в сутки.
Vlad Brise
17 декабря 2018, 23:01
modx.pro
21
2 163
+10

Как изменить rel="canonical" в "Человекопонятной навигации", выполненной по инструкции pdoPage?

Подскажите, как исправить следующее.
Воспользовался инструкцией "Человекопонятная навигация"

В результате при переходе на страницу отличную от первой в исходном коде страницы meta тег rel=«canonical» ведет не на каноническую страницу (как было до изменений без параметров page-№), а на текущую, и выглядит следующим образом:

<link rel="canonical" href="https://mysite.ru/category/page-2"/>
<link rel="canonical" href="https://mysite.ru/category/page-3"/>

Немного переделал под свои нужды URLы страниц пагинации, но сути не меняет, rel=«canonical» все равно ведет на текущую страницу:
<link rel="canonical" href="https://mysite.ru/category/page/2/"/>
<link rel="canonical" href="https://mysite.ru/category/page/3/"/>

Подскажите, как сделать, чтобы rel=«canonical» при нахождении на любой странице пагинации вел на первую страницу пагинации, вот так:
<link rel="canonical" href="https://mysite.ru/category/"/>

Вот мой код шаблона:
[[!pdoPage@MyPagination?
&element=`pdoResources`
&limit=`3`
&parents=`{$_modx->resource.id}`
&hideContainers=`1`
&fastMode=`1`
&sortby=`publishedon`
&sortdir=`ASK`
&pageLinkScheme=`[[+pageVarKey]]/[[+page]]/`
&includeTVs=`img_sh,alt_img_sh`
&tpl=`@FILE chunks/sh/sh.tpl` 
]]	  
	  
[[!+page.nav]]
Код плагина:
<?php
// Реагируем только на событие OnPageNotFound
if ($modx->event->name == 'OnPageNotFound') {
    // Определяем ключ запроса из настроек
    $req = $modx->getOption('request_param_alias');
    // Ловим нужный ключ страницы
    $pageVarKey = 'page';
    // Если в запросе повторяется наш шаблон "pageVarKey-page", то работаем дальше
    if (preg_match("#.*?(/{$pageVarKey}/(\d+))/#", $_REQUEST[$req], $matches)) {
        // Отрезаем ЧПУ строку и получаем точный адрес текущей страницы
        $uri = str_replace($matches[1], '', $matches[0]);

        // Ищем страницу по этому адресу
        $id = 0;
        // Сначала как есть, со слешем на конце
        if (!$id = $modx->findResource($uri)) {
            // Если не находим - то пробуем отрезать слэш и ищем повторно
            $id = $modx->findResource(rtrim($uri, '/'));
        }

        // Если ресурс найден
        if ($id) {
            // Добавляем номер страницы в глобальные массивы, чтобы pdoPage их там увидел
            $_GET[$pageVarKey] = $_REQUEST[$pageVarKey] = $matches[2];
            // И загружаем эту страницу
            $modx->sendForward($id);
        }
        // Если ресурс не был найден - ничего не делаем, возможно запрос поймает другой плагин
    }
}

Заранее, благодарю!
Дмитрий
16 декабря 2018, 05:16
modx.pro
1
2 087
0