2

これは、私が自分のファイルをどのように持っているか、そしてそれらが何をするかを大まかに示したものです。

先頭のindex.phpは HTML の開始タグを表示し、header.php (リンクの div) を含み、最後に HTML の終了タグを表示する footer.php を含めます。この間に、index.php は GET パラメータ、POST フォームなどからすべてのユーザー入力を取得し、データベース ( functions.php および mysql_functions.php ) からデータを取得します。本文のコンテンツを表示するために、ユーザーが要求したページに基づいた PHP テンプレート ファイルが含まれます

テンプレート ファイルに表示される情報は、単純な変数ではなく配列に格納されるため、テンプレートでは次のようになります。

<title><?php echo $content['page_title']; ?></title>

<div>
    <?php
        foreach($name as $content['names']){
            echo '<p>'.$name.'</p>';
        }
    ?>
</div>

テンプレート ファイルには実際に重いコードはなく、ループと基本的な if ステートメントのみです。重い作業は index.php と関数ファイルで行われます。

ハッキーで厄介で、物事を行うのに良い方法ではないかもしれないと感じることがあります。先日、テンプレート システム (Code Igniter) を見ましたが、コンテンツを表示するためだけに変更するファイルが非常に多く、複雑なようです。

私がやっている方法についての批判と賛否両論、そしてどうすればもっとうまくやれるかについてのアイデアをいただけますか?

4

2 に答える 2

0

あなたは正しいです。大量のコードを1つのファイルにスタックすることはお勧めできません。ただし、PHPの初心者の場合は、まだあまり心配する必要はありません。あなたのファイル構造を頭の中で完全に描くことはできませんが、私には考えがあると思います。

すべてのPHP関数などを他のファイルに入れて、index.phpで使用するPHPをできるだけ少なくしてください。ただし、不要なファイルが多すぎないように注意してください(イベント/関数ごとに1つ)。

于 2012-12-12T00:48:34.487 に答える
0

PHP で行われた Template Toolkit のベータ版が少なくともありました。しかし、元の perl は本質的に別の言語です。それはかなり強力です。

オリジナルはCPANにあります。現在のバージョンは 2.25 だと思います。

私の Web 構築システムでは、コンテンツとマークアップがほぼ完全に分離されています。

これは、コンテンツを追加する前の基本ページです。

[% PROCESS header.inc 
    Title = "Sherwood's Forests -- Seedling Sales" 
    Desc = "Sherwood's Forests Pre-season orders for little Trees."
%]

<DIV id="content">
[% FILTER multimarkdown %]


# Seedling Sales 2014

<div markdown="1" class=picr>

![Picture alternate text][/base-absolute/path/to/image.jpg]

</div>

Please be patient

#### This file is still germinating 


[% PROCESS Copyright.inc %][% END %]



</div>
[% INCLUDE footer.inc %]

すべてのコンテンツは FILTER 行と下部の間にあります。コンテンツはマークダウンで記述されています。列の右側に画像を浮かせることができます。CSS は完全に流動的であるため、画面は iPhone で (かろうじて) 使用可能です。

マジックのほとんどは header.inc にあります。これは、本質的にウェブサイト全体のメニュー ツリーである fileindex.txt ファイルを読み取ります。ジャバなし。すべての静的 Web サイト。

Fileindex.text は次のようになります。

ABBAB:f:/Home/Business_Stuff/Inventory.html:3:Inventory.html:Inventory
ABCAB:f:/Home/Business_Stuff/Ordering.html:3:Ordering.html:Ordering
ABDAB:f:/Home/Business_Stuff/Prices.html:3:Prices.html:Prices
ABJAB:f:/Home/Business_Stuff/Business_Stuff.html:3:Business_Stuff.html:Business Stuff
ADAAA:d:/Home/Services:2:Services:Services
ADJAB:f:/Home/Services/Christmas_Trees.html:3:Christmas_Trees.html:Christmas Trees
ADKAB:f:/Home/Services/Custom_Growing.html:3:Custom_Growing.html:Custom Growing
ADLAB:f:/Home/Services/Nature_Walks.html:3:Nature_Walks.html:Nature Walks

先頭のアルファベット スープによって、インデックスの並べ替え順序が決まります。d または f はディレクトリまたはファイルです。数字は、メニュー階層の下位レベルの数です。次に、フル パスのファイル コンポーネント。最後に、リンク名に使用されるテキスト。これのいくつかは以前の書き直しから冗長ですが、修正する価値はありませんでした。「まだ最適化しないでください」。最後のフィールドでは、ファイル名とは異なるリンク名を使用できます。これはあまり使いません。

fileindex.txt 自体は、perl プログラム MakeFileIndex によって生成されます。これは 2 つの情報源を使用します: find の結果です。ソースツリーで実行し、オプションでメニュー項目の順序をオーバーライドするファイル tt2seq を実行します。

サイトに新しいページを追加したい。

最初のファイルを適切なディレクトリにコピーします。そのファイルの内容を私の新しい内容に変更します。アルファベット順以外で表示する必要がある場合は、それを制御するために tt2seq に行を追加する必要があります。MakeFileIndex を実行します。ttree -a (Template Toolkit のユーティリティ) を実行します。これにより、すべてのファイルのすべてのメニュー項目が更新されます。

ページが希望どおりに表示されることを確認します。そうでない場合は、再編集します。編集したばかりのファイルに対して ttree を再実行します。満足したら、サーバーに同期します。

最終的な効果は、メカニックに費やす時間が、執筆にかかる時間に比べてわずかであることです。

サイトを再配置する場合は、ディレクトリ ツリー内でファイルを移動して再構築するだけです。これは、コンテンツ ブロック内の内部リンクを修正しません。

この方法で作成されたサイトはhttp://sherwoods-forests.comです。昔ながらのサイトです。シズルではなく、コンテンツに重点が置かれています。しかし、これは静的ページを作成するための優れたシステムです。

于 2014-01-29T04:36:05.343 に答える