Николай Загумённов

Николай Загумённов

Был в сети 19 июня 2026, 19:34
Заказы не принимаю
Решил такую же проблему по выводу прадедушек резиновым костылем в файле filter.class.php добавил:
public function buildGrandParentslvl2Filter(array $values, $name = '', $filter = false) {
		if (count($values) < 2 && empty($this->config['showEmptyFilters'])) {
			return array();
		}
		$gp_array_id = array_keys($values);
		$grandparents = array();
		$q = $this->modx->newQuery('modResource', array('id:IN' => array_keys($values), 'published' => 1));
		$q->select('id,parent');
		$tstart = microtime(true);
		if ($q->prepare() && $q->stmt->execute()) {
			$this->modx->queryTime += microtime(true) - $tstart;
			$this->modx->executedQueries++;
			while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
				$grandparents[$row['id']] = $row['parent'];
			}
		}

		$tmp = array();
		foreach ($values as $k => $v) {
			if (isset($grandparents[$k]) && $grandparents[$k] != 0) {
				$parent = $grandparents[$k];
				if (!isset($tmp[$parent])) {
					$tmp[$parent] = $v;
				}
				else {
					$tmp[$parent] = array_merge($tmp[$parent], $v);
				}
			}
			else {
				$tmp[$k] = $v;
			}
		}
		$values = $tmp;
		$tmp = array();
		$q = $this->modx->newQuery('modResource', array('id:IN' => array_keys($values), 'published' => 1));
		$q->select('id,parent');
		$tstart = microtime(true);
		if ($q->prepare() && $q->stmt->execute()) {
			$this->modx->queryTime += microtime(true) - $tstart;
			$this->modx->executedQueries++;
			while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
				$grandparents[$row['id']] = $row['parent'];
			}
		}
		foreach ($values as $k => $v) {
			if (isset($grandparents[$k]) && $grandparents[$k] != 0) {
				$parent = $grandparents[$k];
				if (!isset($tmp[$parent])) {
					$tmp[$parent] = $v;
				}
				else {
					$tmp[$parent] = array_merge($tmp[$parent], $v);
				}
			}
			else {
				$tmp[$k] = $v;
			}
		}
		//print_r($tmp); die();
		return $filter
			? $tmp
			: $this->buildParentsFilter($tmp, $name, 0);
	}

	public function filterGrandParentslvl2(array $requested, array $values, array $ids) {
		$values = $this->buildGrandParentslvl2Filter($values, '', true);

		return $this->filterDefault($requested, $values, $ids);
	}
beta2

Сразу вот такое у меня вылезло:
yadi.sk/i/Z2CHFjdJgvFcE

Также долго не мог понять в чём дело. Я добавляю множественный список, туда ввожу нужные мне значения, сохраняю, а последнее значение не сохраняется. И что бы я ни делал — всё время последнее новое значение «идёт боком». Это особенность такая или всё-же ошибка?

P.S.: Скажите, а почему нет фирменной фишки минишоп2 — minishop2-combobox? Без него, как без рук! Это получается, чтобы добавить новый пункт в селект — надо лезть в настройки опций, там искать нужную опцию и только там добавлять новый пункт, а потом ещё и в товаре его выбирать? Может ещё не поздно исправить это недоразумение?)
При открытии страницы категории товаров JS не проставлял цены автоматом, ставил только для последнего товара. Пришлось добавить строчку в JS файл:

,initialize: function() {
        msop2.setup();
        // jQuery
        if (typeof jQuery === 'undefined') {
            document.write('<script src="'+msop2Config.jsUrl+'web/lib/jquery.min.js"><\/script>');
        }
        // listeners
        $(document).on('change', msop2.par.msform, function() {
            msop2.price.get(this);
        });
        // ready
        $(document).ready(function() {
            var $this = $(msop2.par.msform);
            		
			/* >> вот тут дописал */
			$.each( $this , function( index, value ) {
				msop2.price.get( value );
			});
			/* << вот тут дописал */
        });
    }
[[!pdoResources?
     &parents=`378`
     &depth=`0`
     &tpl=`@INLINE <li><img src="{$modx->runSnippet("phpthumbon", [ 'input' => $modx->getObject('modResource', $id)->getTVValue('image'), 'options' => '&w=340&h=540&zc=1' ])}" /></li>`
      &limit=`6`
      &includeTVs=`image`
      &sortby=`{"publishedon":"DESC"}`
]]
Вот так вывел, через {$tvname} не получилось.
Все работает. Благодарю за помощь.

На тестовом сайте на modhost.ru все было нормально, а у меня что-то требовалась модерация.

Действовал я немного топорным способом: переустановил Tickets (не знаю зачем=), вроде там не ковырялся) и Ticketmessages и поменял все скрипты еще раз, после этого я удалил все старые ветви комментариев, чтобы создались новые.

Кажется надо было просто удалить старые ветви=))