2015-07-20 2 views
0

У меня есть сложный проект с точки зрения дизайна базы данных. Есть около 10-15 различных макетов для страниц, некоторые из них являются статическими с изображениями, некоторые - целевыми страницами, а некоторые требуют обложки сверху с различными действиями и так далее. Каждый макет - это .php-файл, который обрабатывает логику для каждого типа макета.Модуль страниц с разной структурой и макетами?

пыльника является структурой нескольких страниц

Home Page 
    > Top cover 
    > Text for banner 1 
    > Features 
    > feature 1 
    > feature 2 
    > How it works 
    > step 1 
    > step 2 
    > Call to action 
Special Product Page 
    > Top cover 
    > text for top cover 
    > Features 
    > feature 1 
    > feature 2 
    > feature 3 
    > How it works 
    > step 1 
    > step 2 
    > step 3 
Exercise 
    > Category 1 
    > Sub Category 
     > exercise 1 
     > exercise 2 
    etc ... 

Я мог бы легко добавить HTML-код для каждой страницы в теле страницы и избавиться от некоторых дополнительных страниц, но мой клиент не имеет HTML знаний и I Боюсь, что он сломает дизайн, когда он отредактирует или создаст новые страницы, особенно те, у которых есть функции и как они работают. Я хочу сделать как можно проще для него создание/редактирование страниц с помощью только редактора wysiwyg. Что еще хуже, это требует, чтобы все страницы были доступны для поиска пользователями, и я исправил это с помощью поля index_page. Поэтому страницы с функциями и шагами не индексируются.

У меня есть таблица базы данных pages со следующими полями parent_id, layout, title, slug, body, index_page. Я использую базу данных laravel и mysql.

Другая проблема заключается в том, что, если вы посещаете URL-адрес домашней страницы/верхней части обложки/text-for-banner1, она отображает содержимое этой страницы, и это не должно.

Есть ли у вас какие-либо предложения о том, как мне создать базу данных или какой подход следует принять?

+0

Есть слишком много возможных ответов, или хорошие ответы будут слишком длинными для этого формата. Пожалуйста, добавьте детали, чтобы сузить набор ответов или изолировать проблему, на которую можно ответить в нескольких абзацах. – Epodax

+0

@Epodax вы можете предложить пример? – lesandru

ответ

0

Я бы сказал, что вам нужна таблица/модель страниц, которая определяет название страницы и где она находится в иерархии вашего сайта. Затем страницы могут иметь множество «узлов», где узел может быть текстовой областью, карусели, списком функций и т. Д. Затем ваша CMS должна определить, какие данные будут отображаться на основе того, какие узлы имеют страница, когда страница выбрана для редактирования.

С точки зрения поиска, я бы добавил метод getContentAsPlainText(), который просто получает текстовое представление всех узлов страницы, и это тот контент, который вы затем использовали для индексирования. Поэтому, когда вы выполняете поиск, он ищет те капли текста. Вы можете поместить слушателя на событие модели страницы saving, чтобы индексировать версию обычного текста при сохранении.

+0

Не могли бы вы немного детализировать часть узлов? я создам таблицу отношений pages_nodes? и связать узел со страницей, к которой он принадлежит? – lesandru

+0

У страницы будет много узлов. –

+0

спасибо, я посмотрю, что я получу, и я отвечу на ответ, как только это окажется хорошим решением;) – lesandru

Смежные вопросы