php在自定义cms中动态创建新页面
我正在从头开始创建自己的CMS,以此来培养我的php和mysql技能。一切都进行得很顺利,但我现在想为我写的每一篇博文创建单独的博文页面。因此index.php页面有一个我的所有博客的列表,其中包含了每篇文章的片段,还有一个readmore按钮,可以让用户看到每篇博客文章的完整页面。每个帖子都有一个url,该url是根据“创建帖子”表单中输入的博客标题创建的。我试图找出如何在不通过GET传递标题、副标题、帖子内容和其他信息的情况下为每个帖子创建唯一的页面 这也与我试图添加的另一个特性相吻合。我希望能够使用“创建页面”表单创建单独的页面,就像我在帖子中所做的那样。因此,如果我想要一个“关于我们”的页面,我会去我的管理表单,填写标题,添加内容,当我点击提交时,它会动态创建页面。我整天都在想我该怎么做这两件事,但不太明白我该怎么做php在自定义cms中动态创建新页面,php,mysql,content-management-system,Php,Mysql,Content Management System,我正在从头开始创建自己的CMS,以此来培养我的php和mysql技能。一切都进行得很顺利,但我现在想为我写的每一篇博文创建单独的博文页面。因此index.php页面有一个我的所有博客的列表,其中包含了每篇文章的片段,还有一个readmore按钮,可以让用户看到每篇博客文章的完整页面。每个帖子都有一个url,该url是根据“创建帖子”表单中输入的博客标题创建的。我试图找出如何在不通过GET传递标题、副标题、帖子内容和其他信息的情况下为每个帖子创建唯一的页面 这也与我试图添加的另一个特性相吻合。我希
仅供参考,我不是在要求代码,我只是需要朝着正确的方向推动,因为我试图概念化如何实现这一点。谢谢 如果您不熟悉模型-视图-控制器模式,那么仔细阅读它可能是明智之举。MVC通常是web应用程序高级设计的正确起点
此外,CMS是一个足够大的项目,您应该考虑使用像KoeIn点火、SphfOne、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");
如果您这样做,我认为您可以完全避免mod_重写,只要您愿意只接受稍微漂亮的URL,如下所示:
mysite.com/main.php?/posts/show/how-to-make-a-cms
我以前没有做过这种类型的事情(因为框架已经做得非常漂亮了),所以我可能遗漏了一些小细节。你应该看一些来自或的教程,他们有关于PHP的最好和最有价值的教程 我认为您可以尝试从该课程/播放列表开始: 如果您不了解所有内容,请观看以下内容:
如果PHP本身没有问题,您可以尝试使用一些支持MVC的简单框架。这有助于在页面之间处理变量,使数据库工作更容易等
我也有同样的问题。您可以通过使用fopen函数轻松完成此操作。以下是指向教程的链接:
我不确定,MVC是为那些没有PHP经验的人设计的。@Kamil,MVC不是PHP特有的,所以我不知道你为什么这么说。这是一种广泛的设计模式,对于任何从事CMS设计的人来说,都必须了解它。@傻瓜赛斯,你说“然后你可以使用一个单独的函数将内容绑定到HTML模板中,并在用户加载给定页面时将其呈现给用户。”我知道我需要把我的标题、副标题、内容等。。。在模板中,如何使每个博客url成为例如“www.sitename.com/this-is-post-1”或www.sitename.com/about.php”而不是www.sitename.com/?post\u id=12?这是可能的,还是我应该使用该url结构创建每个页面,然后使用url重写使url实际上是“漂亮的”“?好吧,这些框架将使这种路由变得非常简单,但我会用一些关于URL路由的信息来更新答案。@好的,你可能是对的。我们给他看看CodeIgniter好吗?:)在不传递任何内容的情况下,内容将如何显示在单个帖子页面上。您必须通过get或post至少传递一个post id。然后你可以用permalinks将url更改为你喜欢的任何内容。@jasminder,这是我一直在思考的问题,也是我看到它发生的唯一方式,但我想在花时间编码之前确定一下。不要这样想:“我想为我写的每一篇博文创建单独的博文页面。”。您应该想创建一个名为“post.php”的页面,根据链接中的参数显示动态(变量)内容,例如:“post.php?postid=1”。有趣的是,这将帮助我理解我们正在讨论的内容。他们将所有教程视频放在一个名为watch.php的模板上,然后在url中添加一个id。有趣的是,当你掌握了动态页面的概念和可变内容时,你可以尝试使用htaccess重写URL来放置po
<?php
function wwwcopy($link,$file)
{
$fp = @fopen($link,"r");
while(!feof($fp))
{
$cont.= fread($fp,1024);
}
fclose($fp);
$fp2 = @fopen($file,"w");
fwrite($fp2,$cont);
fclose($fp2);
}
//Example on using this function
wwwcopy("http://www.domain.com/list.php?member=sample", "sample.html");
//Another example
wwwcopy("http://www.domain.com/list.php?member=sample2", "sample2.html");
?>