为站点自动构建导航的一种解决方案是扫描文件夹中的文档,如下所示:
foreach(glob('pages/*.pg.php') as $_SITE_NAV_filePath):
$_SITE_NAV_filePath = explode('.pg',pathinfo($_SITE_NAV_filePath,PATHINFO_FILENAME));
$_SITE_NAV_fileName = $_SITE_NAV_filePath[0];
$_SITE_NAV_qv = preg_replace('/([A-Z])/','-$1',$_SITE_NAV_fileName); $_SITE_NAV_qv = trim($_SITE_NAV_qv,'-');
$_SITE_NAV_name = preg_replace('/([A-Z])/',' $1',$_SITE_NAV_fileName);
?>
<li><a href="?page=<?=$_SITE_NAV_qv?>" class="<?=$_SITE_NAV_qv == $_SITE_PAGE['qv']?'active':''?>"><?=$_SITE_NAV_name?></a></li>
<?php
endforeach;
这段代码会将“AnAwesomePage.pg.php”变成这样的菜单项:
<li><a href="?page=An-Awesome-Page">An Awesome Page</a></li>
这可能是不好的做法(?)。
反正; 我不经常使用这种方法,因为大多数时候网站都有一个数据库,随之而来的是更好的解决方案......
但我的问题是:
有没有办法在文件名前面加上一个整数和下划线(3_AnAwesomePage.pg.php),用于排序目的,并以某种方式将其传递到查询字符串之外的目标页面,并且没有任何异步javascript?
我可以再次分解文件名"_"
以获得排序顺序并将其存储在某个地方,不知何故?
这是处理页面查询请求的代码:
$_SITE_PAGE['qv'] = $_GET['page'];
if (empty($_SITE_PAGE['qv'])){ $_SITE_PAGE['qv'] = explode('-','Home'); }
else { $_SITE_PAGE['qv'] = explode('-',$_GET['page']); }
$_SITE_PAGE['file'] = 'pages/'.implode($_SITE_PAGE['qv']).'.pg.php';
此代码将“An-Awesome-Page”转换回“AnAwesomePage.pg.php”,因此可以将其包含在 php 中。
但是有了前缀,就不是那么容易了。
问题是;现在无法知道之前的前缀编号是什么,因为它已从查询字符串中删除。所以我需要在“背景”中以某种方式发送它。
我想出的一个非常糟糕的解决方案是将导航链接转换为表单按钮,并且仅_POST
将前缀整数与表单一起转换。乍一看,这听起来像是一个不错的解决方案,但后来我意识到一旦用户刷新他们的页面,它看起来就不是很好了。毕竟,这不是表格的用途......
有什么好的解决方案吗?
或者其他更好的方法来处理这个问题?