Максим Кузнецов

Максим Кузнецов

Был в сети 04 августа 2021, 21:51
Заказы принимаю
То, что прописал Михал — оформление для шаблонизатора Fenom, идущего в комплекте с pdoTools. Все чанки сниппетов pdoTools, соответственно, по-умолчанию его понимают, а шаблоны сайта — нет (для этого нужно включить соответствующую системную настройку).

Если вы не хотите пользоваться/включать Fenom в шаблоне страницы, вы можете решить вашу задачу таким способом:
[[*dostavka_tv_name:is=`Доставка есть`:then=`[[$chunk_name]]`]]
Скорее всего, данный параметр со временем был вынесен в системную настройку.

К слову, вы можете попробовать добавить свой модификатор в рамках того же фенома:

1. Создаете плагин на системное событие pdoToolsOnFenomInit:
<?php
	if ($modx->event->name == 'pdoToolsOnFenomInit') {
		$fenom->addModifier('priceFormatter', function ($input) {
			$clear_price = str_replace(" ", "", strstr($input, ' руб', true));

			return $clear_price;
		})
	}

2. В чанке применяете его к нужной переменной:
{$priceStore | priceFormatter}
Дело в том, что я не могу найти данный параметр ни в документации, ни в наборе параметров. Разве что на гитхабе есть строка:
$this->config['useFenom'] = $this->modx->getOption('pdotools_fenom_default', null, true);
— отсылающая к системной настройке. Не подскажете, где можно почитать об этом параметре в рамках сниппетов pdo?

Что же до prepareSnippet, логика довольно проста:

1. создаете сниппет, допустим, priceFormatter, примерно с таким содержанием:
$row['priceStore'] = str_replace(" ", "", strstr($row['priceStore'], ' руб', true));
return serialize($row);

2. Указываете свежесозданный сниппет в параметре prepareSnippet.
[[+address.receiver]] — Покупатель
[[+address.phone]] — Телефон
[[+user.email]] — Почта
[[+address.index]] — Индекс
[[+address.region]] — Область
[[+address.city]] — Город
[[+address.street]] — Улица
[[+address.building]] — Дом
[[+address.room]] — Квартира
[[+delivery.name]] — Способ доставки
[[+payment.name]] — Тип оплаты
[[+address.comment]] — Комментрарий
Сможет, нужно расширять класс фильтрации. За основу можно взять фильтр по tv-полям, дополнительно разбив в getTVValue получаемые значения примерно таким способом:
//здесь же дополнительно можно избавиться от лишних значений, как MIGX_ID
$tmp = json_decode($row['value']);
Тоже вначале написал этот вариант, но с pdoMenu без ухищрений не получится разделить родителей и потомков по разным контейнерам => не получится удобно сгруппировать переключатели табов.
Хотя, конечно, можно повставлять их по плейсхолдерам, но это уже отдает извращением.