php - 使用管理部分进行 block 定位

标签 php

在我的管理部分,我有一个 block 生成器。 区 block 很简单,block_title, block_content。

在管理部分显示/确定主题布局以便用户可以定位 block 的最简单方法是什么?

一个想法是使用数字,1 = block 区域一,2 = block 区域二等等

前端的函数可能如下所示:

function showBlocksForArea(1) {
    // Return blocks Array where block_area=1 
}

在主题/模板中呈现为:

echo'<div id="block_area_one">';
foreach($view->showBlocksForArea(1) as $row) {
    echo '
    <div class="block_wrap">
    <div class="block_title">'.$row['block_title'].'</div>
    <div class="block_body">'.$row['block_body'].'</div>
    </div>
    ';
}
echo '</div>';

这很好,接受用户在不查看主题的情况下不知道这些区域在哪里的事实。

管理部分

如果我可以只获取布局的 HTML,这样的事情就完美了:

enter image description here

有没有更简单的方法?

最佳答案

以下是基于此处发生的聊天的答案:https://chat.stackexchange.com/rooms/18020/room-for-xdaevax-and-codex

这是我对您的目标的理解:

  • 您正在创建一种用于创建网站的 CMS 应用程序
  • 这些网站是模块化的,管理员可以轻松自定义网站的外观和内容,而无需具备丰富的代码知识
  • 为了实现这一目标,您创建了一个模板和内容系统,可以通过各种方式组合这些模板和内容来创建这些主题页面。这主要由一组 PHP 函数驱动,这些函数从数据库中提取模板和 block 数据。
  • 创建新主题后,管理员无需任何修改即可“正常工作”,因为这些功能可以引入任何主题,并且可以与任何模板组合。
  • 模板必须具有通用的命名结构,以便可以轻松替换 CSS。

鉴于此信息,我建议执行以下操作:

数据库架构

我将建立一个类似于我制作的模式的数据库结构:

enter image description here

这里的想法是 Template记录可以有任意数量的“槽”。数据库对于插槽在页面上的位置是不可知的(这是主题的责任),但是 TemplateSlots用于提供可以放置内容 ( Blocks ) 的“占位符”。

每次用户创建一个新的 Page ,添加一条页面记录,并且该页面与 Template 关联。 ,其中还包含有关插槽的信息。 Template还定义了一个文件(很可能是 PHP 文件),用于指定放置插槽的占位符。该页面获得 Theme信息来自Site它与之相关。每个Theme可以有一套ThemeContents (多个 CSS 文件、js 文件、图像等......)。

Blocks可以创建可以为其分配内容的内容。这些 block 独立于 Template最初,数据库可以预先填充常见的构建“ block ”。这些 block 可以与 Template 关联。并分配了 TemplateSlot一旦一个 block 被分配给 Page通过拥有 PageBlock已创建记录。

数据库结论

这种结构具有很大的灵活性,并允许数据库处理许多潜在的复杂用户场景。通过将模板和槽分割成单独的表,您可以动态创建所有形状和大小的模板,而无需进行任何代码更改。

PHP 管理员

对于您的管理员来说,您可以使用任何您喜欢的机制从数据库中提取数据。但用户工作流程看起来像这样:

  1. 登录管理员
  2. 选择操作(a-> 新建,b-> 更新现有)
  3. 选择页面模板
  4. 将内容 block 分配给模板槽
  5. 预览
  6. 编译更改(a -> 保存新页面,b-> 更新现有页面)

关于php - 使用管理部分进行 block 定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26468242/

相关文章:

PHPExcel_IOFactory::createWriter 导致错误行为

php - Symfony2 + FOSUserBundle 注册表不提交,只重新加载

javascript - PHP session 变量不通过 AJAX 调用持久化

php - 从 WC_Product_Variation 获取产品变体

php - Magento API 太慢?

php - 记录错误的 file_put_contents() 工作正常 - 除了 fatal error

php - 由于 config.js 文件,上传到 Web 服务器后布局和功能被破坏

PHP 和 MySQL : Import CSV using Column Value as table

php - 通过用户操作更新的实时倒计时器。连接到数据库。执行?

来自 mysql 的 php 数组