Денис Усачев

Денис Усачев

Был в сети 08 сентября 2025, 16:16
Заказы не принимаю
Володя
Володя
Вячеслав Варов
Вячеслав Варов
Вот рабочий пример
<div id="pdopage" class="catalog-line-core">
			{$_modx->runSnippet('!mSearch2', [
    				'returnIds' => 1, 
 				'limit' => 0,
    				'toPlaceholder' => 'result'
			])}
			{if $_modx->getPlaceholder('result')==''}
				По данному запросу ничего не найдено, попробуйте исправить запрос.
			{else}
				[[!pdoPage?
  					  &element=`msProducts`
  					  &parents=`0`
       					  &resources=`[[+result]]`
					  &limit=`9`
				]]
          </div>
			[[!+page.nav]]
{/if}
Андрей
Андрей
Можно попробовать так заколхозить :)

{'!pdoMenu' | snippet:[
	'parents' => 0,
	'level' => 2,
	'tplOuter'=>'@INLINE <ul id="menu" class="clearfix">{$wrapper}</ul>',
	'tplInner'=>'@INLINE <div class="sub-menu-wrap"><ul>{$wrapper}</ul></div>'
	'tpl'=>'tpl.megamenu'
]}

tpl.megamenu:
{if $id == 2}
	<li class="dropdown has-megamenu"><a href="#">{$menutitle}</a>
		<div class="sub-menu-wrap mega-menu flex-row">
			
			{'pdoMenu' | snippet : [
				'parents'=>$id,
				'level'=>2,
				'outerTpl'=>'@INLINE {$wrapper}',
				'innerTpl'=>'@INLINE <ul>{$wrapper}</ul>',
				'tpl'=>'@INLINE <div class="mega-submenu"><h5 class="mega-title"><span class="cicon-heating"></span>{$menutitle}</h5>{$wrapper}</div>',
				'tplInnerRow'=>'@INLINE <li><a href="{$link}">{$menutitle}</a></li>'
			]}
			
		</div>
	</li>
{elseif $id == 3}
	<li class="dropdown"><a href="{$link}">{$menutitle}</a>{$wrapper}</li>
{else}
	<li {$classes}><a href="{$link}" {$attributes}>{$menutitle}</a>{$wrapper}</li>
{/if}

В проверке соответственно подставить свои id нужных страниц.

p.s. Вызов на Fenom, для него должна быть включена настройка — Использовать Fenom на страницах, или перепишите на обычный синтаксис.
Aleksandr Huz
Aleksandr Huz
Написать сниппет или модификатор, если используется fenom.
Самый простой:
<?php
$arr= explode(',',input);
$result = [];
foreach($arr as $val){
    swicth ($val) {
        case: 'Лучшие': $result[] = 'best'; break;
        case: 'Аеро': $result[] = 'aero'; break;
        case: 'Все': $result[] = 'all'; break;
        default: $result[] = $val; 
    }
}
$output = implode(",", $result);
return $output;
Вызов:
[[!snippet? &input=`[[+tv.name]]`]]
Володя
Володя
феном приходит на помощь… В чанке продукта вверху добавить
{if $tmp = $.request['msop|price']|split}
    {var $m = '!msOptionsPrice.modification'|snippet:[
    'product' => $id,
    'limit' => 1,
    'return' => 'data',
    'where' => ["msopModification.price >= "~$tmp[0]~" AND msopModification.price <= "~$tmp[1]],
    ]}
    {set $m = $m[0]}
    {if $m.price?}{set $price = $m.price}{/if}
{/if}
Владимир
Владимир
еще такой вопрос:
пытаюсь сделать автоматическую конвертацию цены в долларах в гривну на сайте.
создал плагин «currency», с таким содержимым:
<?php
switch($modx->event->name) {
    case 'msOnGetProductPrice':
        $values = & $modx->event->returnedValues;
        $values['price'] = round($price * 27);
        break;
}
и добавил его к событию msOnGetProductPrice в плагине miniShop2
приоритет поставил выше плагина msOptionsPrice (11)

на сайте цена меняется, но когда переключаю цену с помощью модификаторов, она не меняется (( как ее можно заставить меняться в модификаторах?