prepareSnippet передать значение в modResource
Задача простая и решить ее можно разными способами ну почему-то решил попробовать ее решить prepareSnippet
Задача заключается расчет экономии по двум простым формулам логику расписывать не будет и так будет понятно в коде
Так как я разбираюсь только в MODx решил сделать плагином и записать в плейсхолдер. А плагин в приципе повторяет логику.
Четкий вопрос можно через PrepareSnippet передать значение в карточку товара? Если нет а как работают плейсхолдеры pricе и oldprice так как в карточке можно вызвать переменную шаблона к примеру 14000 и плейсхолдер уже со значением 14 000
Задача заключается расчет экономии по двум простым формулам логику расписывать не будет и так будет понятно в коде
<?php
if (!is_array($row)) {
return '{}';
}
$ms2_product_price = $modx->getOption('ms2_product_price');
$price = preg_replace("/\s+/", "", $row['price']);
$old_price = preg_replace("/\s+/", "", $row['old_price']);
if ($old_price > $price) {
switch ($ms2_product_price) {
case 'procent':
$row['difference'] = round(100 - (100 * $price / $old_price));
break;
case 'num':
$row['difference'] = $old_price - $price;
break;
}
}
$rows = json_encode($row);
return($rows);
Вопрос очень простой как вывести данное значение в карточке товара. Как это можно сделать в одном месте. Так как я разбираюсь только в MODx решил сделать плагином и записать в плейсхолдер. А плагин в приципе повторяет логику.
Четкий вопрос можно через PrepareSnippet передать значение в карточку товара? Если нет а как работают плейсхолдеры pricе и oldprice так как в карточке можно вызвать переменную шаблона к примеру 14000 и плейсхолдер уже со значением 14 000
Поблагодарить автора
Отправить деньги
Комментарии: 1
Вопрос конечно сформулирован мастерски.
Что касается prepareSnippet — то он должен возвращать результат работы в следующем виде
Пример сниппета
И в итоге в чанке товара уже используется плейсхолдер [[+dt]] {$dt}
Что касается prepareSnippet — то он должен возвращать результат работы в следующем виде
return serialize($row);
Пример сниппета
<?php
if(!$row['publishedon']){
return serialize($row);
}
// тут лучше сразу написать обработку даты, но для простоты кода показываю со сторонним сниппетом
$row['dt'] = $modx->runSnippet('dateRu', array(
'input' => $row['publishedon']
));
return serialize($row);
И в итоге в чанке товара уже используется плейсхолдер [[+dt]] {$dt}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.