0

だから、私はhtaccessを使ってきれいなパーマリンクを生成する小さなシステムを持っています.

私が次の方法で処理するもののPHP側:

if (!$_GET) {
    //
    $page = "home";
    $page_title = "General Site Title";
    include ("template/index.php");
    //
} else if ($_GET['page'] == "profile") {
    //
    if ($_GET['subpage']) {
        //
        header("HTTP/1.0 404 Not Found");
            include ("template/404.php");
        exit();
        //
    } else {
        //
        $page = "profile";
        $page_title = "User Profile";
        include ("template/profile.php");
        //
    }
    //
} else if ($_GET['page'] == "words") {
    //
    if ($_GET['subpage']) {
        //
        header("HTTP/1.0 404 Not Found");
            include ("template/404.php");
        exit();
        //
    } else {
        //
        $page = "words";
        $page_title = "Words Page";
        include ("template/words.php");
    }
    //
} else if ($_GET['page'] == "contacts") {
    //
    if ($_GET['subpage']) {
        //
        header("HTTP/1.0 404 Not Found");
            include ("template/404.php");
        exit();
        //
    } else {
        //
        $page = "contacts";
        $page_title = "User Contacts";
        include ("template/contacts.php");
        //
    }
    //
} else if ($_GET['page'] == "about") {
    //
    if ($_GET['subpage']) {
        //
        header("HTTP/1.0 404 Not Found");
            include ("template/404.php");
        exit();
        //
    } else {
        //
        $page = "about";
        $page_title = "About Page";
        include ("template/about.php");
        //
    }
    //
} else if ($_GET['page'] == "verify") {
    //

    //
} else {
    //
    header("HTTP/1.0 404 Not Found");
        include ("template/404.php");
    exit();
    //
}

ご覧のとおり、繰り返しコードが割り当てられています。この管理パネルを使いやすくするにはどうすればよいですか? 私がやりたいことは、このif elseステートメントを生成するデータを含むページの配列を持つことです。出来ますか?

理想的には、次のようなものです。

array("page" => "home", "page_title" => "blah", "template" => "index.php", "has_subpage" => false);

それとも、私がやっている方法に固執する必要がありますか?

4

4 に答える 4

1

何かのようなもの:

$pages = array(
  'words' => array('title' => 'Words', 'file' => 'includes/words.php'),
  'contact' => array('title' => 'Contact', 'file' => 'includes/contact.php'),
  'profile' => array('title' => 'Profile', 'file' => 'includes/profile.php',
    'subpages' => array('subpage1' => array( 'title' => 'foo', 'file' => 'bar'))
  ),
);

if( isset($_GET['page']) && isset($pages[$_GET['page']]) ) {
  $page = $pages[$_GET['page']];
  if( ! isset($_GET['subpages']) ) {
    $title = $page['title'];
    include($page['file']);
  } else if( isset($page['subpages']) && isset($page['subpages'][$_GET['subpage']]) ) {
    $page = $page['subpages'][$_GET['subpage']];
    $title = $page['title'];
    include($page['file']);
  } else {
    // 404 code here
  }
} else {
  // 404 code here
}
于 2013-10-21T17:51:43.847 に答える
0

次の構造を使用します。

$pages = array('profile' => array('title' => 'User Profile',
                                  'include' => 'template/profile.php'),
               'words' => array('title' => 'Words Page',
                                'include' => 'template/words.php'),
               ...);

// Set defaults if no parameters supplied
$page = "home";
$page_title = "General Site Title";
$include_file = "template/index.php";

// Override from parameters
if (isset($_GET['page'], $pages[$_GET['page']])) {
    if ($_GET['subpage']) {
        header("HTTP/1.0 404 Not Found");
            include ("template/404.php");
        exit();
    } else {
        $page = $_GET['page'];
        $page_title = $pages[$page]['title'];
        $include_file = $pages[$page]['template'];
    }
}

include ($include_file);
于 2013-10-21T17:50:13.730 に答える
0

または次のようなもの (警告! 未テスト!)

if (!$_GET) {
    $page = "home";
    $page_title = "General Site Title";
    include ("template/index.php");
} 
else if ($_GET)
{
    $pages = array('profile' => 'User Profile', 'words' => 'Words Page', 'contacts' => 'User Contacts', 'about' => 'About Page', 'verify' => 'Verify');
    foreach ($pages as $page => $page_title)
    {
        if (($_GET['page'] == $page) && (!$_GET['subpage']))
            include ("template/$page.php");
    }
}
else
{
    header("HTTP/1.0 404 Not Found");
        include ("template/404.php");
}
于 2013-10-21T17:58:30.870 に答える