页面模块具有不同的结构和布局?

时间:2015-07-20 09:27:47

标签: php html mysql laravel

从数据库设计的角度来看,我有一个复杂的项目。页面有大约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知识,我担心他在编辑或创建新页面时会破坏设计那些有功能和如何工作。我想尽可能简单地让他只用一个wysiwyg编辑器创建/编辑页面。更糟糕的是,它要求用户可以搜索所有页面,并且我使用index_page字段暂时修复了该页面。因此,包含功能和步骤的页面不会被编入索引。

我有一个数据库表pages,其中包含以下字段parent_id, layout, title, slug, body, index_page。我正在使用laravel和mysql数据库。

另一个问题是,如果你访问主页/ top-cover / text-for-banner1的网址,它会显示该网页的内容,但不应该显示。

您对我应该如何设计数据库或我应该采取什么方法有任何建议?

1 个答案:

答案 0 :(得分:0)

我想说你想要一个页面表/模型来定义页面标题以及它在你网站的层次结构中的位置。然后,页面可以具有许多“节点”,其中节点可以是文本区域,轮播,特征列表等。然后,您的CMS应根据页面选择进行编辑时页面所具有的节点来确定要显示的输入。

在搜索方面,我添加了一个getContentAsPlainText()方法,它只是获取所有页面节点的纯文本表示,这就是您将用于索引的内容。因此,当您执行搜索时,它会搜索这些文本块。您可以在Page模型的saving事件上放置一个侦听器,以便在保存时索引纯文本版本。