Максим Кузнецов

Максим Кузнецов

Был в сети 04 августа 2021, 21:51
Заказы принимаю
Без обид, я знаю, что ты хороший программист, судя по некоторым твоим постам и ответам, но зачем здесь о политике и паранойе?) Да и какая, в сущности, разница — сколько у твоих сообщений минусов и плюсов.

Что же до озвученного вопроса — на мой взгляд, лезть в ядро и менять системные файлы — всегда некрасивое и не универсальное решение, так что первый вариант с доработкой напильником, имхо, самый верный.
Если опустить оптимизацию, можно через api написать сниппет, запускающий pdoTools и смотреть параметр total, после чего делить его на 3, определять остаток и в return возвращать полученное количество дивов, в которые заключать плейсхолдеры. [[+myPlN]]
— реализуешь функционал (со стороны бэкэнда или, в зависимости от получаемого ответа на фронтэнде (результат оплаты — true, допустим)), который будет добавлять юзеру 2 дополнительных поля (можно в одно уместить, думаю, но с 2-мя нагляднее) — включен ли премиум (0/1) и до какого времени (дата, можно через нее одну работать без премиум-поля)

— на странице, где выводится премиум контент реализуешь:
а) проверку авторизован ли юзер и если нет — требование авторизоваться
б) проверяешь, есть ли у него соответствующие доп.поля и удовлетворяют ли они условиям, если да -> выгружаешь контент, если нет -> предлагаешь взять премиум.
можно..)

сам шаблон — визуальная составляющая сайта и натягивается исключительно при помощи html+css+js, без сильной зависимости от программной части.

А вот подцеплять данные к нему из разных частей сайта — вопрос уже другой и вряд ли будет функционировать «из коробки» данной темы к Boostrap'y.
Подскажите пожалуйста ответ на вопрос по поводу значений из селектов для TicketForm:

Есть html-кусок в чанке создания тикета для TicketForm:
<select class="roundInput" name="news.Category">
	[[!getTv? &tvName=`news.Category`]] 
</select>

И сниппет getTv, который подцепляет возможные значения tv-поля:
<?php
	$getCategory = $modx->getObject('modTemplateVar',array('name'=>$tvName));
	$getCategory = $getCategory->get('elements');
	$getCategory = explode('||',$getCategory);

	if (!isset($defaultText)) {$defaultText = 'Выберите категорию';}
	
	if (in_array($current, $getCategory)) {
		echo '<option disabled="disabled" value="">'.$defaultText.'</option>';
	}
	else {
		echo '<option disabled="disabled" selected="selected" value="">'.$defaultText.'</option>';
	}
	
	foreach($getCategory as $key => $value) {
	 	$row = explode('==',$value);
	 	if ($current == $row[1]) {
	 		echo '<option selected="selected" value="' . $row[1] . '">' . $row[0] . '</option>';
	 	}
		else {
			echo '<option value="' . $row[1] . '">' . $row[0] . '</option>';	
		}
	 }

— который формиует option поля. Но TicketForm не воспринимает выбранное значение при добавление тикета и просит заполнить соответствующее поле. Подскажите, пожалуйста, в чем может быть причина?
Нашел небольшой баг с js-скриптом — если с обычной страницы перейти на страницу с пагинацией (или наоборот) и после воспользоваться кнопками браузера следующая/предыдущая страница — поле контента (даже если возвращаешься на страницу без пагинации) применяет свойство opacity: .3 и останавливается на этом.