我有一个使用PHP开发的Web应用程序。我希望我的用户在整个应用程序中为他们的页面选择主题。
我应该如何了解PHP应用程序中的主题?
修改
关于主题的问题仅涉及改变布局的颜色,而不是图像。
假设我的ADMIN用户将有白色和橙色,但我的员工用户将有白色和绿色......
如何使用CodeIgniter在PHP中完成?
答案 0 :(得分:4)
你可以用很多指示。
1)“CSS ZEN”
这是标记保持不变的地方,但您只需使用CSS和图像即可完全更改设计。在http://www.csszengarden.com/
上表现得非常好2)MVC Stylee
这是您创建表示页面数据的模型然后将其传递给视图的位置,该视图包含一些内联echo语句。这个想法是你可以将相同的模型发送到一个完全不同的视图,因此它可能看起来完全不同,HTML和所有。 Cake PHP是一个很好的开端:http://cakephp.org/
示例:
<div class="content">
<? echo $Page->Content ?>
</div>
3)微标记
使用此方法,您可以将自己的“特殊标记”添加到HTML页面。然后,您可以在纯HTML页面中读取并使用要显示的信息替换特殊标记。如果您希望模板能够被不熟悉PHP并且可能破坏MVC应用程序中的PHP代码的HTML人员识别,那么这是很好的。
示例:
<div class="content">
<#Content#>
</div>
在所有这些中,MVC是一种非常结构化的方式来实现您的目标 - 但是,我列出了其他选项,因为它们可以满足您可能相关的特定方案。
我已经在所有这三个中实施了这个概念,适用于每个概念。
关于问题中的编辑
我想你会拥有代表你用户的“东西” - 所以它就像:
(如果只想覆盖一些设置......)
<link href="style.css" type="text/css" rel="stylesheet">
<?php if ($User->Type === USER_ADMIN) { ?>
<link href="admin.css" type="text/css" rel="stylesheet">
<?php } ?>
您可以通过以下方式调整此示例:
答案 1 :(得分:3)
您通常会设置包含HTML和CSS的模板文件,并在运行时构建PHP生成的值。
最好的方法是让主题位于一个单独的目录中,不包含任何代码,只有模板变量,如{mainmenu}
,{backbutton}
,{content}
...你得到了我的漂移。然后由PHP脚本填充,可能借助Smarty等模板引擎(无需在此重新发明轮子)。
还有一种方法是直接在模板文件中使用PHP标记,例如 echo $xyz;
,这是我经常使用的完全有效的做法,我建议使用模板如果你想要一个可靠的,面向未来的模板系统,请在代码中使用PHP标记,因为:
首先,设计人员在处理HTML时可能会中断。
其次,在代码中使用PHP标记是在模板中编写PHP逻辑(循环,条件)的诱惑,而不是在PHP代码中正确地准备它们 模板变量已创建。这对于维护和模板的进一步使用来说非常糟糕,因为您必须再次将该PHP复制到每个新模板中。毕竟,您希望拥有一个模板引擎,以便其他人可以为您的产品创建新的外观,而无需知道如何编程。
第三,使用基于模板引擎的方法,您可以在必要时添加缓存,无需任何额外工作。脚本方法无法实现。是的,在Web 应用程序中,您将无法缓存那么多,但是对于大量数据,将会有一些实例可以帮助用户体验。
第四,也是最不重要的,它使您的模板不易导出到其他应用程序,并从其他应用程序导入模板。
Sohnee提到的CSS Zen方法非常适用于网站,但对于使用复杂输入元素,基于JS的菜单等的Web应用程序来说,它会受到太多限制。通常需要在标记中更改和自定义这些元素。
答案 2 :(得分:1)
如果您查看我的CodeIgniter Template library,它会简要介绍如何设置主题和布局(相当于页眉和页脚)。
如果您设置了全局代码,例如Hook或MY_Controller,那么您可以根据登录用户,用户类型等动态设置主题。
例如:
if($user->role == 'admin')
{
$this->template->set_theme('admin_skin');
}
else
{
$this->template->set_theme($user->theme);
}
这只是一个非常的基本示例,可以使用此模板库。
答案 3 :(得分:0)
CMS解决方案
Magento和Wordpress将所有与主题相关的文件打包到自己的单独目录中。这些包含主题的服务器端代码,样式表,图像和javaScript。实际上,用户选择使用的目录会影响页面的布局和样式。
更简单的方法
更简单的入门方式是接受实际内容,例如:页面的HTML将保持不变,但让用户从各种CSS样式表中进行选择。
选择样式表时,系统可以使用JavaScript动态加载样式表,以便用户可以预览他们选择的样式。
答案 4 :(得分:0)
如果你有非常好的语义HTML,那么改变CSS文件就足够了。除非设计变更真的很重。然后提供使用某种模块构建的PHP模板是有意义的:包含某些HTML结构的变量,如导航或侧边栏等。
答案 5 :(得分:0)
对于主题,您不需要PHP。只需在CSS中定义主题(最好的方法是每个主题一个文件),并使用像此网站上的简单JavaScript选择器:http://www.fotokluburan.cz/switchcss.js。