SYAN
С нами с 22 февраля 2017; Место в рейтинге пользователей: #461msFilter2 использование слайдера для выбора диапазона дат публикации
Помогите разобраться в выводом msFilter2
необходимо вывести слайдер с датами по аналогии с ценами
пытался отдельно дописать фильтр year в сниппете mFilter2, чтоб использовать как прописать 'filters' => ' publishedon:year,, но соображалки не хватило (
или может не использовать | date: 'Y' а как-то решить через css?
необходимо вывести слайдер с датами по аналогии с ценами
'filters' => ' publishedon:number',
'tplFilter.outer.resource|publishedon' => 'tpl.mFilter2.filter.slider',
'tplFilter.row.resource|publishedon' => '@FILE chunks/filter_slider_year.tpl'
чанк filter_slider_year.tpl{var $key = $table ~ $delimeter ~ $filter}
<div class="col-md-6">
<label for="mse2_{$key}_{$idx}" class="d-flex align-items-center">
{$title}
<input type="text" name="{$filter_key}" id="mse2_{$key}_{$idx}" value="{$value| date : 'Y'}"
data-current-value="{$current_value| date : 'Y'}" class="form-control ml-1"/>
</label>
</div>
Слайдер с годами выводится, но фильтрация не производитсяпытался отдельно дописать фильтр year в сниппете mFilter2, чтоб использовать как прописать 'filters' => ' publishedon:year,, но соображалки не хватило (
или может не использовать | date: 'Y' а как-то решить через css?
Сниппет для вывода ресурсов кириллицей в алфавитном порядке с разбивкой на 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>';
Быстро пересоздать превью продуктов с выбором дапазона через Console
Кого не устраивает скорость пересоздания превью для продуктов через утилиту минишопа и необходимо пересоздать превью не для всех продуктов предлагаю вариант кода
Рекомендую:
1. отключить «Показывать ошибки» в консоле перед исполнением кода
2. увеличить max_execution_time php сервера для большого объема изображений
Актуально для больших каталогов и фотогалерей
Рекомендую:
1. отключить «Показывать ошибки» в консоле перед исполнением кода
2. увеличить max_execution_time php сервера для большого объема изображений
Актуально для больших каталогов и фотогалерей
Порядок вывода в SimpleSearch
Подскажите как организовать вывод в SimpleSearch сначала материалов определенного шаблона.
Из документации уяснил, что есть параметр sortBy, но как ему присвоить приоритет на вывод сначала всех материалов с шаблоном '4'?
Также необходимость вывода результатов сначала найденных в заголовках
Из документации уяснил, что есть параметр sortBy, но как ему присвоить приоритет на вывод сначала всех материалов с шаблоном '4'?
Также необходимость вывода результатов сначала найденных в заголовках
{'!SimpleSearch' | snippet : ['sortBy' => 'template']}
Как подружить FrontEditor с множественными чекбоксами и MIGX?
При редактировании TV полей с MIGX с использованием FrontEditor получаю такой вид:
[{"MIGX_id":"1","title":"Название сайта 1","url":"http://адрес сайта 1"},{"MIGX_id":"2","title":"Название сайта 2","url":"http://адрес сайта 2"}]
При редактировании TV полей с чекбоксами с использованием FrontEditor выводятся только активные чекбоксы:hide-image||hide-album||show_img_titles
Возможно ли привести их в человеческий вид для редактирования? Или возможно существует альтернативный редактор из фронтэнда? Автоматический редирект с параметрического адреса сайта на дружественный урл
на сайте более 5000 материалов. при переносе материала из каталога в каталог, либо исправлении алиаса меняется его урл, что неприемлемо для публикаций ссылок в соцсетях
Помогите настроить автоматический редирект с параметрического адреса сайта на дружественный урл
то есть при переходе по ссылке адрес.сайта/index.php?id=1 в браузере должен открыться адрес адрес.сайта/index.html и так для всех ресурсов сайта
Помогите настроить автоматический редирект с параметрического адреса сайта на дружественный урл
то есть при переходе по ссылке адрес.сайта/index.php?id=1 в браузере должен открыться адрес адрес.сайта/index.html и так для всех ресурсов сайта
TinyMce RTE выбор изображений только из галереи ресурса
Возникла задача использовать в контенте msProducts изображения из его же галереи
Как научить TinyMce RTE по умолчанию при вставке картинки открывать папку с изображениями из assets/images/gallery/id_ресурса/, а не из modx.default_media_source?
Пробовал сменить url через tinymcerte.min.js, но как-то никак \_o_/
увидел в готовых решениях https://modx.pro/solutions/18899, но выскакивает ошибка при инициализации плагина (плагин заработал после дегрейта редактора с 5 на 4. спасибо автору за труд)
Как научить TinyMce RTE по умолчанию при вставке картинки открывать папку с изображениями из assets/images/gallery/id_ресурса/, а не из modx.default_media_source?
Пробовал сменить url через tinymcerte.min.js, но как-то никак \_o_/
увидел в готовых решениях https://modx.pro/solutions/18899, но выскакивает ошибка при инициализации плагина (плагин заработал после дегрейта редактора с 5 на 4. спасибо автору за труд)
pdoPage в 2 колонки
Необходимо вывести результаты картотеки в 2 — 3 колонки
Понимаю, что тема уже поднималась, но готового рабочего решения так и не смог нагуглить
Разбить вывод pdoResources на несколько колонок (блоков) — пробовал этот вариант, но при использованииtoSeparatePlaceholders вываливаются ошибки
tpl для pdoPage ищет и вставляет точки разрывы колонок
Или запустить отдельный count отличный от IDX?
Или наведите на готовое не столь топорное решение
Понимаю, что тема уже поднималась, но готового рабочего решения так и не смог нагуглить
Разбить вывод pdoResources на несколько колонок (блоков) — пробовал этот вариант, но при использованииtoSeparatePlaceholders вываливаются ошибки
./core/cache/includes/elements/modsnippet/30.include.cache.php 58Поэтому пробую такой способ:
PHP warning: Illegal string offset 'log'
../core/cache/includes/elements/modsnippet/30.include.cache.php 58
PHP warning: Cannot assign an empty string to a string offset
tpl для pdoPage ищет и вставляет точки разрывы колонок
{var $total = $modx->getPlaceholder('page.total')}
{var $columns = '3'}
<div class="mp-1"><a href="{$uri}">{$pagetitle}</a></div>
{if ($idx>=($total/$columns) AND $idx<($total/$columns+1)) OR ($idx>=($total/$columns*2) and $idx<($total/$columns*2+1)) }
</div>
<div class="col-lg-4 col-md-12 col-sm-12 col-sx-12">
{/if}
+- Работает, и только в случае limit=0 только для одной страницы. Иначе (при limit=100) на второй странице page=2 получаем продолжение IDX с 101, а так-как [[+page]] — имеет тип string, а знаний не хватает использовать его в формуле: {if ($idx>=($limit*($pagenumber-1) + $limit/$columns) AND $idx<($limit*($pagenumber-1) + $limit/$columns +1)) OR ... }
Может кто подскажет, как получить $pagenumber типа int из [[+page]]? Или запустить отдельный count отличный от IDX?
Или наведите на готовое не столь топорное решение
Помогите получить id родителя в pdoMenu в tplInner
Имеется многоуровневое меню. Необходимо получить id родителя в tplInner для ul id=«parent-{$parent.id}»
Понимаю, что надо как-то иначе, но не могу найти в документации
Понимаю, что надо как-то иначе, но не могу найти в документации
<nav id="nav">
{'!pdoMenu' | snippet : [
'parents' => '0',
'level' => 10,
'processTVs' => 1,
'tpl' => '@INLINE <li ><a href="{$link}">{$menutitle}</a></li>',
'tplOuter' => '@INLINE <ul >{$wrapper}</ul>',
'tplParentRow' => '@INLINE <li><a href="#parent-{$id}">{$menutitle}</a>{$wrapper}</li>',
'tplInner' => '@INLINE <ul id="parent-{$parent.id}">{$wrapper}</ul>',
'tplInnerRow' => '@INLINE <li><a href="{$link}">{$menutitle}</a></li>'
]}
</nav>
На выходе нужно получить<nav>
<ul>
<li ><a href="#parent-1">Категория 1</a>
<ul id="parent-1">
<li><a href="#parent-30">Подкатегория 30</a>
<ul id="parent-30">
<li><a href="catalog/cat-301">Подкатегория 301</a></li>
<li><a href="catalog/cat-302">Подкатегория 302</a></li>
</ul>
</li>
<li><a href="#parent-40">Подкатегория 40</a>
<ul id="parent-40">
<li><a href="catalog/cat-401">Подкатегория 401</a></li>
<li><a href="catalog/cat-402">Подкатегория 402</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
Переименование файлов при загрузке в Ticket
Загружаю картинки в тикет из фронтэнда с помощью plupload
столкнулся с проблемой, необходимо после загрузки переименовать файлы в
id_тикета-id_картинки, исходное_расширение
36-01.jpg
37-02.jpg и тд
столкнулся с проблемой, необходимо после загрузки переименовать файлы в
id_тикета-id_картинки, исходное_расширение
36-01.jpg
37-02.jpg и тд