7 апр. 2014 г., 18:04

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

Здравствуйте гуру модиксеры. Вынужден обратиться за помощью в силу того, что не очень разбираюсь в ExtJS.
Делаю сейчас Компонент «Афиша». Там есть 2 вкладки Афиши и Компании:
?
Возникли следующие сложности. Распишу по пунктам:
1. Как видно на скриншоте при нажатии на поле Скрытое меню появляются варианты «Да» и «Нет». В базу сохраняется 1 или 2. Но можно ли как-нибудь в поле сохранять Да или Нет? А то после сохранения вот что появляется:
?
А после обновления страницы эти поля пустые становятся.
2. Как сделать, чтобы в поле Изображение, создавалась маленькая превьюшка, скажем 50 на 50:
?
А при нажатии на неё раскрывалось большое, но обрезанное изображение.
3. Как на второй вкладке вывести таблицу из базы с компаниями и убрать вторую форму с поиском?
?
4. И как сделать у Афиш выпадающее меню со списком скажем клубов, чтобы привязка была и афиши выводились в карточке компании например?
?
В базу сохраняется 1 или 2. Но можно ли как-нибудь в поле сохранять Да или Нет? А то после сохранения вот что появляется:
В базу сохраняется как раз то, что нужно. Просто на колонку надо навешать renderer, типа так:
renderer: function(value){ return value == 1 ? "Да" : "Нет"; }
2. Как сделать, чтобы в поле Изображение, создавалась маленькая превьюшка, скажем 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, ));

Добавить комментарий