类别层次结构和文章的SEF URL

时间:2015-04-27 15:32:50

标签: php content-management-system sef

我使用PHP编写了使用HMVC架构的代码的小框架。以下是要访问的示例SEF URL。

  

http://domain.com/controller_name/method_name/param1/param2   http://domain.com/folder_name/controller_name/method_name/param1/param2

上面很好并且使用固定类型的数据。但是当我尝试构建一个简单的CMS时,我在另一个类别和其他类别中的类别等等,即内部有一组文章的多级类别结构,我无法使用上面的URL。我想要像

这样的东西
  

http://domain.com/category-name/sub-category-name/sub-sub-category-name   http://domain.com/category-name/sub-category-name/article-name

任何人都可以帮我解决上面的代码片段。

1 个答案:

答案 0 :(得分:0)

如果我没有误解你想通过sefurl查询类别 首先,您需要将数据名称转换为sefurl

function sefurl($s){ 
     $s=trim($s);
     $tr = array('ş','Ş','ı','I','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç','(',')','/',':',',');

     $eng = array('s','s','i','i','i','g','g','u','u','o','o','c','c','','','-','-','');

     $s = str_replace($tr,$eng,$s);



     $s = preg_replace('/&.+?;/', '', $s);

     $s = preg_replace('/\s+/', '-', $s);

     $s = preg_replace('|-+|', '-', $s);

     $s = preg_replace('/#/', '', $s);

     $s = str_replace('.', '.', $s);

     $s = trim($s, '-');

     $s = htmlspecialchars(strip_tags(urldecode(addslashes(stripslashes(stripslashes(trim(htmlspecialchars_decode($s))))))));

     return $s;

        }

现在你可以测试一下 例如,我的分类名称是“这是一个测试分类”

sefurl($catname);

结果将像“this-is-a-test-categorig”

你可以将它用于categori id

在设置新的类别时将数据库名称转换为sefurl,而不是将其设置为sefurl冒号

,在数据库表格中创建一个新的冒号,如sefurl

您可以通过sefurl查询分类

http://yourdomain.com/categori/this-is-a-categor-/

通过“/”解析网址,并在您的Categori表格中查询后获取“this-is-a-categor-”。