Андрей

Андрей

Был в сети 19 сентября 2025, 19:13
Заказы не принимаю
Не знаю что за ошибка.

Но на 8 версии доп. поля не записываются в базу при заказе, а в админке при просмотре заказа просто белое окно. На 5.7 все работает.

Предлагаю автору дополнения пробежаться по коду и поправить)
Не пойму как работает параметр urls в сниппете sfMenu, что бы я там не указывал, ничего не меняется.

{'sfMenu' | snippet : [
	'rules' => '2',
	'parents' => $_modx->resource.id,
	'urls' => '2,3,4'
]}

Выводится не 3 ссылки, а все ссылки из правила
Все верно, в $products_of_the_day массив и должен быть, он содержит в себе ID товаров, где ключ массива это день, который получается из $day = date('N') (возвращает число от 1 до 7). Значение массива это ID товара.

Пример
$products_of_the_day = [22, 33, 44, 55, 66, 77, 88] // id товаров
// $day допустим вернул 5 - это пятница
// $products_of_the_day[$day - 1] вернет id товара 66

Если у вас всего 3 товара, то можете указать условие для $day, что бы заменять его значение

// не проверял на работоспособность
$day = date('N');

$products_of_the_day = explode('||', $products_of_the_day->get('value'));

if (count($products_of_the_day) < 7) {
    $day = $day - count($products_of_the_day)
}
Была такая задача, правда товар выбирался не по чекбоксам, а указывался в TV с множественным выбором

Создаем TV product_of_the_day с типом ввода Список (множественный выбор), в возможных значениях там указываем

@SELECT `pagetitle` AS `name`,`id` FROM `[[+PREFIX]]site_content` WHERE `published` = 1 AND `deleted` = 0 AND (`template` = 16) // Тут вместо 16 ваш id шаблона с товаром

Дальше плагин на событие OnLoadWebDocument
Суть такова — товар выбирается по номеру дня недели, т.е. в списке первый товар будет на понедельник, второй на вторник и т.д.
<?

// Плагин на событие OnLoadWebDocument

$products_of_the_day = $modx->getObject('modTemplateVarResource', [
	'contentid' => 4, // id ресурса к которому привязан TV
	'tmplvarid' => 80 // id TV
]);

unset($_SESSION['product_of_the_day']);

if ($products_of_the_day) {
	
	$day = date('N');
	
	$products_of_the_day = explode('||', $products_of_the_day->get('value'));
	
	if (!empty($products_of_the_day) && isset($products_of_the_day[$day - 1])) {
		$_SESSION['product_of_the_day'] = $products_of_the_day[$day - 1];
	}
	
}

В шаблоне получаем ID товара дня, можем делать с ним что угодно, в вашем случае подставить в вызов сниппета
{set $product_of_the_day_id = $.session.product_of_the_day}
Если используется fenom на страницах, можно воспользоваться параметром &return=`json` и просто вывести 2 foreach на странице, один с pagetitle, другой с content

{set $results = 'pdoResources' | snippet: [
	'parents' => 5,
	'limit' => 3,
	'return' => 'json'
] | fromJSON}

<div class="num">
	<div class="1">
		{foreach $results as $item}
			<div>{$item.pagetitle}</div>
		{/foreach}	
	</div>
	<div class="2">
		{foreach $results as $item}
			<div>{$item.content}</div>
		{/foreach}	
	</div>
</div>
Из выпадающего списка надо скрыть? Ну с помощью css скройте например по какому-нибудь уникальному параметру, либо в чанке где список выводится условие поставить — если значение новогодний, то не выводить. Можно класс расширить и там свою логику указать для отображения значений в списке.