【发布时间】:2012-07-15 01:22:50
【问题描述】:
我正在开发动态博客/作品集:
参考链接:http://www.andrewryan.me/
我已经在我的个人网站上工作了一个多月了。我一直在修改东西,因为我觉得我把整个事情都设置错了。我知道我在某种程度上是这样或那样的,我终于寻求帮助。
我一直在研究动态网站结构,我想知道一些事情:
-
动态内容的最佳做法。
我在根文件夹中有站点的框架。这包括索引和样式。
(以及脚本文件夹、图像文件夹和其他杂项文件类型..)最新的博客条目被拉到索引页面上。如果他们想查看我所有的专业帖子/主题,他们只需转到任何给定的子部分。
(例如:index.php?p=professional)从那里开始;如果用户想要完整地查看一篇博文,他们只需点击该博文,然后它就会被进一步动态拉起。
(例如:index.php?p=professional/thispost (idfk ))
-
如何在动态内容中创建动态内容。
- 页面和子页面然后继续在个人文件夹内的链中。 (例如:index.php > index.php?p=personal)
-
如何制作可更新的内容,一旦页面上传到其各自的文件夹,这些内容将被归档。
- 我应该考虑为此使用数据库还是 XML?如果是这样,任何人都可以向我指出有关制作此类网站的任何好的教程吗?对此无需过多解释。
这是我的文件结构:
root/
> images/
||--> x.png
> pages/
||--> personal.php
||--> professional.php
||--> contact.php
||--> 404.php
||--> contact.php
> personal/
|||--> personalposts.php
> professional
|||--> professionalposts.php
> gallery/
|||--> galleryposts.php
> scripts
||--> scripts.php/js/etc
|--> .htaccess
|--> index.php
|--> style.css
|--> robots.txt
|--> humans.txt
...以及动态页面的代码:
<?php
$pages_dir = 'pages'; //Scans the pages directory
if (!empty($_GET['p'])) { //If not empty it will get the file
$pages = scandir ($pages_dir, 0); //Sets up files as array
unset ($pages[0], $pages[1]); //Unsets the first two. These are just dots.
$p = $_GET['p'];
if (in_array($p.'.php',$pages)) {
include ($pages_dir.'/'.$p.'.php');
} else {
include($pages_dir.'/404.php'); //DENIED!
}
} else {
include($pages_dir.'/blog.php'); //if it's the index page
}
?>
我或多或少想知道我的结构是否正确,或者是否有更好的方法来做到这一点。我希望能够制作这个网站一次,并在需要时自动更新它的内容。
【问题讨论】:
-
我宁愿清理传入的页面名称(使用
basename()或正则表达式)并使用file_exists()探测页面是否存在,而不是使用scandir()来读出整个目录。 qaisjp 建议的地图也是一种不错的方法,但需要更加努力地保持更新。数据/缓存文件可能有意义。 (尽管如果数据库变得太大,您可能希望切换到使用数据库 [甚至是 sqlite]。) -
您的帮助!这实际上也是非常有用的信息:D
标签: php xml dynamic content-management-system file-structure