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

时间:2013-07-25 12:31:40

标签: templates dynamic lamp

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

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

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

例如:

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

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

我正在使用LAMP

谢谢

3 个答案:

答案 0 :(得分:2)

  

是的,使用jQuery!

只要您将html文件存储在同一个域中,

$('#divID').load('pathToHTMLTemplate')就是您的答案:)

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

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

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

$('#divID').load('pathToHTMLTemplate', function(){
// now the template is loaded and you can maniupulate it further or load user specific data
});

答案 1 :(得分: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>";

答案 2 :(得分:0)

我认为你的意思是你有一个为每个用户定制的HTML文件(外观,感觉等):

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

然后您将拥有一个文件,其中包含您希望每个用户使用的所有ajax调用,链接等:

User-Controls.html

您需要做的是

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

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

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

    (其中#myDiv是您要加载控件的模板页面上的div ID 并且User-Controls.html是包含要加载的控件的html文件的路径

相关问题