0

为站点自动构建导航的一种解决方案是扫描文件夹中的文档,如下所示:

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将前缀整数与表单一起转换。乍一看,这听起来像是一个不错的解决方案,但后来我意识到一旦用户刷新他们的页面,它看起来就不是很好了。毕竟,这不是表格的用途......

有什么好的解决方案吗?
或者其他更好的方法来处理这个问题?

4

1 回答 1

0

有两种方法可以保存该数字,您可以使用 cookie 或 php 会话变量。但在这种情况下,如果用户第一次在浏览器或新浏览器中输入 url,那么他应该被带到默认号码。就像你有:

1_first-page.php
2_first-page.php
3_first-page.php

如果用户输入如下网址:domain.com/?page=first-page,您必须将他带到 1_first-page.php 到您希望默认的任何数字。

于 2012-11-17T15:52:31.460 回答