php在自定义cms中动态创建新页面

hey*_*ray 3 php mysql content-management-system

我正在从头开始创建自己的CMS,以此来构建我的php和mysql技能.一切进展顺利,但我正在为我写的每个博客文章创建单独的帖子页面.因此,index.php页面列出了我所有博客的每个帖子的片段,并且有一个阅读更多按钮,可以将用户带到每个博客帖子的整个页面.每个帖子都有一个网址,该网址是在"创建帖子"表单中输入的博客标题创建的.我试图弄清楚如何为每个帖子创建唯一的页面,而不通过GET传递标题,小标题,发布内容和其他信息.

这也与我想要添加的另一个功能相吻合.我希望能够使用"创建页面"表单创建单独的页面,就像我为帖子所做的那样.因此,如果我想要一个"关于我们"页面,我会转到我的管理员表单,填写标题,添加内容,当我点击提交时,它会动态创建页面.我一整天都在想我将如何做这两件事但却无法弄清楚我是如何做到这一点的.

仅供参考,我不是要求代码,我只是需要向正确的方向努力,因为我试图概念化如何实现这一目标.谢谢!

Foo*_*eth 5

如果您不熟悉模型 - 视图 - 控制器模式,那么阅读它可能是谨慎的.MVC通常是Web应用程序高级设计的正确起点.

此外,CMS是一个足够大的项目,你应该考虑使用像CodeIgniter,Symfony,Zend等PHP框架来让你的生活更轻松.它消除了许多苦差事和常见任务.

动态页面创建和显示

我想你想把它分成两件事:文本内容(基本上你在表单中放置的内容)和围绕该内容的HTML模板.

当您创建页面或博客文章时,您可能希望将实际内容(您在创建表单中键入的内容)存储在某种类型的数据库中(不一定是RDBMS,但如果您尝试构建MySQL技能,那么它就是合理的选择).

然后,您将使用单独的函数将该内容绑定到HTML模板中,并在加载给定页面时将其呈现给用户.

URL路由

要获得更好看的URL,您可以使用类似apache的mod_rewrite.您可以使用它来转换这样的URL:

posts/how-to-make-a-cms

对此:

posts.php?title=how-to-make-a-cms

然后你可以像往常一样从GET读取posts.php.你如何选择进行转换是非常开放的.

为了避免真正复杂的重写,人们通常只是构建所有内容以转到中央路由脚本,该脚本确定要调用的类和方法以及传递它的参数.所以它会将上面的URL重写为:

main.php?a=posts/how-to-make-a-cms

然后main.php将从GET中解析出该参数的段,并找出发送它们的位置.喜欢它可能需要posts/show/how-to-make-a-cms做的事情:

$o = new Posts();
$o->show("how-to-make-a-cms");
Run Code Online (Sandbox Code Playgroud)

如果你这样做,我认为你可以完全避免使用mod_rewrite,只要你愿意只接受稍微漂亮的URL,如下所示:

mysite.com/main.php?/posts/show/how-to-make-a-cms

我之前没有做过这种事情(因为框架已经很好地完成了它),所以我可能会遗漏一些细节.