ElenaLelo

ElenaLelo

Был в сети 06 июля 2021, 09:58
Заказы принимаю
Документация, там есть инструкция по работе с интерфейсом.
Из документации:
Так же секция тикетов и сам тикет это расширенный стандартный «modDocument» по этому имеет все те же TV поля, плейсхолдеры и логика работы.
Collections служит немного для другого (документация), а именно:
Collections (коллекции) — это компонент для CMS MODX Revolution, который скрывает показ дочерних ресурсов в дереве админки и организовывает их вывод в родительском объекте посредством таблицы. Другими словами он позволяет перевести стандартное представление дочерних ресурсов в табличный вид.
Напишите свой небольшой модификатор для даты, например, назовете Datenew:
<?php
$month_arr = array(
'01' => 'Января',
'02' => 'Февраля',
'03' => 'Марта',
'04' => 'Апреля',
'05' => 'Мая',
'06' => 'Июня',
'07' => 'Июля',
'08' => 'Августа',
'09' => 'Сентября',
'10' => 'Октября',
'11' => 'Ноября',
'12' => 'Декабря'
);
 

$time = strtotime($input);
$hour = strftime('%H', $time) + 1; // прибавляем единичку к часу
$month = strftime('%m', $time);
$day = strftime('%d', $time);
$year = strftime('%Y', $time);
return $hour." часов ".$day." ".$month_arr[$month]." ".$year;
Вызов такой:
[[*publishedon:Datenew]]
Если вы хотите оформить именно фильтром, то скорее всего план будет таким:
Вы создаете опцию товара/тв поле — чекбокс, который будет означать что товар акционный. Потребуется небольшой плагин, который пройдется по всем товарам и поставит значение «1» опции у товаров, у которых прошлая цена больше текущей. Потом вызовите через mfilter2, как обычный фильтр.
Другой вариант развития, это когда по нажатию на «акции», отдельно вызванный pdoresources вернет в &resources id товаров, которые подходят по выборке «предыдущая цена больше текущей».
Да, нужно перегенерировать превью. Последний раз я пользовалась этим скриптом.
<?php
$step = 5;
$offset = isset($_SESSION['galgenoffset']) && $_SESSION['galgenoffset'] ? $_SESSION['galgenoffset'] : 0;
$ms2Gallery = $modx->getService('ms2gallery', 'ms2Gallery', MODX_CORE_PATH . 'components/ms2gallery/model/ms2gallery/');
$modx->setLogLevel(MODX_LOG_LEVEL_ERROR);
$q = $modx->newQuery('msResourceFile', array('parent' => 0));
$total = $modx->getCount('msResourceFile', $q);
$q->sortby('resource_id', 'ASC');
$q->sortby('rank', 'DESC');
$q->limit($step,$offset);
$resources = $modx->getCollection('msResourceFile', $q);
foreach ($resources as $resource) {
    $modx->runProcessor('mgr/gallery/generate', array('id' => $resource->id),
        array('processors_path' => $modx->getOption('core_path').'components/ms2gallery/processors/'));
}

$_SESSION['galgenoffset'] = $offset + $step;
if ($_SESSION['galgenoffset'] >= $total) {
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
  unset($_SESSION['galgenoffset']);
} else {
  $sucsess = round($_SESSION['galgenoffset'] / $total, 2) * 100;
  $_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
    if ($i <= $sucsess) {
        print '=';
    } else {
        print '_';
    }
}
$current = $_SESSION['galgenoffset'] ?
           $_SESSION['galgenoffset'] :
           ($sucsess == 100 ? $total : 0);
print "\n";
print $sucsess.'% ('.$current.')'."\n\n";
Думаю, поможет этот гайд. Вызовите в нужном месте нужный размер с помощью phpthumb.
В модсторе можно найти улучшенные версии сниппета. Я пользуюсь этим, синтаксис одинаковый по-моему.
Https используете?
При переходе к странице авторизации в админку, после авторизации выкидывает на страницу с вот таким адресом: domain/MODX_URL_SCHEMEdomain/manager
Проверьте запрос на страннице каталога, мб там что то не так.
И проблема с каталогом, с главной переход на товары нормальный, а со страницы каталога подставляется лишняя вкладка catalog.
Свежей записи это какую то надо закрепить?
Можно вот так закрепить вот так
&resources=`11, 12, 13, [[!pdoResources? &sortby=`RAND()` limit=`10`&returnIds=`1`]]`
Или сделать еще один запрос сюда, но, дописать sortby по дате публикации, напр. и выводить 2 самые свежие, или отобрать через where рандомные, но опубликованные в этом году
&resources=`[[!pdoResources? &sortby=`{"publishedon":"ASC"}` limit=`2`&returnIds=`1`]],[[!pdoResources? &sortby=`RAND()` limit=`10`&returnIds=`1`]]`
Конечно, лучше все это дело вынести в свой сниппет и сделать всю эту выборку одним getCollection, я думаю. Но выводить нужно набор id и их уже сортировать, иначе вряд ли получится
А нельзя написать небольшой сниппет, который выводит рандомные числа из количества дочерних ресурсов, его результат работы поместить куда нибудь в element/parent? А сортировку уже написать не rand(), а {«publishedon»:«ASC»} какую надо?