Анатолий

Анатолий

С нами с 20 марта 2018; Место в рейтинге пользователей: #482

Вывод ресурсов на fenom без сниппета

Вывожу ресурсы через microModx:
{var $resources = $_modx->getResources(
    ['published' => 0, 'deleted' => 0],
    ['parents' => 2],
    ['sortby' => 'id', 'sortdir' => 'ASC', 'limit' => 0]
)}
{foreach $resources as $resource}
    {$_modx->getChunk('@INLINE <a href="#{$id}">{$pagetitle}</a>', $resource)}
{/foreach}
Понадобилось добавить ресурс и поместить его между существующих. Упорядочил ресурсы по menuindex. Теперь когда заменил 'sortby' => 'id' на 'sortby' => 'menuindex' то ничего не изменилось: добавленный ресурс вывелся последним как будто отсортировано по id. Более того, заметил что если менять сортировку на DESC тоже ничего не происходит, как будто этот код закэшировался… В чем может быть причина?
Анатолий
17 августа 2021, 09:05
modx.pro
687
0

Fenom и json_decode

Есть многомерный массив полученный из migx который я декодирую:
{set $rows = json_decode($_modx->resource.device,true)}
На выходе получается массив, но вложенные массивы второго уровня остаются не декодированными и снова к ним приходится применять функцию json_decode.
array(1) {
  [0]=>
  array(3) {
    ["MIGX_id"]=>
    string(1) "1"
    ["device"]=>
    string(6) "iPhone"
    ["vendor"]=>
    string(86) "[{"MIGX_id":"9","model":"7","img":"","services":""},{"MIGX_id":"10","model":"7 Plus","img":"","services":""}]"
  }
}
Есть ли способ за один прогон получить декодированный массив в fenom?
Анатолий
23 апреля 2021, 11:51
modx.pro
615
0

Обернуть каждые N элементов массива в Fenom

Здравствуйте уважаемые друзья! Вопрос в том как вывести элементы массива с учетом того что каждые четыре должны быть обернуты в тег? Например вот стандартный чанк ms2gallery:
{if $files?}
    <div class="slider">
        {foreach $files as $file}
            <div class="slide">
		        <img src="{$file['url']}">
	        </div>
        {/foreach}
    </div>
{/if}
А нужно (просто привожу схематично структуру):
{if $files?}
    <div class="slider">
           <div class="slide">
		    <img src="{$file['url']}">
                    <img src="{$file['url']}">
                    <img src="{$file['url']}">
                    <img src="{$file['url']}">
	    </div>
        {/foreach}
    </div>
{/if}
Понимаю что нужен какой-то цикл for 1..4 но как его реализовать не решу…
Анатолий
28 апреля 2020, 12:16
modx.pro
3
996
0

Вывод ошибки в AjaxForm

Друзья, проверяю форму на заполненность одного поля из двух. Вот вызов сниппета:
{'!AjaxForm' | snippet : [
       'snippet'=>'FormIt'
       'hooks'=>'spam,email'
       'emailFrom'=>'noreply@test.loc'
       'form'=>'tpl.callBack'
       'emailTpl'=>'tpl.callBackMail'
       'emailTo'=>'inbox@mail.local'
       'emailSubject'=>'Обратная связь с сайта'
       'validate'=>'name:required,phone:oneOfTwoFields,email:email:oneOfTwoFields,link:blank'
       'customValidators' => 'oneOfTwoFields'
       'validationErrorMessage'=>'Пожалуйста, заполните необходимые поля.'
       'successMessage'=>'Ваше обращение отправлено. Мы свяжемся с вами!'
    ]}
А вот сниппет кастомного валидатора:
<?php
$success = true;

$phone = trim($_POST['phone']);
$email = trim($_POST['email']);

if (empty($phone) && empty($email)) {
    $success = false;
    $validator->addError($key, 'Заполните поле Телефон или Email.');
}

return $success;
Валидация работает, но не могу понять как выводить во всплывающем окне эту ошибку (когда не заполнены оба поля)? Всегда выводится 'Пожалуйста, заполните необходимые поля.'
Анатолий
15 апреля 2020, 16:05
modx.pro
729
0

Получить Option в плагине

Пишу fenom модификатор который должен получить значение опции и далее ее обработать.
Опция создана в ClientConfig.
$fenom->addModifier('phonelink', function ($input, $class = 'phonelinks') {
            if (!empty($input)) {
                $el = $modx->getOption($input);
                return $el;
            }
        });
Это вызывает ошибку: Fatal error: Uncaught Error: Call to a member function getOption() on null in…
Анатолий
07 апреля 2020, 20:13
modx.pro
722
0

Вопрос по $options

Обратил внимание что в сниппете dateAgo есть такой код:
if (!empty($options) && $options = $modx->fromJSON($options)) {
    $scriptProperties = array_merge($scriptProperties, $options);
}
Вопрос что это за переменная $options, чем она отличается от $scriptProperties?
Или этот код позволяет использовать параметры сниппета в качестве модификатора?
Анатолий
03 апреля 2020, 21:47
modx.pro
431
0

Тернарный оператор

Друзья, не пойму простого, как в чанке вывести longtitle в теге если longtitle заполнен?

{$longtitle ? '<small>({$longtitle})</small>' :'' }
Так выводятся пустые скобки…
Анатолий
26 марта 2020, 14:24
modx.pro
794
0

Убрать элемент из массива

Есть массив $files содержащий в себе другие элементы-массивы.
Вопрос, как на fenome удалить любой элемент из этого массива?
Например первый. Или разобрать массив $files со второго элемента с помощью {foreach}?
Анатолий
10 марта 2020, 20:33
modx.pro
935
0

Перебор массива в fenom

Друзья, сломал голову, как обернуть определенным тегом только первый элемент массива?

{foreach $files as $file}
        {if $file@first} <i>{$file['id']}</i>{/if}
        <b>{$file['id']}</b>
 {/foreach}
Но так в теге <i> оказываются все элементы.
Анатолий
10 марта 2020, 20:25
modx.pro
1
1 540
0

Fenom. Вынос сниппетов в файлы

Подскажите, если выносить шаблоны, чанки в файлы, то как поступать с родными сниппетами дополнений? Оставлять их в БД? В файлы писать только свои сниппеты? В документации к феному пишут делать все в файлах и ничего не создавать в админке. А как быть со сниппетами pdotools, msgallery, например? Каковы правила хорошего тона в таком случае?
Анатолий
05 июля 2019, 14:44
modx.pro
446
0