我拥有一个小网站,可以向用户显示一个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
你需要做的是
确保jQuery已下载并包含在每个用户主题页中。
将此代码片段添加到每个用户主题页:
$("#myDiv").load("User-Controls.html")
(其中
#myDiv
是要将控件加载到的模板页上的div IDUser-Controls.html
是包含要加载的控件的html文件的路径