Павел Романов

Павел Романов

С нами с 03 марта 2014; Место в рейтинге пользователей: #43
09 ноября 2016, 15:49
+1
Ошибся. А так?
<?php
$rate = 63; //тут курс
$output = 0;
$price_tv_name = 'price'; //Имя TV цены
$action_price_tv_name = 'action_price'; //Имя акционной TV цены

    $p_id = isset($purchaseArray['shk-id']) && is_numeric($purchaseArray['shk-id']) ? $purchaseArray['shk-id'] : 0;
    if($p_id){
	$action_tv = $modx->getObject('modTemplateVar',array('name'=>'action'));
	$action = $action_tv->renderOutput($p_id);
        if (!empty ($action)) {
            $action_price_tv = $modx->getObject('modTemplateVar',array('name'=>$action_price_tv_name));
            $price_usd = $action_price_tv->renderOutput($p_id);
        } else {
            $price_tv = $modx->getObject('modTemplateVar',array('name'=>$price_tv_name));
            $price_usd = $price_tv->renderOutput($p_id);
        }
        $output = $price_usd * $rate;
    }
$modx->event->_output = '';
$modx->event->output($output);

return '';
09 ноября 2016, 14:22
+1
Попробуйте так:
<?php
$rate = 63; //тут курс
$output = 0;
$price_tv_name = 'price'; //Имя TV цены
$action_price_tv_name = 'action_price'; //Имя акционной TV цены

    $p_id = isset($purchaseArray['shk-id']) && is_numeric($purchaseArray['shk-id']) ? $purchaseArray['shk-id'] : 0;
    if($p_id){
	$action_tv = $modx->getObject('modTemplateVar',array('name'=>'action'));
	$action = $action->renderOutput($p_id);
        if (!empty ($action)) {
            $action_price_tv = $modx->getObject('modTemplateVar',array('name'=>$action_price_tv_name));
            $price_usd = $action_price_tv->renderOutput($p_id);
        } else {
            $price_tv = $modx->getObject('modTemplateVar',array('name'=>$price_tv_name));
            $price_usd = $price_tv->renderOutput($p_id);
        }
        $output = $price_usd * $rate;
    }
$modx->event->_output = '';
$modx->event->output($output);

return '';
03 ноября 2016, 16:55
0
Готовый — mFilter2 (из mSearch2).
Параметры тут: docs.modx.pro/components/msearch2/snippets/mfilter2
Просто делаете форму с нужными полями и передаете на страницу с результатами данные из неё GET-запросом.
А на самой странице результатов уже штатная форма фильтрации.
03 ноября 2016, 16:45
0
Можно просто на pdoResources.
Все параметры объектов забиваете в TV. Делаете сниппет Filter, который будет ловить GET-параметры и формировать строку с отбором по TV:
&tvFilters=`tv1==%***%,price<*** ....................`

Выводите на странице результатов его прямо в параметрах pdoResources:
[[pdoResources?
.........
[[!Filter]]
]]
31 октября 2016, 15:23
0
У плагина на вкладке «Системные события» отметьте галочкой OnSHKgetProductPrice.

Но плагин не меняет цену на странице товара — от просто пересчитывает ее, когда происходит добавление в корзину. Для того, чтобы выводить цену, создайте сниппет getprice:

<?php
$rate = 63; // курс
return $input * $rate;

И выводите в чанках:
[[+tv.price:getprice:num_format]]

На странице товара:
[[*price:getprice:num_format]]
31 октября 2016, 14:27
0
Попробуйте сделать плагин на событие OnSHKgetProductPrice

<?php
$rate = 63; //тут курс
$output = 0;
$price_tv_name = 'price'; //Имя TV цены
    $p_id = isset($purchaseArray['shk-id']) && is_numeric($purchaseArray['shk-id']) ? $purchaseArray['shk-id'] : 0;
    if($p_id){
        $price_tv = $modx->getObject('modTemplateVar',array('name'=>$price_tv_name));
        $price_usd = $price_tv->renderOutput($p_id);
	$output = $price_usd * $rate;
    }
$modx->event->_output = '';
$modx->event->output($output);

return '';
31 октября 2016, 11:48
+7
По поводу тся и ться есть очень простое правило:
Если слово отвечает на вопрос, в котором нет мягкого знака, то он и не пишется.
Если в самом вопросе есть мягкий знак, то и в слове он ставится.

Например:
Стараться (что делатЬ?), соответственно, пишем.
Ставится (что делает?) нет Ь, вот и не пишем.
07 октября 2016, 19:57
+1
Если без какого-то особого функционала, то можно использовать стандартные хуки FormIt: FormItAutoResponder и FormItSaveForm.
Там «из коробки» есть фильтрация по имени формы, датам и экспорт в CSV.
03 октября 2016, 09:58
0
Чанк descResourseTpl точно есть?
29 сентября 2016, 20:06
0
Если TV с картинкой называется wsimages, то так:
[[pdoResources?
&parents=`[[*id]]`
&tpl=`sl_img`  
&includeTVs=`wsimages`
]]

В чанке sl_img путь к картинке, соответственно,
[[+tv.wsimages]]
28 сентября 2016, 23:10
+3
В документации есть нечто подобное.
27 сентября 2016, 16:41
2
+1
Поправочка (всё-таки ошибся))):

{var $av = $_pls['tv.aviable']}
{if $av == 0}
	Нет в наличии
{else}
	{if $av > 1 && $av < 10}
		<i class="fa fa-circle"></i>
	{else}
		{if $av >= 10 && $av < 30}
			<i class="fa fa-circle"></i> <i class="fa fa-circle"></i>
		{else}
			{if $av >= 30}
				<i class="fa fa-circle"></i> <i class="fa fa-circle"></i> <i class="fa fa-circle"></i>
			{/if}
		{/if}
	{/if}
{/if}
26 сентября 2016, 15:04
+1
Истина, как всегда, посередине ))
Я обычно пляшу от удобства дальнейшей работы заказчика в админке.
Если требуются какие-либо особые доп. поля, или хитрое оформление редактора и т. д., то выношу в отдельный шаблон.
Таким образом для стандартного магазина получается «Главная страница», «Стандартная страница», «Категория», «Товар», «Новость, публикация» ну еще пара служебных.
Корзину, поиск и все страницы, которые не требуют своих TV или какой-то особой верстки, делаю на «Стандартной странице» с условиями (обычно по ID) на Fenom.
25 сентября 2016, 11:50
0
Я про контексты написал из-за Вашей фразы:
Затем, что разграничить доступ к админке для разных городов проще и лучше с контекстами, чем ресурсами.

Если же ресурсами-контейнерами, то выше )).
24 сентября 2016, 17:15
+1
Если общие страницы одинаковые, то можно вынести их в основной контекст:
Web
    О компании
    Новости
    Контакты
...

Город 1
    Объект 1
    Объект 2
...

Город 2
    Объект 1
    Объект 2
...

И в сниппетах просто указывать, откуда забирать ресурсы:
[[pdoMenu?
&context=`web`
...

Если же у каждого контекста своя структура с различными разделами (например, новости только для этого города, контакты и т. д.):
Город 1
    Новости (5)
        Новость 1 (6)
        Новость 2 (7)
        Новость 3 (8)
        ...
    Контакты (9)
    Каталог (10)
        Объект 1 (11)
        Объект 2 (12)
    ...

Город 2
    Новости (13)
        Новость 1 (14)
        Новость 2 (15)
        Новость 3 (16)
        ...
    Контакты (17)
    Каталог (18)
        Объект 1 (19)
        Объект 2 (20)
    ...

то можно использовать настройки контекста. В случае, допустим, с новостями добавляете у каждого параметр page_news, где указываете ID страницы «Новости» этого контекста-города. В примере выше для первого это 5, для второго — 13 и т. д.

Тогда в общем (единственном) шаблоне в вызовах просто пишете:
&parents=`[[++page_news]]`

Для меню же вообще не указываете контекст — по умолчанию выводится все из текущего.
24 сентября 2016, 16:29
+1
Тогда так и делайте: контекст = город.
Про чанки и шаблоны не совсем понял. Без описания структуры меню (есть ли общие для каждых городов страницы, например) сложно сказать что-то конкретное.
24 сентября 2016, 16:05
+1
Домен у Вас один — зачем разносить города по разным контекстам?
Сделайте 14 контейнеров-городов с объектами внутри. Хотите, в общем контексте, хотите вынесите в отдельный для удобства.
Фильтровать в общем каталоге можно по родителю.
Если нужно, ресурс со сниппетом для Ajax-запроса можете сделать в любом контексте.
24 сентября 2016, 12:58
+1
Страницу фильтрации, можно открывать сразу с параметром:
http://site.ru/catalog/?city=Москва

Параметр и значение зависят от реализации. Это может быть как название города, так и ID ресурса или еще какой уникальный идертификатор.
24 сентября 2016, 11:42
+1
Смотря, что Вам требуется.
Если нужна фильтрация предложений на странице каталога, то да — можно использовать mSearch (вернее, mFilter, идущий с ним в комплекте).
Если достаточно просто списка предложений на страницах городов/регионов, то хватит TV и какого-нибудь сниппета, выводящего ресурсы (getResources, pdoResources, getProducts и т. д.).