主题制作之主题的.info文件
    info配置文件是在Drupal6中新赠的,每个主题都必须有一个.info文件.该文件应该放在你主题的目录下面.如果没有该文件的话,Drupal就不到你的主题. .info文件的后缀名必须为".info".
主题在Drupal内部的名字源自于这个文件.例如,如果文件名为drop.info",那么在Drupal内部,主题名字就为"drop".名字里面不要包含奇怪的字符,这是由于在Drupal中,许多PHP函数都是以主题名打头的,所以主题名和函数名存在同样的限制。起始字符必须为alphabetic字母,不能包含空格,标点等字符。可以包含下划线,但是不能包含连字符。数字字符也是允许的,但不能出现在首位。
注意:
•    警告!模块的内部名称如果与主题的内部名称重名的话,那么你的站点将不能工作。因为可能会造成同名函数的存在,这在PHP中是非法的。每个安装了的部件(模块或者主题)都必须有一个唯一的名字。
•    .info文件中的内容是缓存在数据库中的,所以对它的修改不会在Drupal中立马生效。(不要与主题注册表的缓存相混淆了。)为了清除缓存,须这样做:
1.    导航到"Administer > Site configuration > Performance",点击"clear"按钮。
2.    如果启用了devel区块(安装了devel模块的话),点击"Empty cache"清空缓存)链接。
3.    然后导航到主题选择页面"Administer > Site building > Themes"
语法与INI/wiki/INI_file)文件类似。.info文件就是一个用来配置主题的的静态文本文件。文本文件的每一个行就是一个键值对(key-value),其中键位于左边,值位于右边,而中间则有一个等号。(例如:key = value)。分号是用来注释的。有些键使用了特殊的语法,带有中括号[],用来构建一列关联值,也就是我们常说的数组”.如果你不熟悉数组的话,模仿Drupal默认.info文件中的例子,根据例子中的解释,完全可以依葫芦画瓢,得到自己的数组了。
Drupal可以识别下面所列的键。如果.info文件没有设置的话,Drupal将为其使用默认值(/node/171206)。可参看核心主题中的例子(/node/171205#example#example)。
•    name ! (名字)
•    description *  描述
•    screenshot  截图
•    version *  版本
•    core !    内核
•    engine *  引擎
•    base theme  基主题
•    regions    区域
•    features    特性
•    stylesheets    样式表
•    scripts      脚本
•    php        php
                            主题的.info文件介绍
        name (required)  名字(必须)
这是用户可读的名字,与主题的Drupal内部名字可以分开单独进行设置.这在这里,字符的限制则很少.
name = Un tema nombre de fantasia
 
description (recommended)  描述(推荐)
主题的简短描述.你可以在页面"Administer > Site building > themes"看到主题的描述.
description = Tableless multi-column theme designed for blogs.
 
screenshot 截图
截图键时可选的,它告诉Drupal主题的缩略图在哪里,在选择主题页面(admin/build/themes)里用到了缩略图.如果.info文件中忽略了该键,那么Drupal就会使用主题目录下面的"screenshot.png"文件.
只有当你的缩略图不叫"screenshot.png",或者你不想把它放到你主题的根目录(比如,screenshot = images/screenshot.png)下面时,才使用该键。
screenshot = screenshot.png
 
version (recommended) 版本(推荐)
当发布一个新的版本时,会自动为其添加一个版本号。当你为Drupal贡献主题时,
你可以忽略该值。如果你的主题没有放到上的话,你可以为你的主题指定任意一个版本号。
version = 1.0
core (required)  内核(必须)
Drupal 6.x开始,模块和主题的.info文件都必须指明它们兼容的Drupal内核主版本号。这里设的值将与DRUPAL_CORE_COMPATIBILITY常量相比较。如果不匹配的话,那么主题将被禁用。
core = 6.x
php模板引擎原理的打包脚本,将根据每个发布版本的Drupal内核兼容性设置,自动设置该值。所以从下载下来的主题,设置总是正确的。然而,对于直接通过CVS部署的Drupal站点来说,如果你将这一修改提交到你主题的.info文件中去的话,将会很有帮助。它也能够非常方便的帮用户指出,主题兼容CVSHEAD中的哪些内核版本。
 
engine (recommended) 引擎(推荐)
主题引擎,供主题使用。如果没有提供引擎的话,那么主题就是独立的,比如,实现一个".t
heme"文件。大多数主题都使用"phptemplate"作为默认引擎。
PHPTemplate负责查主题用到的主题函数和模板。只有当你理解你在做什么的时候,你才可以忽略这一设置。
engine = phptemplate


 base theme 基主题
子主题可以声明一个基主题。这允许主题的继承,也就是说基主题中的资源将被传递下来并在子主题中使用。子主题可以声明别的子主题作为其基主题,也就是允许多重继承的存在。基主题的名字为其在Drupal内部的名字。下面是Garland的子主题Minnelli的相应设置。
base theme = garland
更多细节可参看子主题,它们的结构和继承(/node/225125)。

regions 区域
我们这样定义主题中的区域,声明键'regions',紧跟着“[”,接下来是内部名字,接着是“]”,
后是一个等号,右边是用户可读的区域名字。例如,regions[theRegion] = The region name.
如果没有定义区域的话,那么使用下面的默认值。你可以根据自己的需要覆写这些值。
 
regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer
更多细节可参看,区块,内容和它们的区域/node/171224)。
 
features  特性
许多由主题控制输出的页面元素,可以在主题的配置页面启用或者禁用. "features"键控制着出现在主题配置页面上的复选框.对于一个主题,如果你不想为其定义某个复选框时,着非常有用.为了删去某个复选框,只需要在"features"中将其删除即可.如果一个也没有定义的话,那么会输出所有默认的复选框.
下面的例子列出了所有由features键控制的元素.通过注释掉primary_linkssecondary_links元素,那么站点管理员就不会看到这两个复选框了.
features[] = logo
features[] = name
features[] = slogan
features[] = mission
features[] = node_user_picture
features[] = comment_user_picture
features[] = search
features[] = favicon
; These last two disabled by redefining the
; above defaults with only the needed features.
; features[] = primary_links
; features[] = secondary_links
更多信息参看定制主题设置”(/node/221905).


stylesheets 样式表
传统方式,主题可自动的使用默认的style.css,并且可以在它们的template.php文件中通过调用drupal_add_css()来添加其它样式表。从Drupal6开始,主题也可以通过.info文件来添加样式表。
stylesheets[all][] = theStyle.css
更多信息可参看样式表一节(/node/171209)。

scripts 脚本
传统方式,主题通过在template.php文件中调用drupal_add_js()来添加javascripts脚本。从Drupal6开始,主题也可以通过.info文件来添加javascripts了:
scripts[] = script.js
更多信息参看  JavaScript & jQuery一节。
 
php
这个定义了主题支持的PHP最低版本。其默认值源自DRUPAL_MINIMUM_PHP常量,它是Drupal内核所需要的php最低版本。对于一个新的版本,如果需要的话,可以对其进行重新定义。而对于大多数的主题,都不应该添加这一项。
php = 4.3.3
                drupal主题制作之覆写可主题化的输出
    覆写机制有一个特定的级联顺序,当然也包含一些特殊情况。Drupal内核和模块使用主题钩子提供了一个合理的默认输出。如果默认输出不符合主题的 需求的话,那么就可以对其进行覆写,从而避免使用默认输出。这样,默认的将被放到一边去,我们不再管它,而将所有的特定修改放到所用的主题目录下面。不要 直接修改Drupal内核和模块,只在主题目录下面修改。
 
如果传统的覆写不能满足你的需要的话,你可以使用主题注册表。
注意:尽管在Drupal 6ine还存在,但它已不再覆写主题函数了。在Drupal5中,它允许使用模板来处理部分主题钩子。而现在则不必要这样了。
                        drupal6的主题注册表
        Drupal的主题注册表维护了主题钩子相关的缓存数据,包含主题钩子和如何处理它们的信息。
对于大多数主题开发者来说,都不需要直接与注册表打交道。只需要记住,当添加或者删除主题函数和模板时,要清空它。编辑已有的函数和模板时,则不需要清空。
清空主体注册表,有3方式:
1.    位于"Administer > Site configuration > Performance"clear按钮。
2.    如果启用了devel区块(devel模块创建的),点击"Empty cache"连接。
3.    使用API函数drupal_rebuild_theme_registry
 
主题注册表是主题钩子相关信息的缓存数据,包括Drupal可用的主体钩子,钩子类型,即如何处理它们。在以前的版本中,所有的主题调用都是直接完成的。由于在底层需要进行大量的处理工作,而缓存可以加快这种处理,特别是对于模板而言。你主题用到的引擎应该为你自动的注册所有的主题钩子。
在一些特殊情况下,你需要直接与注册表打交道。如果你的主题需要注册一个新的钩子,而
该钩子不在底层中(内核,模块,引擎)。比如说一些表单,内核或者模块没有明确对其主体化,而仅仅使用了默认的表单输出。
 
•    更多细节,参看子页面特殊情况下的主题注册表The theme registry for special cases)。
•    不要将主题注册表与主题的.info文件混淆了,两者都被缓存了。清空主题注册表的第1点和第2点,同时也清空了.info的缓存。
                            durpal6的主题预处理函数
        /* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Calibri","sans-serif";}
    预处理函数仅适用于模板形式的主题钩子.它的主要作用是设置模板文件(*.tpl.php)中所用到的变量。在预处理器(Preprocessor)中,一般涉及不到普通的主题函数。
注意:
在提供模板建议(template suggestions)时也会用到预处理器。
drupal5中,函数_phptemplate_variables提供了同样的功能,在drupal6中,为了以后版本的兼容性,最好不要用这个函数。
对于单个主题钩子,可以有多个预处理器。内核,模块,引擎,主题,每层都可以有一个预处理器,来逐步的构建显示在模板文件中的变量集。通过将大部分逻辑放到这些预处理器中,可使得模板文件更加简洁,易于使用。
 下面是预期的预处理器。当它们同时存在时,按照下面的顺序运行:
1.    template_preprocess
-这个是由内核提供的,也是始终存在的。这里声称的变量在所有的模板钩子中都可以使用.
2.    template_preprocess_hook
-实现了主题钩子的内核或者模块提供该处理器。特定于某个钩子的变量,通常首先在这里生成。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。