如何开始使用PHP主题?

时间:2010-02-01 10:47:18

标签: php codeigniter themes

我有一个使用PHP开发的Web应用程序。我希望我的用户在整个应用程序中为他们的页面选择主题。

  • 在使用PHP主题之前,我应该从哪里开始?

我应该如何了解PHP应用程序中的主题?

修改

关于主题的问题仅涉及改变布局的颜色,而不是图像。

假设我的ADMIN用户将有白色和橙色,但我的员工用户将有白色和绿色......

如何使用CodeIgniter在PHP中完成?

6 个答案:

答案 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 } ?>

您可以通过以下方式调整此示例:

  • 如果有多种用户类型,请使用switch语句
  • 如果替换是完全的,而不是只是几个覆盖,您可能想要完全交换样式表。

答案 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