Dmitry

Dmitry

С нами с 28 сентября 2015; Место в рейтинге пользователей: #803
Dmitry
25 апреля 2019, 17:21
0
Нет, к сожалению, не нашёл.
Просто отказался от компонента — все каталоги перевёл на miniShop2, даже если не используется корзина и прочие функции интернет-магазина.
Dmitry
16 октября 2018, 17:30
0
Проблема в том, что всё это ещё нужно завязать на mFilter2. Например, отфильтровал я каталог из 1000 позиций, получил выборку в 250 позиций, и мне нужно получить ID всей выборки вне зависимости от страниц пагинации.
Dmitry
16 октября 2018, 11:36
-1
Попробовал добавить такой код в файл core/components/pdotools/model/pdotools/pdofetch.class.php перед началом подготовки к выводу.
$ids = array();
                foreach ($rows as $row) {
                    $ids[] = $row[$this->pk];
                }
                $this->modx->setPlaceholder('idsList',implode(',', $ids));
Плейсхолдер срабатывает, но выдаёт только одну актуальную страницу, а мне нужно получить ID всей выборки вне зависимости от количества страниц :(
Dmitry
16 октября 2018, 11:09
+1
Ну просто вместо join вывести массив $values через foreach вот так:
{foreach $options as $name => $values}
            {if $options is array}
                {foreach $values as $v}
                    "{$v}",
                {/foreach}
            {else}
                {$values}
            {/if}
{/foreach}
Dmitry
19 сентября 2018, 21:11
0
Да, действительно, в документации есть такой блок:

Плейсхолдеры с точкой или тире
Во многих местах MODX используются плейсхолдеры, которые нельзя указывать в Fenom, так как они не соотвествуют правилам наименования переменных PHP. Например, плейсхолдеры с точкой (MODX обычно выставляет так данные массивов) или с тире (ТВ параметры).

Для доступа к этим плейсхолдерам нужно использовать вторую служебную переменную - {$_pls}:

<!-- Вывод сразу -->
{$_pls['tag.subtag']}

<!-- Или через переменную -->
{var $tv_name = $_pls['tv-name']}
{$tv_name}
Если плейсхолдер был выставлен в глобальный массив modX::placeholders, то его нужно получать вот так:

{var $tag_sub_tag = $_modx->getPlaceholder('tag.sub_tag')}
{$tag_sub_tag}

{$_modx->getPlaceholder('tv_name')}
При указании неправильных переменных ваш шаблон не будет скомпилирован и вы получите запись об этом в системном журнале.
Но мне не было очевидно, что это распространяется на обычные плейсхолдеры в шаблонах. Спасибо за помощь!
Dmitry
10 июля 2018, 16:43
0
Спасибо за ответ, обновился из репозитория modstore.pro, всё заработало.
Dmitry
10 июля 2018, 16:37
0
Хм, установил компонент из репозитория только сегодня. Установилась версия 2.0.0. Нужно обновить как-то вручную?
Dmitry
10 июля 2018, 16:03
0
Заказы не передаются, добавил в плагин строчку печати в лог, получаю такую ошибку:
[2018-07-10 15:52:03] (ERROR @ /home/s14252/www/meat/cache/includes/elements/modplugin/19.include.cache.php : 93) [modRetailCRM]  Order Response RetailCrm\Response\ApiResponse Object
(
    [statusCode:protected] => 400
    [response:protected] => Array
        (
            [success] => 
            [errorMsg] => Order is not loaded
            [errors] => Array
                (
                    [customer.externalId] => Customer with externalId=2 not found. Order externalId=16.
                )

        )

)
Буду благодарен за совет, как исправить.
Dmitry
11 февраля 2018, 09:16
0
Резонно, спасибо :)
Насколько я понимаю, «из коробки» возможности добавить товар, который не является ресурсом, нет?
Dmitry
06 февраля 2018, 13:04
0
Спасибо, Илья, полезно.
Как и вообще ваш сайт, нередко выручал :)
Dmitry
05 февраля 2018, 11:27
0
Спасибо, посмотрю.
Мысль ещё пришла такая: есть обычный сниппет Profile в составе пакета Login. Он может вывести JSON-массив всех полей, плейсхолдер extended. В принципе, можно создать простой сниппет, который получит этот массив, обработает его и выведет формы по шаблону.
Dmitry
05 февраля 2018, 11:09
0
В документации Office написано такое:
Контроллер позволяет редактировать расширенные поля профиля пользователя, типа extended.some_field. Для этого вам нужно:

Вывести их в форме
<label for="extended.some_field">Какое-то поле</label>
<input name="extended[some_field]" value="[[+extended.some_field]]" id="extended.some_field">
То есть в форме все равно придётся руками выводить поля (инпуты) с плейсхолдерами. Как вывести инпуты для редактирования всех существующих полей — вот в чем вопрос :)
Dmitry
05 февраля 2018, 11:06
0
ну при разборе можно просто вывести поля с именами.
Как именно вывести, не подскажете, что имеете в виду?
Dmitry
05 февраля 2018, 10:34
0
Ну да, это, вроде очевидная реализация.
Вполне можно через JS создавать сколько угодно полей вида:
<input type="text" name="address_1[region]" id="region_1" value="" />
просто подменяя суффикс с порядковым номером.
Вопрос тогда становится такой: каким образом потом на этой же странице вывести список всех кастомных полей, чтобы из можно было редактировать? Ведь для этого еще необходимо поставлять плейсхолдеры вида [[!+address_1.address]] в поле value.