我拥有一个小网站,向用户显示一个html模板(带有css)。每个用户都可以更改模板(可自定义)。
默认情况下,我有一个模板,我每次都会复制给新用户,或者如果我得到一个好的模板(高费率),用户可以选择它。
而不是一遍又一遍地复制模板,是否有一种简单的方法让我创建1个模板,然后当页面加载时,它显示在用户页面上,然后他就可以进行交互(ajax调用,href链接等等。 。)
例如:
新用户第一次登录,“用户许可协议”显示然后他点击接受并显示他的页面。这个“主页”页面有表格,链接,图像等...使用默认模板。我希望动态加载,而不是将此模板复制到每个用户。
为什么:我在页面中发现HTML错误,现在我需要将此模板复制到127位用户......这很痛苦。
我正在使用LAMP
谢谢
答案 0 :(得分:2)
只要您将html文件存储在同一个域中,是的,使用jQuery!
$('#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
您需要做的是
确保已下载jQuery并将其包含在每个用户主题页面中。
将此代码snipplet添加到您的每个用户主题页面:
$("#myDiv").load("User-Controls.html")
(其中#myDiv
是您要加载控件的模板页面上的div ID
并且User-Controls.html
是包含要加载的控件的html文件的路径