Php CMS块放置/页面创建如何工作?
我在PHP(OOP)和其他各种web编程语言方面很有经验,但我似乎不知道CMS块构建是如何工作的 当我自己构建CMS时,我会创建静态页面(我知道这是个糟糕的想法)。但是如何创建动态块/页面,比如Drupal/EPiServer 块的标记存储在数据库中,还是块文件的引用?我不是说“如何编码”,而是更像是,类比/方法是什么 简而言之,我想制作一个CMS,它能够:Php CMS块放置/页面创建如何工作?,php,laravel,drupal,content-management-system,Php,Laravel,Drupal,Content Management System,我在PHP(OOP)和其他各种web编程语言方面很有经验,但我似乎不知道CMS块构建是如何工作的 当我自己构建CMS时,我会创建静态页面(我知道这是个糟糕的想法)。但是如何创建动态块/页面,比如Drupal/EPiServer 块的标记存储在数据库中,还是块文件的引用?我不是说“如何编码”,而是更像是,类比/方法是什么 简而言之,我想制作一个CMS,它能够: 拖放块 创建新页面(动态路由) 我知道这是一个糟糕的描述,所以请随意提问。这个问题的答案非常广泛,可以是复杂的,也可以是简单的,具体取
- 拖放块
- 创建新页面(动态路由)
我知道这是一个糟糕的描述,所以请随意提问。这个问题的答案非常广泛,可以是复杂的,也可以是简单的,具体取决于需求 以下是数据库驱动或动态网站的工作原理:
PDO
或MYSQLI
,以及HTML净化器
。这将使用户免受XSS攻击view.php
的页面,该页面将用作动态内容页面GET
方法,它将确保搜索引擎能够对其进行索引。您还可以复制链接并将其提供给其他用户
例如,您的URL可能看起来像这样http://fakesite1213.com/view.php?content_id=23
,注意content\u id=23
部分这是GET
请求//open database connection
try {
$dbcon = new PDO('mysql:host='. DB_HOST .';
dbname='. SITE_DB_NAME . ';
charset=utf8', SITE_DB_USER, SITE_DB_PASS);
} catch (Exception $e) {
}
// use try catch block for queries.
// I am using pdo, by using
try {
$sql = "SELECT * FROM tablename WHERE contentid=:contentid";
$statement = $dbcon->prepare($sql);
$statement->bindValue(':contentid', $_GET['content_id']);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
if (count($result) > 0)
{
var_dump($result);
}
} catch (Exception $e) {}
contentid
,它将与来自GET方法(url)的$\u GET['content\u id']
运行匹配。当我们得到一些匹配项时,我们将var\u dump
它。您需要使用echo
,而且$result
很可能会返回一个数组
还有其他使用ajax和json的方法,但这是Drupal(7)的基本思想。整个页面是由块构建的。页面本身由区域组成,块被放置到区域中。哪个块的配置显示在哪个区域中,哪个区域存储在数据库中
每个块的内容都是使用系统已知的回调函数生成的(块与其呈现代码之间存在映射),因此块本身的标记不会存储在数据库中(或任何位置)。相反,在生成页面时,每个块的标记都是使用数据库中的内容生成的(或任何其他来源)
然后将所有块的标记注入主页模板中进行页面呈现。页面模板包含块和区域布局所需的标记。非常感谢您的详细响应。不过,我更多考虑的是存储HTML块和位置背后的类比:)干杯!这完美地回答了我的问题:)