0

私は PHP コーディング、Web 開発、および検索最適化が初めてなので、全体的に初心者です。PHP と Web 開発を学ぶ過程で、さまざまな Web サイト アーキテクチャとレイアウトを試してきました。私が取り組んでいるものは、次のようなアプローチを使用しています。

header.php、sidebar.php、および footer.php を常にロードする 1 つの index.php ページがあります。index.php にはスイッチも含まれているため、ページ変数に応じて index.php が渡され、異なるコア コンテンツがロードされます。たとえば、examplesite.com/index.php?page=photos と examplesite.com/index.php?page=stories のヘッダー、フッター、サイド バーは同じですが、一方には写真があり、もう一方にはストーリーがあります。主な内容。

<?php $page = $_GET['page'];?>

<?php include("header.php"); ?>
<?php include("nav.php"); ?>
<?php 
      switch ($page)
      {
      case 'play':
        include("photos.php");
        break;
      case 'cards':
        include("stories.php");
        break;
      default:
        include("frontpage.php");
      } 
      ?>
<?php include("footer.php"); ?>

私のナビゲーションは href="index.php?page=..." リンクで構成されているため、インデックス ページでメニュー ボタンを選択すると、基本的にそれ自体が呼び出され、ロードする新しいコアが渡されます。

これが完全に非正統的なアプローチであるかどうかはわかりませんが、最初はワードプレスのテーマを作成するつもりでしたが、途中でワードプレスでそれをしないことに決めたためにすべてが始まりました.

私が懸念しているのは、検索エンジン、インデックス作成、seo などに関して、このアプローチに関連する可能性のある欠点です。

私が考えていないかもしれないが、私が考えるべき他の欠点や問題は何ですか?

前もって感謝します!

4

1 に答える 1

2

これが完全に非正統的なアプローチであるかどうかはわかりません

さまざまなページをロードするためにクエリ文字列を使用することに、本質的に「非正統的」なことは何もありません。このアプローチを使用している数十億のサイト。検索エンジンは、そのようなページを問題なくインデックス化できます。
それにもかかわらず、

header.php、sidebar.php、および footer.php を常にロードする 1 つの index.php ページがあります。

これは間違った概念です。
ヘッダーとフッターをロードするためだけに index.php ファイルを使用するのは意味がなく、サイトが明らかに使い物にならなくなります。

設計の主な欠点は次のとおりです。

  1. あなたは、すべてのページ呼び出しで header.php が呼び出されると想定しています。それは間違っている。
  2. header.php は常に静的であると想定しています。それは間違っている。
  3. ページ自体のテンプレートを作成するのを忘れました。

誰もが暗記しなければならない主なルール:

すべてのデータの準備が整うまで、1 文字もブラウザーに送信する必要はありません。

なんで?

  • 今日は2012年です。AJAX時代。コードが HTML ページ全体ではなく、JSON 化されたデータを送信する必要がある場合はどうすればよいでしょうか?
  • というものがありHTTP headerます。時々、私たちはそれらを送る必要があります。そして、華麗な HTML ヘッダーが既に送信されている場合、それは不可能になります。
  • 表示ロジックをビジネス ロジックから分離すると、多くのサイトで同じ php コードを使用できます。テンプレートのみを変更する必要があり、エンジン ファイルには触れないでください。それは本当に大きなメリットです。
  • <title>ページのコンテンツに基づいて、ページのカスタム タグを作成するとします。極めて一般的なことではないでしょうか。しかし、テンプレートを使わないと作れません。

そのため、ヘッダーとフッターを含む 1 つの共通サイト テンプレートと、すべての php スクリプト専用のテンプレートが必要です。
そして、これらのテンプレートは、すべてのビジネス ロジックが完了したとき、つまりすべてのデータの準備が整ったときにのみ呼び出す必要があります。

レイアウトの例は次のようになります。

.1. ページ自体。

何も出力せず、必要なデータのみを収集してからテンプレートを呼び出します。

<?
//include our settings, connect to database etc.
include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php';
//getting required data
$DATA=dbgetarr("SELECT * FROM links");
$pagetitle = "Links to friend sites";
//etc
//and then call a template:
$tpl = "links.tpl.php";
include "template.php";
?>

.2. template.phpこれはメインのサイト テンプレートです

ヘッダーとフッターで構成されています:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My site. <?=$pagetitle?></title>
</head>
<body>
<div id="page">
<? include $tpl ?>
</div>
</body>
</html>

.3. 最後links.tpl.phpに、実際のページ テンプレートです。

<h2><?=$pagetitle?></h2>
<ul>
<? foreach($DATA as $row): ?>
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
<? endforeach ?>
<ul>

この方法では、インクルードを含むインデックスはまったく必要ありません

于 2012-04-04T15:17:59.103 に答える