Как добавить элемент в несколько списков в саду? - PullRequest
2 голосов
/ 14 июня 2011

Я создаю прототип cms orchardproject.net.Я создал тип контента "продукт".Я создал список под названием «Список дешевых товаров» и вызов списка «Список забавных продуктов».Это прекрасно работает, пока у меня нет продукта, который должен быть и в забавных, и в дешевых списках.

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

Должен ли я написать конкретную реализацию, используя пример «один ко многим» на участке сада, прежде чем пытаться написать общую?Dan

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Вам следует рассмотреть возможность использования таксономий вместо списков в этом сценарии.Дешево и весело должны быть термины таксономии, а не контейнеры.Код не требуется.

1 голос
/ 14 июня 2011

Orchard, по умолчанию, позволяет одному элементу контента быть назначенным одному списку, но вы можете создать свою собственную реализацию.Это не так сложно реализовать, как может показаться.Тот факт, что такой возможности нет, объясняется тем, что в последнее время команда сосредоточилась на более важных вещах (например, производительности).

Посмотрите на Orchard.Core.Containers и Orchard.Списки , чтобы увидеть, как они реализованы.Например, вы можете создать свою собственную деталь, которая позволит прикрепить произвольный элемент к различным спискам, и создать контроллер, который будет создавать окончательную форму.

Проверьте Orchard.Core.Containers.Controllers.ItemController - там происходит вся магия.Идентификатор соответствующего контейнера (который вы выбираете из списка выбора " Добавить в:") содержится в свойстве CommonPart.Container.Id, поэтому вы можете следовать этому шаблону и создать деталь, которая будет содержать коллекциюИдентификаторы, прикрепите это к типам контента, которые вы хотите, и выполните рендеринг точно так же, как в этом ItemController.

...