Константин Обухов
С нами с 03 марта 2016; Место в рейтинге пользователей: #333[mSearch2] Версия 1.4.0 с поддержкой History Api
Представляю вам новую версию mSearch2, в которой сильно доработан стандартный javascript.
Теперь фильтры реагируют кнопки браузера взад-вперёд — это поддержка событий History Api. Пришлось повозиться, но работают все стандартные элементы: чекбоксы, радиокнопки, селекты, выбранное, сортировка, лимит и шаблон.
Заходите на страницу поиска, нажимайте на всякие фильтры, а потом тыкайте в браузере кнопочку назад — и в фильтре всё поменяется, как было натыкано. В общем, прикольно, давно просили.
Теперь фильтры реагируют кнопки браузера взад-вперёд — это поддержка событий History Api. Пришлось повозиться, но работают все стандартные элементы: чекбоксы, радиокнопки, селекты, выбранное, сортировка, лимит и шаблон.
Заходите на страницу поиска, нажимайте на всякие фильтры, а потом тыкайте в браузере кнопочку назад — и в фильтре всё поменяется, как было натыкано. В общем, прикольно, давно просили.
Помогите разобраться с leftJoin и where
День добрый. Пытаюсь сделать выборку товаров, имеющих в опции ps_type определенные значения.
Есть список товаров:
Делаю это через leftJoin и where:
Я не слишком хорошо знаком с механизмами SQL, но глядя на это условие, у меня возникает ощущение, что я пытаюсь найти строки в которых значение ps_type одновременно равно и «Подвесной», и «Административный», что, закономерно, ни к чему не приводит. Насколько я понимаю, мне нужно разносить значения, между которыми должно быть условие AND в разные опции? Или я неправильно понимаю?
Есть список товаров:
Товар 1; Административный, ПодвеснойНужно выбрать 1 и 2.
Товар 2; Административный, Промышленный, Подвесной
Товар 3; Промышленный, Подвесной
Делаю это через leftJoin и where:
[[!msProducts?
&parents=`2`
&leftJoin=`{
"ps_type": {
"class": "msProductOption",
"on": "ps_type.key = 'ps_type' AND ps_type.product_id = msProduct.id"
}
}`
&where=`{"ps_type.value:LIKE": "Подвесной", "AND:ps_type.value:LIKE": "Административный"}`
]]
Результатов у данной выборки нет.Я не слишком хорошо знаком с механизмами SQL, но глядя на это условие, у меня возникает ощущение, что я пытаюсь найти строки в которых значение ps_type одновременно равно и «Подвесной», и «Административный», что, закономерно, ни к чему не приводит. Насколько я понимаю, мне нужно разносить значения, между которыми должно быть условие AND в разные опции? Или я неправильно понимаю?
Пугает размер базы данных
Заглянула в базу одного моего новостного сайта и честно говоря сильно удивил размер таблицы modx_mse2_words, а весит она 265 Мб, в то время как таблица с контентом всего лишь 85Мб. Это в порядке нормы? Или как-то можно настроить этот модуль по-другому?
extJS. Свой select с данными из базы
Собственно, как создать свой combobox на extJS при этом дёргая в него данные из базы?
Вот код, который я накодил и зашёл в тупик:
Вот код, который я накодил и зашёл в тупик:
MS2: доп. поле товара (плагин) типа «checkbox»
Друзья, всем привет!
Уже несколько часов не могу найти ответа на простой, казалось бы, вопрос. Нужно добавить товару кастомное поле типа checkbox, в нашем случае оно имеет имя «outofstock». Все делаю по инструкции (текстовые поля добавлял неоднократно). Поле добавилось и работает на странице товара. Но если добавить это поле в грид категории и пытаться его отредактировать из грида, получается следующее:
Вот так выглядит плагин:
Уже несколько часов не могу найти ответа на простой, казалось бы, вопрос. Нужно добавить товару кастомное поле типа checkbox, в нашем случае оно имеет имя «outofstock». Все делаю по инструкции (текстовые поля добавлял неоднократно). Поле добавилось и работает на странице товара. Но если добавить это поле в грид категории и пытаться его отредактировать из грида, получается следующее:
- Отображается как 1/0, т.е. цифра (соответственно, checked/unchecked), а не как чекбокс;
- Если редактировать — появляется checkbox, можно поставить галку (он в момент редактирования пустой вне зависимости от имеющегося значения);
- После сохранения (перехода на другой товар) — сохраняется значение true или false, вот именно словами (в зависимости от того, была поставлена в чекбокс галка или нет);
- Если затем перезагрузить страницу, то все значения обратно становятся 0 или 1 (но при этом измененные значения сохраняются, т.е. если я на предыдущем шаге галку ставил, то показывает 1, а если нет, то 0).
Вот так выглядит плагин:
Много ли разработчиков программирует в менеджере?
Почему я спрашиваю. Продолжаю развивать мысль об улучшении кодирования в менеджере. Как я уже писал, я пишу код в phpStorm. В нем есть такая удобная как «Live Templates». Т.е. можно вставить уже готовый кусок кода. Это очень удобно. Вот мне подумалось, что можно сделать такое и в менеджере.
Как я это вижу.
Как я это вижу.
Скроллит страницу вверх при ajax пагинации pdoPage
Добрый день!
Ребята, столкнулся с такой проблемой — при выводе товаров miniShop2 через pdoPage с Ajax пагинацией, ajax пагинация работает, но страница скроллится на самый верх. Код вызова такой:
Ребята, столкнулся с такой проблемой — при выводе товаров miniShop2 через pdoPage с Ajax пагинацией, ajax пагинация работает, но страница скроллится на самый верх. Код вызова такой:
<div id="pdopage" class="list-layout products-area active">
<div class="rows">
<ul>
[[!pdoPage? &element=`msProducts`
&limit=`1` &ajaxMode=`default`
&tplPageWrapper=`@INLINE <div class="pagination"><ul>[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul></div>`
&tplPageFirst=`@INLINE <li class="prev"><a href="[[+href]]">Первая</a></li>`
&tplPageLast=`@INLINE <li class="next"><a href="[[+href]]">Последняя</a></li>`
&tplPagePrev=`@INLINE <li><a href="[[+href]]"><i class="fa fa-long-arrow-left"></i></a></li>`
&tplPageNext=`@INLINE <li class="control"><a href="[[+href]]"><i class="fa fa-long-arrow-right"></i></a></li>`
&tplPageSkip=`@INLINE <li>...</li>`
&tplPageFirstEmpty=`@INLINE <li class="prev"><a>Первая</a></li>`
&tplPageLastEmpty=`@INLINE <li class="next"><a>Последняя</a></li>`
&tplPagePrevEmpty=`@INLINE <li><a><i class="fa fa-long-arrow-left"></i></a></li>`
&tplPageNextEmpty=`@INLINE <li><a><i class="fa fa-long-arrow-right"></i></a></li>`
]]
</ul>
</div>
[[!+page.nav]]
</div>
Причем пробовал разные варианты и rows после - и т.д. ajax работает, но скроллит вверх страницы. Подскажите, в чем может быть проблема, в какой стороне копать?
mFilter2 - фильтрация категорий по дочерним товарам
Публикую решение довольно распространённой задачи. Нужно фильтровать товары, но выводить не их, а их категории. Таким образом получается фильтр категорий, но по свойствам их дочерних товаров.
Первым делом нужно разобраться в логике работы mFilter2:
Первым делом нужно разобраться в логике работы mFilter2:
- Фильтр использует для поиска и вывода ресурсов один сниппет, указанный в &elements. В случае работы с товарами там обычно указывается msProducts.
- К этому сниппету будет 2 обращения: предварительная выборка и возврат подходящих id товаров, а затем их вывод пользователю.
- Различить эти два запроса можно по присылаемому параметру returnIds.
Создать метод фильтрации для mFilter2
3 3 000
Для вывода фильтров на странице каталога используется следующий вызов mFilter2:
[[!mFilter2?
&showlog=true
&limit=`10`
&element=`msProducts`
&innerJoin=`{
"msCategory": {"class":"msCategory", "alias":"msCategory", "on":"msProduct.parent = msCategory.id"}
}`
&select=`{
"msCategory":"msCategory.id as cat_id, msCategory.uri as cat_uri, msCategory.pagetitle as cat_pagetitle"
}`
&groupby=`msCategory.id`
&parents=`7`
&class=`msProduct`
&includeTVs=`collectionCountryName,collectionCountryImage,collectionPrice`
&filters=`
parent:categories,
ms|vendor:vendors,
msoption|tile_material:default,
resource|parent:categories
`
&tpls=`tplCatalogRowTest`
&tplOuter=`tplCatalogWrapper`
&tplFilter.outer.default=`tplCatalogFilterOuter`
&tplFilter.row.default=`tplCatalogFilterCheckbox`
]]
Сборка transport-пакета без установки MODX
Писать свои пакеты для MODX не просто для новичка, да и опытному разработчику иногда не сладко приходится. Но новичок пугается, а опытный разбирается :).
Эта заметка рассказывает о том, как можно написать и собрать пакет компонента для MODX без установки и настройки самого MODX. Уровень выше среднего, так что возможно придется поломать голову в отдельных случаях, но оно того стоит.
За подробностями прошу под кат.