Василий Наумкин

Василий Наумкин

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1
Василий Наумкин
16 сентября 2013, 06:12
0
Спасибо, поправил.

Певел с Wayfinder на pdoTools, и не все плейсхолдеры поменял.
Если что — вот:
[[pdoResources?
	&depth=`0`
	&showHidden=`0`
	&sortby=`menuindex`
	&sortdir=`asc`
	&tpl=`@INLINE
		<li>
			<h3>
				<a href="/[[+uri]]">[[+pagetitle]]</a>[[+longtitle]]
			</h3>
		</li>
		<!--pdotools_longtitle <small>[[+longtitle]]</small>-->
	`
]]
Василий Наумкин
15 сентября 2013, 17:36
0
&depth — глубина выборки от родителя.

Ты выбираешь ресурсы в корне, то есть родителей у них нет. Значит, нужно указать:
&where=`{"context_key":"shop", "parent":0}`
Включай &showLog, смотри запросы — это ж SQL, нетрудно разобраться, что происходит.
Василий Наумкин
15 сентября 2013, 17:30
0
У меня пока есть только подписка на комментарии.

Сделать подписку на категорию не особо сложно — можно обойтись всего одним плагином.
Он должен уметь:
1. Подписывать\отписывать юзеров (сохранять их id в поле properties ресурса).
2. При создании новой страницы проверять parent, и если там есть подписчики — слать им письма.

Ну а вывести количество сможет простейший сниппет, который получит properties и посчитает размер массива подписчиков.

P.S. На будущее постарайся объяснять так, чтобы не возникало встречных вопросов. Все люди занятые, вытягивать подробности, чтобы тебе помочь, никому не интересно.
Василий Наумкин
15 сентября 2013, 17:23
0
На здоровье!
Василий Наумкин
15 сентября 2013, 17:20
0
[[pdoResources?
	&parents=`0`
	&resources=`-12`
	&where=`{"context_key":"shop"}`
	&depth=`0`
	&tpl=`jd.oforlist-item.tpl`
	&limit=`0`
]]

Подумаю, как улучшить работу &context.
Василий Наумкин
15 сентября 2013, 17:10
0
&showLog=`1`

Ну и эта, ты указал выводить все страницы (&parents=`0`), кроме товара с id=12 — так и выводится.

Параметр &context работает только если и &parents и &resources равны 0. Иначе он не нужен, если ты указал или ресусры или родителей.

По уму, его вообще убрать надо, чтобы не путал.
Василий Наумкин
15 сентября 2013, 16:59
0
Давай полный вызов и лог запроса, неохота гадать.
Василий Наумкин
15 сентября 2013, 16:58
0
Я должен сам догадаться о чем именно речь?

Тебе лень объяснить — мне лень отвечать.
Василий Наумкин
15 сентября 2013, 15:55
0
Посмотри в параметры сниппета, почитай описание.

Я и так уже все сделал, давай дальше сам?
Василий Наумкин
15 сентября 2013, 15:52
0
Тестим.

Изменений очень много, не хочу, что при обновлении сайты поломались. Мы же не Evolution выпускаем =)
Василий Наумкин
15 сентября 2013, 14:02
0
Да фиг знает, тогда. Попробуй из другого браузера, или из анонимного режима.

Ничего не менял, может у тебя действительно прав не хватает?
Василий Наумкин
15 сентября 2013, 14:01
0
Молодец.

Register globals нужно всегда отключать. В новых версиях php его вообще нет.
Василий Наумкин
15 сентября 2013, 13:59
0
Это, вроде, баг MODX, который толком не могут выловить и поправить.

Просто перелогинься.
Василий Наумкин
15 сентября 2013, 13:57
0
Это баг, поправлено в версии 2.1, которую я еще не зарелизил официально.

Варианта 2:
1. Изменить тип ресерса в окошке с быстрым редактированием из дерева
2. Обновиться на 2.1, но сначала нужно хорошенько про нее почитать, чтобы ничего не сломалось.
Василий Наумкин
15 сентября 2013, 13:55
0
А надо параметр &to=`[[+id]]`

Это не я придумал — это хлебные крошки строятся, как бы, от корня к ресурсу.
Василий Наумкин
15 сентября 2013, 11:39
0
Тогда нужно было смотреть родной MODXывый /user/update.class.php. Вот код оттуда:
public function setUserGroups() {
	$memberships = array();
	$groups = $this->getProperty('groups',null);
	if ($groups !== null) {
		$primaryGroupId = 0;
		/* remove prior user group links */
		$oldMemberships = $this->object->getMany('UserGroupMembers');
		/** @var modUserGroupMember $membership */
		foreach ($oldMemberships as $membership) { $membership->remove(); }

		/* create user group links */
		$groupsAdded = array();
		$groups = is_array($groups) ? $groups : $this->modx->fromJSON($groups);
		$idx = 0;
		foreach ($groups as $group) {
			if (in_array($group['usergroup'],$groupsAdded)) continue;
			$membership = $this->modx->newObject('modUserGroupMember');
			$membership->set('user_group',$group['usergroup']);
			$membership->set('role',$group['role']);
			$membership->set('member',$this->object->get('id'));
			$membership->set('rank',isset($group['rank']) ? $group['rank'] : $idx);
			if (empty($group['rank'])) {
				$primaryGroupId = $group['usergroup'];
			}
			$memberships[] = $membership;
			$groupsAdded[] = $group['usergroup'];
			$idx++;
		}
		$this->object->addMany($memberships,'UserGroupMembers');
		$this->object->set('primary_group',$primaryGroupId);
	}
	return $memberships;
}
Василий Наумкин
15 сентября 2013, 10:28
0
Держи новую версию pdoTools — там добавлен сниппет pdoCrumbs, который выводит родителей от указанного ресурса.

Работает довольно быстро. Например у меня в поиске вывод навигации у каждой строки добавляет всего 0.15 — 0.2 сек для страницы.
Параметры примерно совместимы с BreadCrumb.

Потестируй, если все окей — буду выпускать.
Василий Наумкин
15 сентября 2013, 09:24
0
Это у нас там не сделан вывод сообщений об ошибке каждого поля.

В консоле видно, что от сервера приходит
email:Этот адрес электронной почты уже используется!
То есть, ты уже занял свой email при авторизации через gmail.
Василий Наумкин
15 сентября 2013, 06:09
0
Постараюсь сегодня выкатить pdoCrumbs — он быстро строит хлебные крошки, должен решить твой вопрос.
Василий Наумкин
14 сентября 2013, 23:39
0
Office регистрирует юзеров, в группы, которые указаны в параметре &groups сниппета officeAuth.

Посмотри в processors/auth/create.class.php метод setUserGroups() — это то, что тебе нужно.