Андрей Шевяков
С нами с 28 сентября 2016; Место в рейтинге пользователей: #108mfilter2 — создание фильтра по алфавиту и вывод результатов по первой букве поля pagetitle
Всем привет! Столкнулся с задачей реализовать фильтрацию по первой букве ресурса (из поля pagetitle) в моём случае это фильтрация пород собак, но готового решения не нашёл. Вдохновился документацией и очень похожим решением в этой статье. Может кому будет полезно.
Яндекс.Карты. Меняем метку при наведении нестандартным способом расширяя содержимое метки контентом!
Делюсь наработкой, на которую потратил несколько часов пока бился над решением проблемы. Может кому пригодится, да и для себя чтобы не забыть (пока память свежа изложить полученные знания в шпаргалку).
Понадобилось реализовать поведение карты чтобы при наведении на метку к метке справа добавлялся свой блок с содержимым (так называемый iconContentLayout). Пример:
Не нашел нигде как сделать так. В официальной документации было только примеры изменения иконки метки через замену iconImageHref
Понадобилось реализовать поведение карты чтобы при наведении на метку к метке справа добавлялся свой блок с содержимым (так называемый iconContentLayout). Пример:
Не нашел нигде как сделать так. В официальной документации было только примеры изменения иконки метки через замену iconImageHref
phpthumbon в сниппете php
Здравствуйте! В сниппете нужно обрезать картинки, есть ли возможность применить модификатор phpthumbon в коде php? каков синтаксис?
mFilter2 как убрать параметры ysclid (и другие) из ссылок и как заставить работать постраничную навигацию и кнопку "Показать еще"
Вчера пообещал немного написать про два вопроса, возникающие при работе mFilter:
1. Лишние параметры типа ysclid в постраничной навигации.
2. Как заставить совместно работать и постраничную навигацию и кнопку «Показать еще» при использовании mFilter2 в режиме ajaxMode = button.
Все, что я пишу ниже, не уверен, что относится к последней версии mSearch2. На моем сайте все механизмы работают, есть custom код в компонентах и обновляться я не хочу)))
1. Лишние параметры типа ysclid в постраничной навигации.
2. Как заставить совместно работать и постраничную навигацию и кнопку «Показать еще» при использовании mFilter2 в режиме ajaxMode = button.
Все, что я пишу ниже, не уверен, что относится к последней версии mSearch2. На моем сайте все механизмы работают, есть custom код в компонентах и обновляться я не хочу)))
[PhpConsole] - консоль для выполнения php кода в админке сайта
[PhpConsole] — Компонент позволяет выполнить php код в панели управления сайта.
Не знаю как вам, а мне очень не хватает консоли от Николая Ланца в MODX 3. Которая работала на отдельной странице, была проста и в меру функциональна и этим она и нравилась!
Пакет на на гитхаб
Дополнение в репозитории
Не знаю как вам, а мне очень не хватает консоли от Николая Ланца в MODX 3. Которая работала на отдельной странице, была проста и в меру функциональна и этим она и нравилась!
Пакет на на гитхаб
Дополнение в репозитории
[СДЕЛАЙ САМ] Импорт товаров MiniShop2 из xml. Версия 2.0
Приветствую, коллеги. почти год назад я выложил эту заметку, но за это время пришло понимание, что скрипт мягко говоря «неидеальный»: он работает медленно, импортирует всё подряд, запуск требует ежеминутного выполнения задания по крон. В новой версии всего этого нет, а за идею для улучшения спасибо @crystaldaking.
[ExtSession] - Расширение стандартных сессий для MODX3
[ExtSession] — Компонент расширяет класс modSession, добавляет следующие поля в родную таблицу сессий.
Доступен вывод информации сессии в админке сайта
Можно удалить как отдельную сессию, так и грохнуть все сразу.
Дополнение на гитхаб
Дополнение в репозитории
Подробней под катом
user_bot - указатель на сессию бота
user_id - идентификатор пользователя
user_ip - ip адрес пользователя
user_agent - user-agent пользователя
дает возможность гибко управлять временем жизни сессии ботов, авторизованных и Не-авторизованных пользователей.Доступен вывод информации сессии в админке сайта
Можно удалить как отдельную сессию, так и грохнуть все сразу.
Дополнение на гитхаб
Дополнение в репозитории
Подробней под катом
msOptionsPrice2 галлерея модификаций
Всем привет, решил в первый раз написать готовое решение. Надеюсь кому-то пригодится.
Была задача вывести различные цвета товаров, решили выбрать msOptionsPrice2 он для этого подходит идеально.
По умолчанию все модификации выводятся текстом, а нам нужно получить не только название, но и изображение модификации.
Была задача вывести различные цвета товаров, решили выбрать msOptionsPrice2 он для этого подходит идеально.
По умолчанию все модификации выводятся текстом, а нам нужно получить не только название, но и изображение модификации.
Сниппет для вывода ресурсов кириллицей в алфавитном порядке с разбивкой на 3 колонки
может кому пригодится немного модифицированный pdoAtoZ
вызов сниппета
сам сниппет
вызов сниппета
$_modx->runSnippet("@FILE snippets/pdoatoz.php", [
'select' => 'id,pagetitle,uri,parent',
'limit' => '0',
'depth' => $cat_depth,
'parents' => $parents,
'tpl' => '@INLINE <a href="{$uri}" class="abc-item-list">{$pagetitle}</a>',
'tplDelimiter' => '</div><div class="col-lg-4 col-md-12 col-sm-12 col-sx-12">',
'ClassRow' => 'row col-12 abc-list pb-5',
'ClassCol' => 'col-lg-4 col-md-12 col-sm-12 col-sx-12',
'ClassIndex' => 'abc-index text-center',
'indexDelimiter' => ' '
])
сам сниппет
<?php
/**
* pdoAtoZ
*/
$parents = $modx->getOption('parents', $scriptProperties, 0);
$select = $modx->getOption('select', $scriptProperties, 0);
$includeTVs = $modx->getOption('includeTVs', $scriptProperties, '');
$processTVs = $modx->getOption('processTVs', $scriptProperties, '');
$limit = $modx->getOption('limit', $scriptProperties, '10');
$depth = $modx->getOption('depth', $scriptProperties, '10');
$sortby = $modx->getOption('sortby', $scriptProperties, 'pagetitle');
$itemTpl = $modx->getOption('tpl', $scriptProperties, false);
$ClassRow = $modx->getOption('ClassRow', $scriptProperties, 'row');
$ClassCol = $modx->getOption('ClassCol', $scriptProperties, 'col');
$ClassIndex = $modx->getOption('ClassIndex', $scriptProperties, 'alpha-index');
$tplDelimiter = $modx->getOption('tplDelimiter', $scriptProperties, '');
$indexDelimiter = $modx->getOption('indexDelimiter', $scriptProperties, ' | ');
if (!$itemTpl) return;
$pdo = $modx->getService('pdoFetch');
//Get collection of resources
$items = $pdo->getCollection('modResource', array(
'published' => true,
'deleted' => false
), array(
'parents' => $parents,
'select' => $select,
'includeTVs' => $includeTVs,
'processTVs' => $processTVs,
'limit' => $limit,
'sortby' => $sortby,
'sortdir' => $sortdir,
'depth' => $depth
));
$total=count($items);
$column2=intval($total/3);
$column3=intval($total/3*2);
$counter=0;
//create an array keyed with alphabet letters
$alphas = array();
foreach (range(chr(0xC0),chr(0xDF)) as $v)
$alphas[$v] = iconv('CP1251','UTF-8',$v);
$alphaGroups = array();
foreach($alphas as $key=>$value){
$alphaGroups[$value] = array();
}
// organize the resources by first letter
foreach ($items as $item) {
$firstLetter = mb_strtoupper(mb_substr($item['pagetitle'], 0, 1));
$item['url'] = $modx->makeUrl($item['id']);
// check to see if first letter is a letter, if not don't do anything with it
if (!preg_match('/[А-ЯЁ]/u', $firstLetter)) continue;
array_push($alphaGroups[$firstLetter], $item);
}
$alphaIndex = array();
$output = '';
$id = $modx->getOption('id', $scriptProperties, $modx->resource->get('id'));
$url = $modx->makeUrl($id);
foreach ($alphaGroups as $alpha => $alphaGroup) {
if (count($alphaGroup) == 0) {
} else {
array_push($alphaIndex, '<a href="' . $url . '#' . $alpha . '">' . $alpha . '</a>');
$formattedGroup = '';
// to separate collumns
if ($counter >= $column2 && $col2 != 1 && $col2 != 1) { $formattedGroup .= $tplDelimiter; $col2 = 1;}
if ($counter >= $column3 && $col2 == 1 && $col3 != 1) { $formattedGroup .= $tplDelimiter; $col3 = 1;}
$formattedGroup .= '<h3 id="' . $alpha . '" class="">' . $alpha . '</h3>';
foreach ($alphaGroup as $item) {
$formattedGroup .= $pdo->getChunk($itemTpl, $item);
// uncomment the following line to see the item printed out in json format
//$formattedGroup .= json_encode($item, JSON_PRETTY_PRINT);
}
$counter = $counter + count($alphaGroup);
$output .= $formattedGroup;
}
}
//return $alphaIndex + this list of resources grouped by letter;
return '<div class="'. $ClassIndex .'">' . implode($indexDelimiter, $alphaIndex) . '</div>' . '<div class="' . $ClassRow . '"><div class="' . $ClassCol . '">'. $output .'</div></div>';
[msAltCart] Динамическая корзина для MiniShop2
Приветствую! Предлагаю вашему вниманию современный вариант полюбившегося многим компонента msMCD. Как водится постарался учесть большинство популярных кейсов использования корзины: миникорзина в шапке, динамическая корзина сбоку, всплывающее окно с последним добавленным товаров, основная корзина. Подробности под катом.