从数据库设计的角度来看,我有一个复杂的项目。页面有大约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的网址,它会显示该网页的内容,但不应该显示。
您对我应该如何设计数据库或我应该采取什么方法有任何建议?
答案 0 :(得分:0)
我想说你想要一个页面表/模型来定义页面标题以及它在你网站的层次结构中的位置。然后,页面可以具有许多“节点”,其中节点可以是文本区域,轮播,特征列表等。然后,您的CMS应根据页面选择进行编辑时页面所具有的节点来确定要显示的输入。
在搜索方面,我添加了一个getContentAsPlainText()
方法,它只是获取所有页面节点的纯文本表示,这就是您将用于索引的内容。因此,当您执行搜索时,它会搜索这些文本块。您可以在Page模型的saving
事件上放置一个侦听器,以便在保存时索引纯文本版本。