加载动态HTML以显示自定义模板



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

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

有没有一种简单的方法可以让我创建一个模板,然后当页面加载时,它会显示在用户页面上,然后他可以交互(ajax调用、href链接等)

例如:

新用户第一次登录时,会显示"用户许可协议",然后单击"接受"并显示页面。这个"主页"有使用默认模板的表单、链接、图像等。这就是我想要动态加载的模板,而不是将此模板复制到每个用户。

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

我使用LAMP

感谢

是的,使用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
});

听起来(刚结束你的帖子),你有一个目录,里面有一堆文件"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>";

我假设您的意思是,您有一个为每个用户定制的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 IDUser-Controls.html是包含要加载的控件的html文件的路径

最新更新