3

我想在我的网站上实现一个标签系统。该网站是用 PHP 制作的,但不使用数据库 (sql) 系统。它从纯文本文件中读取文件并包含它们。

页面在文件中,如果请求页面,则读取该文件,并且如果页面在其中,则站点将其返回。如果页面不在其中,则会出现错误(因此没有路径遍历问题,我可以让页面“blablabla”转到“other-page.inc.php”)。

页面列表是一个大 case 语句,如下所示:

case "faq":
$s_inc_page= $s_contentdir .  "static/faq.php";
$s_pagetitle="FAQ";
$s_pagetype="none";
break;

($s_pageype 用于 css 主题)。

我想要的是这样的:

case "article-about-cars":
$s_inc_page= $s_contentdir .  "article/vehicles/about-cars.php";
$s_pagetitle="Article about Cars";
$s_pagetype="article";
$s_tags=array("car","mercedes","volvo","gmc");
break;

一个标签页面将标签作为获取变量,检查 $s_tag 数组中哪些案例具有该标签,然后返回这些案例。

这是可能的,还是我想错了方向?

4

2 回答 2

1

我会通过将您的页面详细信息保存在一个数组中来做到这一点,例如:

$pages['faq']['s_inc_page'] = $s_contentdir .  "static/faq.php";
$pages['faq']['s_pagetitle'] = "FAQ";
$pages['faq']['s_pagetype'] = "none";
$pages['faq']['s_tags'] = array("car","mercedes","volvo","gmc");

然后,您可以使用foreach循环遍历此数组并拉出具有匹配标签的项目:

$tag = "car";

foreach($pages as $page) {
    if (in_array($tag, $page['s_tags'])) {
        //do whatever you want to do with the matches
        echo $page['s_pagetitle'];
    }   
}
于 2012-06-14T12:58:22.683 回答
0

这是可能的,但您可能需要在当前结构之外进行思考。

像这样的东西会起作用:

$pages = array(
    "article-about-cars" => array ("car", "mercedes", "volvo"),
    "article-about-planes" => array ("757", "747", "737")
); //an array containing page names and tags

foreach ($pages as $key => $value) {
   if (in_array($_GET['tag'], $value)) {
       $found_pages[] =  $key;
   }
}

return $found_pages; //returns an array of pages that include the tag
于 2012-06-14T12:54:31.483 回答