2

我拥有一个向用户显示 html 模板(带有 css)的小型网站。每个用户都可以更改模板(可定制)。

默认情况下,我有一个模板,我每次都复制给一个新用户,或者如果我得到很好的模板(高利率),用户可以选择它。

而不是一遍又一遍地复制模板,有没有一种简单的方法可以让我创建 1 个模板,然后当页面加载时,它会显示在用户页面上,然后他可以进行交互(ajax 调用、href 链接等......)

例如:

新用户第一次登录,“用户许可协议”显示,然后他点击接受,他的页面出现。这个“主页”页面有表格、链接、图像等......使用默认模板。那是我想要动态加载而不是将此模板复制给每个用户的模板。

为什么:我在页面中发现 HTML 错误,现在我需要将此模板复制给 127 个用户……这很痛苦。

我正在使用 LAMP

谢谢

4

3 回答 3

2

是的,使用 jQuery!

$('#divID').load('pathToHTMLTemplate')只要您将 html 文件存储在同一域中,就是您的答案:)

这将使用 ajax 获取 html 模板并将其内容附加到您想要的 div 中。它也可以是“身体”。

这是文档,它应该告诉你你需要的一切。

加载模板后,您可以使用 ajax 或您正在使用的任何应用服务器加载用户特定数据。.load 函数提供回调:

$('#divID').load('pathToHTMLTemplate', function(){
// now the template is loaded and you can maniupulate it further or load user specific data
});
于 2013-08-15T15:05:06.067 回答
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

然后在当前决定向用户显示哪个页面的任何代码中,将其更改为将用户选择的模板从数据库中拉出并改为显示。那么你只有 1 或 2 页而不是 127 页。

如果允许用户对其模板进行编辑,也可以将其作为元数据存储在表中,那么您可以使用替换参数将其添加到模板中。

例子:

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 回答
0

我假设您的意思是您有一个为每个用户定制的 HTML 文件(外观、感觉等):

User1-theme.html
User2-theme.html
User3-theme.html
User4-theme.html
User4-theme.html

然后,您将拥有一个文件,其中包含您想要为每个用户提供的所有 ajax 调用、链接等:

User-Controls.html

你需要做的是

  1. 确保jQuery已下载并包含在您的每个用户主题页面中。

  2. 将此代码片段添加到您的每个用户主题页面:

    $("#myDiv").load("User-Controls.html")

    #myDiv您要将控件加载到的模板页面上的 div ID 在哪里,并且User-Controls.html是包含您要加载的控件的 html 文件的路径

于 2013-08-15T15:45:08.577 回答