2

ユーザーにhtmlテンプレート(css付き)を表示する小さなWebサイトを所有しています。各ユーザーはテンプレートを変更できます (カスタマイズ可能)。

デフォルトでは、新しいユーザーに毎回コピーするテンプレートがあります。または、適切なテンプレート (高レート) を取得した場合、ユーザーはそれを選択できます。

テンプレートを何度もコピーする代わりに、1 つのテンプレートを作成する簡単な方法はありますか?ページが読み込まれると、それがユーザー ページに表示され、ユーザーが対話できるようになります (ajax 呼び出し、href リンクなど...)。

例えば:

新しいユーザーが初めてログインすると、「ユーザー使用許諾契約書」が表示され、[同意する] をクリックすると自分のページが表示されます。この「ホーム」ページには、デフォルトのテンプレートを使用したフォーム、リンク、画像などが含まれています。このテンプレートを各ユーザーにコピーするのではなく、動的にロードしたいものです。

理由: ページに HTML エラーが見つかりました。このテンプレートを 127 人のユーザーにコピーする必要があります。これは面倒です。

私はランプを使用しています

ありがとう

4

3 に答える 3

0

「user1.html」、「user2.html」、または同様のファイルの束を含むディレクトリがどこかにあるように思えます(投稿から離れただけです)。基本的に同じテンプレートであるため、これらはすべて同じか類似しています。

私の推奨事項: ユーザー ID (または名前、ただし配列は任意) をテンプレートにマップするデータベース テーブル (またはフラット ファイル、ただしデータベース テーブルをお勧めします) を用意します。たとえば、user1 と user2 が template_default.html を使用し、user3 が template_popular.html を使用する場合、データベースには次のようになります。

name|template
user1|template_default.html
user2|template_default.html
user3|template_popular.html

次に、ユーザーに表示するページを現在決定しているコードで、ユーザーが選択したテンプレートをデータベースから引き出して代わりに表示するように変更します。したがって、127 ページではなく、1 ページまたは 2 ページしかありません。

ユーザーがテンプレートを編集することを許可されている場合、それはテーブルにメタデータとして保存されることもあり、置換パラメーターを使用してそれをテンプレートに追加することができます。

例:

MySQL テーブル:

CREATE TABLE user_templates (
    `user` varchar(100),
    template varchar(100)
);

新しいユーザーを受け取ったら:

INSERT INTO user_templates(`user`,template) VALUES("<username>","default_template.html");

ユーザーが新しいテンプレートを選択すると:

UPDATE user_templates set template = "<new template>" WHERE `user` = "<username>";

ユーザーがユーザーのページをロードすると (これは php で行われます):

$template = "default_template.html";
$query = "SELECT template FROM user_templates WHERE `user` = \"" . mysql_real_escape_string($username) . "\"";
$result = mysql_query($query,$databaseHandle);
if ($result && mysql_num_rows($result) > 0) {
    $template = mysql_result($result,0,"template");
}

// 1st way to do it
$pageToLoad = "http://www.someserver.com/templates/$template";
header("Location: $pageToLoad");
// 2nd way, if you want it embedded in a page somewhere
$directory = "/var/www/site/templates/$template";
$pageContents = file_get_contents($directory);
print "<div id=\"userPage\">$pageContents</div>";
于 2013-08-09T17:07:04.910 に答える