Деление tv на tv
Добрый день!
Подскажите новичку как выполнить деление tv на tv и вывести итог на сайте?
Спасибо!
Подскажите новичку как выполнить деление tv на tv и вывести итог на сайте?
Спасибо!
Комментарии: 25
Пробуйте примерно так:
print $modx->runSnippet('pdoPage', [
'debug' => 1,
"includeTVs" => 'image,keywords',
"tvsSelect" => [
"TVimage.value / TVkeywords.value as tvvalue",
]
]);
Спасибо за ответ, но что-то не работает.
Создал сниппет cena_rur, туда вставил
Создал сниппет cena_rur, туда вставил
<?php
print $modx->runSnippet('pdoPage', [
'debug' => 1,
"includeTVs" => 'cena_proekta_doma,cena_rur_auto',
"tvsSelect" => [
"TVcena_proekta_doma.value / TVcena_rur_auto.value as tvvalue",
]
]);
на странице вывода вставил [[!cena_rur]] «TVcena_proekta_doma.value / TVcena_rur_auto.value as tvvalue»,То есть поле будет tvvalue. переименуйте в свое, если надо.
на странице вывода вставил [[!cena_rur]]Это вызов сниппета cena_rur. Что у вас там в сниппете или вы таким образом пытаетесь вывести поле cena_rur?
В сниппет cena_rur вставил только Ваш код(больше ничего)
строку послюднюю изменил на
строку послюднюю изменил на
TVcena_proekta_doma.value / TVcena_rur_auto.value as cena_rur_total
Так а дальше что по вашему должно произойти? Где что появиться? Посредством чего?
Что я не так делаю? )
Может все так, но я не понимаю где вы и как хотите вывести это поле. Если вы делаете выборку документов (к примеру, через тот же getPage), то в него надо передавать еще шаблон для вывода, где вы уже прописываете вывод этого значения, к примеру, в плейсхолдер [[+cena_rur_total]].
А если просто на странице получить значения от твшек текущей страницы, то как минимум два способа есть:
1. Написать свой сниппет в котором прописать:
А если просто на странице получить значения от твшек текущей страницы, то как минимум два способа есть:
1. Написать свой сниппет в котором прописать:
return $modx->resource->getTVValue($tv_id1) / $modx->resource->getTVValue($tv_id2);
2. Если у вас феном или смарти, то можно прям в шаблоне написать то же самое.
У меня есть товар.
У каждого товара есть TV поле cena_proekta_doma.
TV поле cena_rur_auto присвоено только корневому ресурсу каталога.
Мне надо вывести у каждого товара итоговую цену TV поле cena_proekta_doma разделить на TV поле cena_rur_auto
Иными словами мне надо цену в бел.рублях (cena_proekta_doma) разделить на курс рубля (cena_rur_auto) и получить цену в российских рублях для каждого товара
Надеюсь Вы меня поняли.
У каждого товара есть TV поле cena_proekta_doma.
TV поле cena_rur_auto присвоено только корневому ресурсу каталога.
Мне надо вывести у каждого товара итоговую цену TV поле cena_proekta_doma разделить на TV поле cena_rur_auto
Иными словами мне надо цену в бел.рублях (cena_proekta_doma) разделить на курс рубля (cena_rur_auto) и получить цену в российских рублях для каждого товара
Надеюсь Вы меня поняли.
На самом деле имело смысл вынести эту базовую цену в системные настройки, так как судя по всему, это своего рода курс валюты.
Но здесь опять-таки, все зависит от ситуации где вы это выводите. Если рассматривать случай с getPage, то так как у вас эта базовая ТВшка не в текущем документе и не в конечных товарах, то вы ее просто так в запросе не получите. Получите ее любым способом и передайте в запрос. Если рассматривать наш пример, то получается так:
Но здесь опять-таки, все зависит от ситуации где вы это выводите. Если рассматривать случай с getPage, то так как у вас эта базовая ТВшка не в текущем документе и не в конечных товарах, то вы ее просто так в запросе не получите. Получите ее любым способом и передайте в запрос. Если рассматривать наш пример, то получается так:
<?php
print $modx->runSnippet('pdoPage', [
'debug' => 1,
"includeTVs" => 'cena_proekta_doma,cena_rur_auto',
"tvsSelect" => [
"TVcena_proekta_doma.value / {$rate} as tvvalue",
]
]);
Но это все так, для примера. Учитывая то, что вам не просто надо tv на tv поделить, а сделать мультивалютность в рамках всего магазина (а это не только в одном месте поделить твшки, но и управление заказами, цены в уведомлениях и т.п.), вам надо переписывать топик, включая заголовок. Вам надо было обрисовать свой случай детальней, а заголовок скорее всего подойдет «Автоматический пересчет валют». Должен быть более правильный способ, нежели делить ТВшки. Я не в курсе еще есть ли нормальная мультивалютность в минишопе.
У меня не интернет магазин(мини шоп не стоит)
У меня просто каталог с отдельными товарами без корзины и прочего
У меня просто каталог с отдельными товарами без корзины и прочего
Интернет-магазин от каталога отличается не сильно — только возможностью добавления товара в корзину и оформлением заказа. Эта разница не существенная. В большинстве случаев самое сложное — это как раз каталог, включая вот такие случаи с пересчетом цен.
Может имело смысл поставить тот же минишоп, или шопмодикс, не суть.
В любом случае, если ничего такого нет, то примеров вам привели массу, должно хватить. И еще раз: лучше вынести курс валюты в системную настройку.
В любом случае, если ничего такого нет, то примеров вам привели массу, должно хватить. И еще раз: лучше вынести курс валюты в системную настройку.
Сделайте сниппет «getprice»:
Вместо **** в первой строке поставьте ID корневого ресурса каталога, у которого прописан курс и используйте как модификатор.
В чанках:
$resource = $modx->getObject('modResource', ****);
$price_r = $resource->getTVValue('cena_rur_auto');
return $input / $price_r;
Вместо **** в первой строке поставьте ID корневого ресурса каталога, у которого прописан курс и используйте как модификатор.
В чанках:
[[+tv.cena_proekta_doma:getprice]]
В шаблоне:[[*cena_proekta_doma:getprice]]
И потом прописать этот сниппет по всему магазину, верно? То есть в выводе товаров в каталоге, в выводе на конечной странице товара, в добавлении товара в корзину и т.п., да?
Если нужен просто вывод пересчитанной цены, почему нет?
Это самое простое решение в данном случае и возможно, оно удовлетворит Алексея.
Это самое простое решение в данном случае и возможно, оно удовлетворит Алексея.
Не, возражений нету. Просто я думал там магазин с корзиной и точек вхождений много.
Спасибо за ответ!
Цены вроде выводит, но почему то всегда число 39 508
цена в бел 11 700 000 делю к примеру на 270 выводит 39 508
Указываю курс к примеру 400, то же число на выходе 39 508
Мистика )
Цены вроде выводит, но почему то всегда число 39 508
цена в бел 11 700 000 делю к примеру на 270 выводит 39 508
Указываю курс к примеру 400, то же число на выходе 39 508
Мистика )
МистикаМожет кэш?)
Не он )
Только что очистил… непомогло )
Только что очистил… непомогло )
А если так?
[[!getprice? &input=`[[+tv.cena_proekta_doma]]`]]
А так 0 выводит (
Спасибо всем… заработало!
Вставил в чанк [[*cena_proekta_doma:getprice]].
Хотя по идее надо было через плюс вставлять [[+tv.cena_proekta_doma:getprice]]
Вставил в чанк [[*cena_proekta_doma:getprice]].
Хотя по идее надо было через плюс вставлять [[+tv.cena_proekta_doma:getprice]]
Через плюс ставится только в чанке-шаблоне вывода у сниппетов типа getResources и т. д. На самой странице, естественно, через [[*...
Можно и встроенными модификаторами, но Вам же нужно получить курс, т. е. значение TV у другого ресурса. Я не знаю установлен у Вас getResourceField или pdoTools, поэтому проще сделать вышеописанный сниппет.
А так-то да (если pdoTools стоит и включен новый парсер):
Можно и встроенными модификаторами, но Вам же нужно получить курс, т. е. значение TV у другого ресурса. Я не знаю установлен у Вас getResourceField или pdoTools, поэтому проще сделать вышеописанный сниппет.
А так-то да (если pdoTools стоит и включен новый парсер):
[[*cena_proekta_doma:div=`[[#****.cena_rur_auto]]`]]
Спасибо ребята!
Вариантов более чем… )
Вариантов более чем… )
К слову, есть же встроенные модификаторы modx'a для этой задачи:
[[+что_делим:div=`[[+на_что_делим:default=`1`]]`]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.