0

サイトのナビゲーションを自動的に構築する 1 つの解決策は、次のようなドキュメントのフォルダーをスキャンすることです。

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)を付けて、クエリ文字列の外で非同期なしで目的のページに渡す方法はありますかジャバスクリプト?

ファイル名をもう一度爆発させ"_"てソート順を取得し、それをどこかに保存することはできますか?

これは、ページ クエリ リクエストを処理するためのコードです。

$_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 に含めることができます。

しかし、プレフィックスを使用すると、それほど簡単ではありません。

問題は次のとおりです。クエリ文字列から削除されているため、以前にあったプレフィックス番号を知る方法はありません。そのため、「バックグラウンド」で何らかの形で送信する必要があります。

私が思いついた非常に悪い解決策の 1 つは、ナビゲーション リンクをフォーム ボタンに変換し_POST、プレフィックス インターガーだけをフォームと一緒に変換することでした。最初は良い解決策のように思えましたが、ユーザーがページを更新すると、見栄えがよくないことに気付きました。結局のところ、それはフォームの目的ではありません...

そこに何か良い解決策はありますか?
または、これに対処するための他のより良い方法はありますか?

4

1 に答える 1

0

その数を保存しておく方法は 2 つあります。Cookie または php セッション変数を使用できます。ただし、この場合、ユーザーが最初にブラウザーまたは新しいブラウザーに URL を入力すると、デフォルトの番号に移動する必要があります。あなたが持っているように:

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

ユーザーが domain.com/?page=first-page のような URL を入力した場合、デフォルトにしたい任意の番号の 1_first-page.php に移動する必要があります。

于 2012-11-17T15:52:31.460 に答える