Назначьте страницу двум родителям / ссылкам Silverstripe

Я использую Silverstripe для отображения элементов продукта, и иногда один элемент продукта принадлежит двум разным категориям / страницам. Можно ли назначить страницу двум родителям? Если нет, можно ли использовать ссылку для элемента продукта и связать ее с двумя разными категориями / страницами? Это примерно так:

категория / страница: Завтрак

подстраницы: ---------------------- хлеб

------------------------------------злак

категория / страница: Обед

подстраницы: ----------------------- хлеб

-------------------------------------макаронные изделия

Можно ли создать одну страницу под названием хлеб в разделе администрирования Silverstripe, но она будет меньше двух страниц (например, завтрак и обед).

Если невозможно назначить одну страницу двум родителям, могу ли я использовать ссылку для двух страниц (завтрак и обед)? Как мне с этим справиться? Любые учебники или модули?

Любая помощь приветствуется.

Спасибо, Сэм :)


person grumpypanda    schedule 12.01.2012    source источник


Ответы (1)


Если я вас правильно понял, вы хотите иметь страницы с N (1 .. *) родителями. Однако страницы имеют только одного родителя (кроме корневой страницы). Взгляните на базовый код: все страницы наследуются от sapphire/core/model/SiteTree.php. В $extensions вы можете увидеть ссылку на sapphire/core/model/Hierarchy.php, где у вас есть has_one, определенный для родительской страницы. Хотя вы можете расширить SiteTree, CMS не справится с этим, поэтому вам также придется переделать часть CMS. Не думаю, что ты этого хочешь.

Я думаю, что вы ищете DataObjects как страницы. Взгляните на http://www.ssbits.com/tutorials/2010/dataobjects-as-pages-part-1-keeping-it-simple/, в котором это описано. Вам нужно будет добавить many_many отношений и все остальное, что вам нужно, на свои «страницы», но у вас будет вся необходимая гибкость.

Не стесняйтесь задавать любые дополнительные вопросы.

person xeraa    schedule 12.01.2012
comment
Привет, Xeraa, большое спасибо за ответ. Учебное пособие, которое вы мне дали, похоже на то, что мне нужно сделать, я изучу его и посмотрю, как у меня получится. Спасибо, что ответили на мои дальнейшие вопросы, ценю это. Я новичок в SS и Php, поэтому немного медленный, но полон решимости учиться. Не могу не заметить, что вы являетесь автором новой книги СС, это круто! Как вы думаете, чем отличается ваша новая книга SS от The Complete Guide to CMS Development для новичка? Есть ли какие-нибудь советы по поводу некоторых хороших книг или руководств по php? Большое спасибо и хороших выходных :) - person grumpypanda; 13.01.2012
comment
На этот вопрос сложно дать объективный ответ. ИМХО книга Инго охватывает больше, чем я. Например, я не описываю / admin в целом, а только в сочетании с пользовательским кодом, я не затрагиваю тему модульных тестов ... Мой темп, вероятно, немного медленнее, поэтому я явно нацелен на новичков. 90% моей книги основано на живом проекте (b1-bar.at). Это немецкий язык, но вы можете взглянуть на него и почувствовать, что покрыто (помимо кода на GitHub: github.com/xeraa/silverstripe-book). - person xeraa; 13.01.2012
comment
Обучение в целом: всегда хорошо иметь ссылку (я бы пошел на Amazon и поищу недавнюю публикацию с хорошими рейтингами), но я думаю, что попробовать что-то самостоятельно - это наиболее важно. И взгляните на другие модули, чтобы увидеть, как это делается. Например (на основе моей книги) есть очень простой виджет Facebook: github.com/xeraa/silverstripe-widget_facebookfeed Там немного кода, но он должен помочь вам начать создавать что-то самостоятельно ... - person xeraa; 13.01.2012
comment
Привет, Xeraa, большое спасибо за полезную информацию, думаю, я пойду с вашей книгой. Спасибо большое! - person grumpypanda; 16.01.2012
comment
Привет, Xeraa, я следовал инструкциям, которые вы предлагаете, и это очень хорошо, но я столкнулся с проблемой отображения боковой панели. Не могли бы вы мне помочь? вот сообщение - stackoverflow.com/questions/8965258/ Большое спасибо. - person grumpypanda; 23.01.2012