Почему не срабатывает функция PHP в вызове PDO
Здравствуйте,
Пытаюсь вырезать из строки «49 000 руб / 19 000 грн / 265 000 тенге» 49000, делаю с помощью:
Если вызвать
pdoResources вызываю так:
Пытаюсь вырезать из строки «49 000 руб / 19 000 грн / 265 000 тенге» 49000, делаю с помощью:
{str_replace(" ", "", strstr($price, ' руб', true))}
, где $price
— tv параметр. В шаблоне страниц, и других чанках, которые вызываются MIGX, все работает, а при выполнении функции в чанке pdoResources выводится пустое поле, в чем может быть проблема? в чайке вызываю так: {str_replace(" ", "", strstr($priceStore, ' руб', true))}
— получаю пустоту (даже пробела лишнего не появляется)Если вызвать
{$priceStore}
выводит: «49 000 руб / 19 000 грн / 265 000 тенге»pdoResources вызываю так:
[[!pdoResources?
&parents=`7`
&limit=`10`
&tpl=`shortStore`
&useFenom=`1`
&includeTVs=`photoStore, priceStore`
]]
Что я делаю не правильно? Комментарии: 8
1. В данном вызове pdoResources, плейсхолдер выглядит как [[+tv.priceStore]] (&tvPrefix=``)
2. Возможно, нужно вызвать функцию таким способом:
3. что за параметр useFenom у сниппета pdoResources?
4. для решения данной задачи вы можете воспользоваться параметром prepareSnippet
2. Возможно, нужно вызвать функцию таким способом:
{set $priceStore = str_replace(" ", "", strstr($priceStore, ' руб', true))}
{$priceStore}
3. что за параметр useFenom у сниппета pdoResources?
4. для решения данной задачи вы можете воспользоваться параметром prepareSnippet
useFenom включение шаблонизатора в чанках, в том то и проблема что перепробовал все, не работает:
{set $priceStore = str_replace(" ", "", strstr($priceStore, ' руб', true))}
{$priceStore}
Не совсемпонял причем тут prepareSnippet…
Дело в том, что я не могу найти данный параметр ни в документации, ни в наборе параметров. Разве что на гитхабе есть строка:
Что же до prepareSnippet, логика довольно проста:
1. создаете сниппет, допустим, priceFormatter, примерно с таким содержанием:
2. Указываете свежесозданный сниппет в параметре prepareSnippet.
$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.
Вот тут упоминается о useFenom
Скорее всего, данный параметр со временем был вынесен в системную настройку.
К слову, вы можете попробовать добавить свой модификатор в рамках того же фенома:
1. Создаете плагин на системное событие pdoToolsOnFenomInit:
2. В чанке применяете его к нужной переменной:
К слову, вы можете попробовать добавить свой модификатор в рамках того же фенома:
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}
Если убрать useFenom то вызов
{$priceStore}
выдает пустое место
Если у вас код вызова сниппета именно такой, как в теме вопроса, попробуйте, все же, дописать к вызову:
&tvPrefix=``
а вот так работает… Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.