Создание своего компонента в MODX Revo 2.*

Здравствуйте гуру модиксеры. Вынужден обратиться за помощью в силу того, что не очень разбираюсь в ExtJS.

Делаю сейчас Компонент «Афиша». Там есть 2 вкладки Афиши и Компании:

Возникли следующие сложности. Распишу по пунктам:

  1. Как видно на скриншоте при нажатии на поле Скрытое меню появляются варианты «Да» и «Нет». В базу сохраняется 1 или 2. Но можно ли как-нибудь в поле сохранять Да или Нет? А то после сохранения вот что появляется:

А после обновления страницы эти поля пустые становятся.

  1. Как сделать, чтобы в поле Изображение, создавалась маленькая превьюшка, скажем 50 на 50:

А при нажатии на неё раскрывалось большое, но обрезанное изображение.

  1. Как на второй вкладке вывести таблицу из базы с компаниями и убрать вторую форму с поиском?

  2. И как сделать у Афиш выпадающее меню со списком скажем клубов, чтобы привязка была и афиши выводились в карточке компании например?

Comments

В базу сохраняется 1 или 2. Но можно ли как-нибудь в поле сохранять Да или Нет? А то после сохранения вот что появляется:

В базу сохраняется как раз то, что нужно. Просто на колонку надо навешать renderer, типа так:

renderer: function(value){
    return value == 1 ? "Да" : "Нет";
}
  1. Как сделать, чтобы в поле Изображение, создавалась маленькая превьюшка, скажем 50 на 50:

То же самое и с картинками, renderer рулит. В общем, это не MODX надо изучать, а ExtJS. newpg.ru/documentation/extjs.html

Вроде разобрался:

,renderer: function(value){
				return '<a href="/' + value + '"><img width="50" src="/' + value + '"></a>';
			}

А как мне большое изображение во всплывающем окне вывести? Есть какие-нибудь классы уникальные для этого?

Лепота какая)))

Даже Fancybox? Мне кажется и в ExtJS есть какие-нибудь всплывающие окна, но по примерам не разберусь какой мне нужен.

Не знаю где спросить… Не подскажите как сделать поиск по товарам чтобы выводилось через fetch, может где готовый компонент есть =)?

Вообще проще всего использовать процессор web/resources/getdata. Но если у вас задача перебрать большое количество товаров, то да, надо запрос делать на чистом xPDO. Но надо для этого четко понимать что есть что. ShopmodxResourceProduct — производный от modResource класс документа товара. ShopmodxProduct — дополнительный класс товара. По сути, чтобы получить только товары, надо в запросе таблицы этих объектов объединить джоином. Вот пример выборки:

$q = $modx->newQuery('modResource');
$q->innerJoin('ShopmodxProduct', 'Product');
$q->where(array(
    "deleted" => 0,
    "published" => 1,
));
$q->select(array(
    "modResource.*",
));
$s = $q->prepare();
$s->execute();
while($row = $s->fetch(PDO::FETCH_ASSOC)){
    // Ваш код
}

А там уже можете добавить условия поиска. К примеру, хотите в условие добавить товары в ценовой вилке 100 — 5000 рублей. Добавляете условие:

$q->where(array(
    "Product.sm_price between 100 and 5000",
));

или

$q->where(array(
    "sm_price:>=" => 100,
    "sm_price:<" => 5000,
));