【问题标题】:Pages module with different structure and layouts?具有不同结构和布局的页面模块?
【发布时间】:2015-10-09 08:50:01
【问题描述】:

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

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

另一个问题是,如果您访问 home-page/top-cover/text-for-banner1 的 url,它会显示该页面的内容,它不应该显示。

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

【问题讨论】:

  • 可能的答案太多,或者对于这种格式来说,好的答案太长了。请添加详细信息以缩小答案范围或隔离可以在几段中回答的问题。
  • @Epodax 你能举个例子吗?

标签: php html mysql laravel


【解决方案1】:

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

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

【讨论】:

  • 您能详细说明一下节点部分吗?我会创建一个关系表 pages_nodes 吗?并将节点与其所属的页面相关联?
  • 谢谢,我会看看我得到了什么,一旦证明是一个好的解决方案,我会接受答案;)
猜你喜欢
  • 2020-06-13
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
相关资源
最近更新 更多