Много-много-много отношений в Кентико - PullRequest
10 голосов
/ 08 марта 2011

Существуют ли передовые практики по созданию реализации Kentico CMS Portal, основанной на отношениях «многие ко многим» (т. Е. Веб-сайт, который продает продукты питания и имеет большой раздел с рецептами - каждый продукт используетсямного рецептов, каждый рецепт может использовать многие продукты, продаваемые на сайте)?

Является ли Kentico просто неправильным инструментом для этого или в Kentico есть решения для такого рода отношений?

Ответы [ 6 ]

7 голосов
/ 10 марта 2011

Я бы рассмотрел встроенную систему Сопутствующие документы . На вкладке свойств документа есть раздел для связанных документов. Функциональность описана здесь:

Свойства документа, связанные документы

Если бы это был большой функционал для вашего сайта, вы могли бы добавить этот раздел в качестве другой вкладки к существующим вкладкам Страница, Дизайн, Форма, Свойства для более удобного доступа. Вам просто нужно изменить область Модули Управление сайтом -> Разработка . Другое замечание: это технически однонаправленные отношения, но вы можете структурировать свои запросы так, чтобы они шли в обоих направлениях:

SELECT *
FROM CMS_Document d
JOIN CMS_Relationship r 
    ON (d.DocumentID = r.LeftNodeID
    OR d.DocumentID = r.RightNodeID)
Where DocumentID = 100

Приведенный выше код соединит таблицу CMS_Document с таблицей CMS_Relationship, чтобы предоставить вам все связанные документы для документа с идентификатором 100.

Если вы возьмете пик в базе данных, структура таблицы для связанных документов будет ОЧЕНЬ проста:

Related Document Tables

Так что, как предложил МакБеев, я бы создал пользовательские типы документов для продуктов и рецептов. Тогда вы можете связать их, как я изложил выше. Удачи!

2 голосов
/ 02 августа 2011

Из коробки он не очень хорошо поддерживает многие ко многим, однако вы должны быть в состоянии сделать это с небольшим количеством индивидуальной разработки.Создайте 2 пользовательских типа документов, таких как Рецепты и продукты, а затем создайте пользовательский элемент управления Form для управления связями.Затем вы размещаете элемент управления формы на странице, чтобы поля можно было управлять на вкладке Форма узла.Элемент управления Form (или 2, если вы хотите управлять из обоих типов) будет элементом управления типа «многие ко многим», таким как список флажков или множественный выбор.Затем при сохранении вы будете использовать API или код SQL для сохранения в таблицу соединений, а не сам документ (или дочерний тип документа).Вам может потребоваться создать таблицу соединений вручную.

http://www.kentico.com/docs/devguide/index.html?developing_form_controls.htm

0 голосов
/ 27 января 2017

Это можно сделать напрямую с помощью Kentico CMS и без написания какого-либо специального кода или запроса.

К счастью, я написал статью об этом и успешно реализовал ее, что дает администратору контента достаточно гибкости для управления реляционнымиданные без необходимости разработчика.

Связанный контент через повторитель

0 голосов
/ 21 мая 2011

Я сталкивался с этим несколько раз и придумал быстрый способ обойти иерархию «родитель-потомок» дерева контента, используя функцию sql и репитер sql. Это ни в коем случае не надежная реализация. Если бы это было вашей насущной потребностью, я бы согласился, что пользовательские таблицы - это, вероятно, путь.

Я только что опубликовал подробную версию того, что сделал. Я нашел это, когда искал, чтобы увидеть, был ли он проиндексирован. Вы можете увидеть это здесь:

http://www.kenticosolutions.com/Developer-Tips/Tip/May-2011/Many-to-Many-relationships-in-the-Kentico-CMS-Cont.aspx

0 голосов
/ 09 марта 2011

Вы также можете пройти долгий путь, создавая собственные типы документов для своих продуктов и рецептов, а затем использовать встроенную функцию «Ссылка на существующий документ».

Я согласен с dvanbale, но вы можете сделать это и с помощью пользовательских таблиц.

Это зависит от того, что именно вы хотите сделать.

0 голосов
/ 09 марта 2011

Использование пользовательских таблиц и написание собственных веб-частей помогут вам в достижении этих целей.

...