2

私は動的なブログ/ポートフォリオに取り組んでいます:

参照リンク: http://www.andrewryan.me/

私は自分の個人的なウェブサイトに1か月以上取り組んでいます。この全体を間違って設定しているように感じるので、私は物事を修正し続けています。私は自分が何らかの形で存在していることを知っており、ついに助けを求めています.

私は動的なサイト構造に取り組んでおり、いくつか知りたいことがあります。

  1. 動的コンテンツのベスト プラクティス。

    • ルートフォルダーにサイトのフレームがあります。これには、インデックスとスタイルが含まれます。
      (scripts フォルダー、images フォルダー、その他のファイルの種類と一緒に..)

    • 最新のブログ エントリは、インデックス ページに表示されます。彼らが私の専門的な投稿やトピックをすべて見たい場合は、特定のサブセクションに移動するだけです.
      (例: index.php?p=professional)

    • そこから; ユーザーがブログ投稿全体を表示したい場合は、投稿をクリックするだけで、さらに動的に表示されます。
      (例: index.php?p=professional/thispost (idfk))

  2. 動的コンテンツ内に動的コンテンツを作成する方法。

    • ページとサブページは、個人用フォルダー内のチェーンを下に続きます。(例: index.php > index.php?p=personal)
  3. ページがそれぞれのフォルダーにアップロードされるとファイルされる更新可能なコンテンツを作成する方法。

    • これにはデータベースまたは XML の使用を検討する必要がありますか? もしそうなら、誰かがこのタイプのウェブサイトを作るための良いチュートリアルを教えてもらえますか? これについては、あまり説明する必要はありません。

これが私のファイル構造です:

root/   
  > images/  
    ||--> x.png   
  > pages/  
    ||--> personal.php  
    ||--> professional.php  
    ||--> contact.php   
    ||--> 404.php  
    ||--> contact.php 
    > personal/  
        |||--> personalposts.php  
    > professional
        |||--> professionalposts.php  
    > gallery/  
        |||--> galleryposts.php   
  > scripts  
    ||--> scripts.php/js/etc
  |--> .htaccess
  |--> index.php  
  |--> style.css    
  |--> robots.txt  
  |--> humans.txt

...そして動的ページのコード:

<?php
    $pages_dir = 'pages'; //Scans the pages directory

    if (!empty($_GET['p'])) { //If not empty it will get the file
        $pages = scandir ($pages_dir, 0); //Sets up files as array
        unset ($pages[0], $pages[1]); //Unsets the first two. These are just dots.
        $p = $_GET['p'];

        if (in_array($p.'.php',$pages)) {
            include ($pages_dir.'/'.$p.'.php');
        } else {
        include($pages_dir.'/404.php'); //DENIED!
        }
    } else {
        include($pages_dir.'/blog.php'); //if it's the index page
    }
?>  

多かれ少なかれ、構造が正しいかどうか、またはこれを行うためのより良い方法があるかどうかを知りたいと思っています。この Web サイトを一度作成して、必要に応じてコンテンツを自動更新できるようにしたいと考えています。

4

1 に答える 1

2

ああ、私が待ち望んでいた質問。私はまさにこれを行うサイトに取り組んでいます。まず、サイトをページに分割する必要があります(各ページのレイアウトは異なります)。たとえば、ログアウトするには、sitename.com /?action=logoutのようになります。

家に帰るには、sitename.comにアクセスします。/?p = somethingThatDoesntExistを試してみると、ホームページ(またはエラーページ)にアクセスできます。

あなたがあなたのウェブルートの下にある何かにアクセスできるなら、それははるかに良いです。次に、すべての.phpファイルを/ root / content /に保持し、1つのindex.phpのみを/ root /www/に保持する必要があります。

このコードは、プレーヤーがログインしている場合(およびオプションで管理者の場合)にプレーヤーにページを提供するために使用するものです。

// Check if alternate page requested
if (!empty($_GET["p"]) and !empty($_SESSION['id']))
{
    $page = $_GET["p"];

    if (!empty($pages[$page]))
    {
        $page_array = $pages[$page];
        if ( (!empty($page_array['auth'])) && ($user['Auth'] < $page_array['auth']) )
        {
            $page_array = $pages['index'];
        }
    }
    else
    {
        $page = '';
    }
}

次に、基本的なことを行います。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang='en'>  
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
        <title><? echo $page_array['title'] ?></title>

        <link rel="stylesheet" href="css/3p/reset.css" type="text/css"/>
        <link rel="stylesheet" href="css/3p/formalize.css" type="text/css"/>

        <link href="css/bootstrap.css" rel="stylesheet">
        <link href="css/main.css" rel="stylesheet">
        <link href="css/bootstrap-responsive.css" rel="stylesheet">
    </head>  
    <body>  
            <?php
                    require("../content/header.php");
                    require($page_array['require']);
                    require("../content/footer.php");
            ?>
    </body>
</html>

page_arrayの内容は次のとおりです。

$pages = Array();
$pages['admin'] = Array(
    'auth' => 3,
    'require' => "../admin/index.php",
    'title' => "Administration - NPG CP"
);

$pages['index'] = Array(

    'require' => "../content/index.php",
    'title' => "Home - NPG CP"
);

$pages['friends'] = Array(

    'require' => "../content/index.php",
    'title' => "Friends - NPG CP"
);

$pages['pm'] = Array(

    'require' => "../content/index.php",
    'title' => "Messages - NPG CP"
);

$pages['stats'] = Array(

    'require' => "../content/index.php",
    'title' => "Statistics - NPG CP"
);

私のサイトでは、他のすべてを処理する1つの表示可能なファイルのみを使用しています。お役に立てば幸いです。私はあなたに私のサイトのソースコードを与えることができます、それについては[my_username]@gmail.comで私に電子メールを送ってください:)

于 2012-07-15T01:38:46.423 に答える