
TITAN-UZ
С нами с 27 февраля 2014; Место в рейтинге пользователей: #56mfilter2 - вывод значений фильтра в алфавитном порядке, с группировкой по первой букве
Добрый день, давно не писал ничего, вот делюсь рабочим вариантом группировки значений фильтра по первой букве.
Как это должно выглядеть:

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

[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 и Николай приветствуется )) Динамическое обновление цены товара miniShop2 по курсу доллара, через Cron.
Всем привет, друзья. Возникла у меня задача, сделать так, чтобы цены у товаров менялись в соответствии с курсом доллара, раз в сутки.
Как изменить rel="canonical" в "Человекопонятной навигации", выполненной по инструкции pdoPage?
Подскажите, как исправить следующее.
Воспользовался инструкцией "Человекопонятная навигация"
В результате при переходе на страницу отличную от первой в исходном коде страницы meta тег rel=«canonical» ведет не на каноническую страницу (как было до изменений без параметров page-№), а на текущую, и выглядит следующим образом:
Немного переделал под свои нужды URLы страниц пагинации, но сути не меняет, rel=«canonical» все равно ведет на текущую страницу:
Подскажите, как сделать, чтобы rel=«canonical» при нахождении на любой странице пагинации вел на первую страницу пагинации, вот так:
Вот мой код шаблона:
Заранее, благодарю!
Воспользовался инструкцией "Человекопонятная навигация"
В результате при переходе на страницу отличную от первой в исходном коде страницы 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);
}
// Если ресурс не был найден - ничего не делаем, возможно запрос поймает другой плагин
}
}
Заранее, благодарю!