Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php在自定义cms中动态创建新页面_Php_Mysql_Content Management System - Fatal编程技术网

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

php在自定义cms中动态创建新页面,php,mysql,content-management-system,Php,Mysql,Content Management System,我正在从头开始创建自己的CMS,以此来培养我的php和mysql技能。一切都进行得很顺利,但我现在想为我写的每一篇博文创建单独的博文页面。因此index.php页面有一个我的所有博客的列表,其中包含了每篇文章的片段,还有一个readmore按钮,可以让用户看到每篇博客文章的完整页面。每个帖子都有一个url,该url是根据“创建帖子”表单中输入的博客标题创建的。我试图找出如何在不通过GET传递标题、副标题、帖子内容和其他信息的情况下为每个帖子创建唯一的页面 这也与我试图添加的另一个特性相吻合。我希

我正在从头开始创建自己的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"); 

?>