Вывод данных из внешних таблиц на сайт

Как грамотно вывести продукцию из отдельных таблиц на сайте?
Со списком понятно, doclister работает адекватно. Но только при входе на главную страницу каталога.

А вот что делать с категориями, подкатегориями, как их передавать в doclister, хлебными крошками, чпу, меню и, собственно, страницей одного товара — не очень.

Кто как делал-расскажите.
Импорт в общее дерево не совсем подходит, столбцов по умолчанию в site_content не хватит, даже если заюзать технические. Да и не нужен этот каталог в общем дереве.

8 комментариев

avatar
По-сути ты задаешь вопрос: как использовать парсер MODX для таблиц, под которые он не заточен. Ответ напрашивается сам собой: никак. Ну или получится адовый велосипед, который будет сбоить и глючить.
Самый оптимальный на мой взгляд это импортнуть все же таблицу в древо сайта и дальше с ней шаманить. Не хочется делать кучу ТВ — так не вопрос, свяжи свою таблицу с таблицей site_content. Накинуть плагинчик для редактирования данных в кастомной таблице пи редактировании документа тоже не должно составить проблем… Если это вообще нужно…
Так что мой тебе искренней совет: не изобретай велосипед и делай по-старинке через импорт)
avatar
Слишком много связей, которые не решить через стандартное дерево документов. Например, использование собственных ID для связи товара и его комплектующих. Поэтому проще импортнуть уже полуготовый вариант, где уже прописано что петля с id таким подходит к двери с id таким. Плюс придется столбцы в site_content добавлять
avatar
Эту связку можно сделать как через тв (можно дополнить tagSaver), так и через отдельную таблицу. А сами двери и петли сложить в разные папки и отключить aliasListig для конечные товаров. Работать будет при любых объемах и уж точно в реализации проще, чем написать с нуля свой функционал создания/редактирования/роутинга и все остальное :)
avatar
В-общем, слишком много придется переделывать при импорте. Например, если сначала импортировать запчасти надо создать хотя бы таблицу соответствий вновь созданных документов и собственных ID в самой импортируемой базе. Затем в одном товаре при импорте списка компектующих в какое-то поле надо сопоставлять те ID и ID документов, еще куча похожих связей между свойствами, между соседними товарами, так что фиг знает, проще создать эти 4 отдельных таблицы на данный момент для меня. Идея с отдельной таблицей для связи это очень интересно, грубо говоря, надо-то всего два столбца — внутренний ID из импорта и ID новых документов, но всё равно не самая простая реализация
avatar
Тогда другой вопрос: Например, я разделе каталога создаю категории, в которых пишу в TV скажем, с названием, original_id оригинальный айдишник и строю массив в котором ключи — это оригинальные id категории, а значения — id вновь созданных документов. Так как категории могут быть вложены друг в друга, я их перенесу с помощью этого массива потом. Потом вновь беру список документов внутри каталога и меняю parent с помощью этой таблицы, у документа в цикле беру значение из tv и по этому ключу беру значение нового parent. Таким образом у меня дерево отсортировалось.

Рано или поздно мне надо будет импортнуть или обновить товары, это мне получается перед каждым созданием документа надо будет посмотреть в таблицу ТВшек, чтобы сопоставить оригинальный id и parent от cms?

Пока писал, вдруг понял, а разве я не могу сразу забрать все сопоставления в массив перед импортом товаров, как я это делал при сортировке категорий.

Но вообще было бы здорово, если в modresource можно было бы выбрать родителя не только по id, а по какому-то иному критерию
Комментарий отредактирован 2019-07-22 21:32:35 пользователем alexbeep
avatar
Вы хотите функционал Эво, но не используя таблицы mysql Эво и готовые решения от Эво.
  • 1px
  • 0
avatar
Mysql-то вроде не при чем… В шопкипере вроде товары были в своих таблицах. Но как они на сайт выводились и как ЧПУ работали, честно говоря, не помню.
avatar
Выводились сниппетом CatalogView, который шел в комплекте. ЧПУ не было (конкретный товар выводился также как «список» из одного товара, id которого передавался в $_GET).
Позднее появился контроллер shopkeeper для DocLister.
Но как это все работает — наверно уже никто не вспомнит :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.