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

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

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1
21 октября 2014, 15:56
0
Принимать письма лучше сторонним почтовым сервисом, типа Яндекс Почта для Доменов.

Делать свой почтовик очень сложно и бессмысленно.
21 октября 2014, 11:57
0
Не пачку папок, а именно сами галереи.
Вот как я должен был понять, что речь идёт об одной галерее, а не нескольких?

Укажи id ресурса, который тебе нужен:
&where=`{"resource_id":15,"path:LIKE":"%/120x90/","active":1}`
21 октября 2014, 10:26
0
store.simpledream.ru/ms2gallery — последний пример.

Если нужно только превьюшки, без больших картинок, то всё еще проще:
[[!pdoPage?
	&element=`pdoResources`
	&loadModels=`ms2gallery`
	&class=`msResourceFile`
	&tpl=`@INLINE <img src="[[+url]]" />`
	&where=`{"path:LIKE":"%/120x90/","active":1}`
	&limit=`10`
	&sortby=`id`
	&sortdir=`ASC`
]]
[[!+page.nav]]
Можно еще добавить
&groupby=`resource_id`
21 октября 2014, 08:50
0
Спасибо, исправил — можно обновляться.
21 октября 2014, 08:31
+1
Ну раз не нравится, как отвечаю — больше не буду.

Извини, пожалуйста.
21 октября 2014, 07:30
0
Я наверное, не по-русски пишу, потому что меня всё реже стали понимать.

Добавь, пожалуйста, метод formRepair в класс Auth, который что-то вернёт. Желательно, как минимум:
public function formRepair() {
	return $this->success('Ура! Работает!');
}
Если такого метода нет, или он ничего не возвращает, или возвращает false — будет такая ошибка, как у тебя.

Нет никаких допустимых корректных action, есть только доступные методы в классе.
20 октября 2014, 21:04
0
Продемонстрируй, пожалуйста, на h.simpledream.ru — а то непонятно, в чем проблема.
20 октября 2014, 18:49
0
Дима, мне сколько раз нужно повторить, что мы не выбираем ничего дополнительно?

Объясняю так, чтобы ты понял:
[[!pdoPage:default=`<div class=\"fool\"><p>К сожалению, товары с указанными параметрами отсутствуют. За помощью в подборе, Вы можете обратиться по телефону <span>+7(xxx) xxx-xx-xx</span>.</p></div>`?sortby=`Data.price`  
	&element=`msProducts` 
	&parents=`2`
	&showLog=`1`
	&tpl=`tpl.msProducts.row`
	&limit=`72`
	&includeThumbs=`120х90`
	&prepareSnippet=`твойсниппет`
]]
Дошло?

Нужно просто попросить msProducts вместе с твоими товарами выбрать им картинки — он это умеет. А дальше делай с ними что хочешь в prepareSnippet.

Вместо
[[!imgGet? &pId=`[[+id]]` &key=`0`]]
пиши
[[+120x90]]

Я не знаю, как еще объяснить. bezumkin.ru/modx/minishop2/snippets/917/
20 октября 2014, 17:53
0
Не images, а thumbs — я ошибся. Но в любом случае, ты меня вообще не понял:
[[!msProducts?
	&includeThumbs=`120х90`
	&parents=`0`
	&prepareSnippet=`твойсниппет`
]]

Внутри $row должна быть ссылка на картинку товара:
echo $row['120x90']; die;
20 октября 2014, 17:50
0
Зайди в системные настройки ms2gallery и включи выставление плейсхолдеров на странице.

Там прямо в параметрах написано, как использовать.
20 октября 2014, 16:10
1
0
msProducts сразу выбирает картинки, если указан &includeImages и точно так же позволяет указывать prepareSnippet.

Используй его и картинки уже будут в $row. Вообще, посмотри, что сейчас там есть:
echo '<pre>';print_r($row);die;
20 октября 2014, 16:00
0
Ты о том, чтобы INLINE чанк превратить в обычный?

В принципе, да, это может совсем чуть-чуть сократить время загрузки, потому что парсер MODX не будет пытаться разобрать инлайновый чанк и плейсхолдеры в нём.

Но в целом, думаю, тебе нужно оптимизировать вызовы других сниппетов на странице. Можно воспользоваться для этого моим дополнением debugParser.
20 октября 2014, 15:57
0
Разве что написать в твиттер одному из админов — авось поможет.
20 октября 2014, 15:23
1
0
Да, блин, включи логику!

Рабочий код
$res = $row['bal'];
Нерабочий код
$res = $row('made');

Чем отличается рабочий код от нерабочего? Что нужно исправить?
20 октября 2014, 15:19
+1
Ну, у нас тут в основном про Revolution.

Evolution любят на modx.im.
20 октября 2014, 15:17
0
Все запросы отправляются через ajax, на вот этот коннектор.

Там загружается Office и вызывается его метод loadAction. Он разделяет запрос на 2 строки: класса и метод.

Если запрошенный метод есть в указанном классе — он будет вызван. Если нет, ты получишь ошибку:
if (isset($this->controllers[$name])) {
	/* @var officeDefaultController $controller */
	$controller = $this->controllers[$name];
	$controller->setDefault($scriptProperties);

	if (empty($action)) {$action = $controller->getDefaultAction();}
	if (method_exists($controller, $action)) {
		return $controller->$action($scriptProperties);
	}
}
else {
	return 'Could not load controller "'.$name.'"';
}

Судя по твоему сообщению, ты этого момента даже не доходишь, потому что получаешь «не могу найти указанное действие» от action.php, а он такое выводит, если получает false от loadAction.

Когда loadAction возвращает false? Когда action пустой. А это значит, что твоя форма даже не передала нужный action — вот и ошибка.

Разбирайся с тем, что же ты отправляешь на коннектор. Ну и читай исходники, конечно.
20 октября 2014, 14:26
0
$res = $row('made');
Так к ключам массивов не обращаются. Это error.
20 октября 2014, 13:36
1
0
Ты для начала попробуй простой пример:
[[!pdoResources?
	&tpl=`@INLINE <a href="/[[+uri]]">[[+pagetitle]]</a>`
	&parents=`0`
	&prepareSnippet=`mySnippet`
]]
Сниппет mySnippet:
$row['pagetitle'] .= rand();

return serialize($row);

Дальше уже усложняй и добавляй свою логику, чанки и код из сниппетов.
20 октября 2014, 13:30
+2
В чанке заменяешь
[[!getBtn? &id=`[[+id]]`]]
на
[[+getBtn]]
То есть, вместо вызова сниппета будет плейсхолдер, куда потом вставится результат.

Затем в сниппете, указанном в prepareSnippet пишешь эту свою логику определения не получая ресурс — он уже получен и находится в переменной $row!
<?php
$id = $row['id'];
$key = $row['key']; // Не знаю, что это - надеюсь, что поле ресурса

$res = $row['bal'];
if ($res < 4 && !empty($res)) {
	$row['getBtn'] .= "<button class=\"btn2 btn_grey\" type=\"submit\" id=\"nocart\" name=\"ms2_action\" >Не комплект</button>";
	// ... тут остальная твоя логика, цель которой выставить верный $row['getBtn']
}
// Serialize может проглючивать, замечал такое. Если что - пробуй еще
// return json_encode($row);
return serialize($row);
В итоге мы не получаем ресурс из БД повторно, не делаем некаких запросов, а только добавляем новое поле в массив данных, проверяя другие поля этого массива — что в итоге будет вставлено в чанк.

Никаких getObject и setPlaceholder не нужно — именно от них мы и избавляемся для большей скорости.

То есть, всё уже выбрано, ты просто подготавливаешь массив данных для оформления в чанке. Отсюда и название параметра — «подготовочный сниппет».
20 октября 2014, 13:20
0
Судя по картинке, у тебя там вообще проблема с админкой.

Должно выглядеть вот так:

Наверняка есть какие-то ошибки в javascript, поэтому и кнопки не работают.