主题drupal 主题

drupal主题  时间:2021-03-20  阅读:()

name (required) 名字(必须)

这是用户可读的名字,与主题的Drupal内部名字可以分开单独进行设置.这在这里,字符的限制则很少.name=Un tema nombre de fantasiadescription (recommended) 描述(推荐)

主题的简短描述.你可以在页面"Administer>Site bui lding >themes"看到主题的描述.description=Tableless multi-column theme designed forblogs.screenshot截图

截图键时可选的,它告诉Drupal主题的缩略图在哪里,在选择主题页面(admin/bui ld/themes)里用到了缩略图.如果. info文件中忽略了该键,那么Drupal就会使用主题目录下面的"screenshot.png"文件.只有当你的缩略图不叫"screenshot.png",或者你不想把它放到你主题的根目录(比如 screenshot =images/screenshot.png)下面时才使用该键。screenshot=screenshot.pngversion (recommended)版本推荐

当发布一个新的版本时 drupal .org会自动为其添加一个版本号。当你为Drupal贡献主题时你可以忽略该值。如果你的主题没有放到d ru pa l .o rg上的话你可以为你的主题指定任意一个版本号。ve rs io n=1.0co re (req u ired) 内核必须

从Drupal 6.x开始模块和主题的. info文件都必须指明它们兼容的Drupal内核主版本号。这里设的值将与DRUPAL_CORE_COMPATIBILITY常量相比较。如果不匹配的话那么主题将被禁用。core=6.xdrupal .org的打包脚本将根据每个发布版本的Drupal内核兼容性设置 自动设置该值。所以从drupal .org下载下来的主题设置总是正确的。然而对于直接通过CVS部署的Drupal站点来说如果你将这一修改提交到你主题的. info文件中去的话将会很有帮助。它也能够非常方便的帮用户指出主题兼容CVS的HEAD中的哪些内核版本。engine (recommended)引擎推荐

主题引擎供主题使用。如果没有提供引擎的话那么主题就是独立的 比如实现一个".theme"文件。大多数主题都使用"phptemplate"作为默认引擎。

PHPTemplate负责查找主题用到的主题函数和模板。只有当你理解你在做什么的时候你才可以忽略这一设置。engine=phptemplatebase theme基主题

子主题可以声明一个基主题。这允许主题的继承也就是说基主题中的资源将被传递下来并在子主题中使用。子主题可以声明别的子主题作为其基主题也就是允许多重继承的存在。基主题的名字为其在Drupal内部的名字。下面是Garland的子主题Minnel l i的相应设置。base theme = garland 更多细节可参看子主题  它们的结构和继承http://drupal .org/node/225125。reg io ns区域

我们这样定义主题中的区域声明键'reg io ns' 紧跟着“[”接下来是内部名字接着是“]”,然后是一个等号右边是用户可读的区域名字。例如 regions[theRegion]=The region name.

如果没有定义区域的话那么使用下面的默认值。你可以根据自己的需要覆写这些值。

regions[left] = Left sidebarregions[right] = Right sidebarregions[content] =Contentregions[header]=Headerregions[foote r]=Footer更多细节可参看 “区块 内容和它们的区域” http://drupal .org/node/171224。features 特性

许多由主题控制输出的页面元素,可以在主题的配置页面启用或者禁用. "features"键控制着出现在主题配置页面上的复选框.对于一个主题,如果你不想为其定义某个复选框时,着非常有用.为了删去某个复选框,只需要在"features"中将其删除即可.如果一个也没有定义的话,那么会输出所有默认的复选框.

下面的例子列出了所有由features键控制的元素.通过注释掉primary_l inks和secondary_l inks元素,那么站点管理员就不会看到这两个复选框了.features[] = logofeatures[] = namefeatures[] = sloganfeatures[] =missionfeatures[] =node_user_picturefeatures[] = comment_user_picturefeatures[] = searchfeatures[] =favicon;These last two disabled by redefining the; above defaults with only the neededfeatures.; features[] =primary_l inks; features[] =secondary_l inks更多信息参看”定制主题设置”(http://drupal .org/node/221905).stylesheets样式表

传统方式主题可自动的使用默认的style.css并且可以在它们的te mplate.php文件中通过调用drupal_add_css()来添加其它样式表。从Drupal6开始主题也可以通过. info文件来添加样式表。stylesheets[al l][] = theStyle.css 更 多 信 息 可 参 看 “ 样 式 表 ” 一 节http://drupal .org/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

Garland:

; $Id:garland.info,v 1.52007/07/0123:27:32 goba Exp$name=Garlanddescription=Tableless,rec olorable,multi-c olumn, fluid width theme (default).version=VERSIONc ore=6.xengine=phptemplatestylesheets[all][] = style.c ssstylesheets[print][] = print.c ss; Information added bydrupal.org packaging script on 2008-02-13version = "6.0"project = "drupal"datestamp ="1202913006"

Minnelli sub-theme of Garland. :

; $Id:minnelli.info,v 1.72007/12/0420:58:44 goba Exp$name=Minnellidescription=Tableless,recolorable,multi-column, fixed width theme.version =VERSIONcore = 6.xbase theme =garlandstylesheets[all][] =minnelli.css; Information added by drupal.org packaging script on2008-02-13version="6.0"project="drupal"datestamp="1202913006"

注意从行“; Information added by drupal.org packaging script on 2008-02-13”开始直到结束这都是由drupal.org的打包脚本自动添加的。你一定不要手工添加project(项目)和datestamp

时间戳键。手工添加vers ion(版本)键第一个那么就可以允许直接从CVS建立起来的站点使用你的主题了。

下面是假定的默认值。如果它们没有被定义的话主题将自动使用这些值。

注意这些默认值是作为一个组来共同起作用的。换句话说仅仅使用regions[sub_header]=Su b-header来覆写一个区域的话将会造成其它默认区域的消失。为了使用它们必须对它们进行重新定义。对于"stylesheets"也是一样的。尽管从技术的角度来看 它不是一个组定义另外一个样式表除非你重新对"style.css"进行定义否则是找不到它的。regio nsregions[left]=Left sidebarregions[right]=Right sidebarregions[content]=Contentre gi o ns[he ade r]=He ade rregions[footer]=Footerfe aturesfeatures[]=logofe atures[]=namefeatures[]=sloganfeatures[]=mis sionfe atures[]=no de_user_pi cture

fe atures[]=c omment_user_picturefeatures[]=searchfeatures[]=faviconfe atures[]=primary_linksfe atur es[]=s e co ndary_linksstylesheetss tyl e s he et s[al l][]=s tyl e.cs ss cri ptss cripts[]=s cript.j sscreenshots creenshot=s creenshot.pngphp(minimum support) 支持的最低版本

DRUPAL_MINIMUM_P HP是一个常量。它指出了运行Drupal所需php的最低版本。php=DRUPAL_MINIMUM_P HP

覆写可主题化的输出

星期六, 2008-08-30 21:28—g089h515 r 806原文 http://drup al.org/node/173880

译者葛红儒, http://zhup o u.c n,

只有当你需要修改默认输出时,你才需要阅读本节.如果你的显示层是完全有CSS样式表负责的那么可以略过本节。

覆写主题输出需要掌握3个方面。首先你需要知道源头在哪里其次你要进行覆写最后你需理解它的类型。

注意Drupal使用主题注册表(theme registry)来缓存主题数据覆写完成后你必须清空缓存。

1. 寻找源头

寻找主题输出的源头是比较困难的这是由于主题系统的多层级结构造成的使得源头可能出现在系统的各个地方。

仅用来演示用。

大多数页面元素一般是由them e('p ag e')拉进来的在显示导航信息以后 它们被放置在p ag e.tp l.p hp模板中。页面元素包括主菜单、区块区域元素 区域中的区块等等。通常通过一个主题钩子来引用每个大块的主题化数据。

注意主题钩子现在包括主题函数和模板两部分。系统中的许多钩子都与主题无关。我们这

里提到的钩子都是特定于主题的。

现在使用devel模块(devel module)可以很容易的追踪特定内容的源头。 devel模块包含一个主题工具可以方便的查勘任何输出的源头类型以及其它主题相关数据。参看示范s creenc as t(http://drupal.org/node/209561)。 由于技术方面的限制它只能应用到Drupal6以及更高版本中。

2. 覆写机制

覆写机制有一个特定的级联顺序当然也包含一些特殊情况。Drup al内核和模块使用主题钩子提供了一个合理的默认输出。如果默认输出不符合主题的需求的话那么就可以对其进行覆写从而避免使用默认输出。这样默认的将被放到一边去我们不再管它而将所有的特定修改放到所用的主题目录下面。不要直接修改Drupa l内核和模块只在主题目录下面修改。

如果传统的覆写不能满足你的需要的话你可以使用主题注册表。

注意尽管在Drupal 6中PHPTemplat e.engine还存在但它已不再覆写主题函数了。在Drupal5中它允许使用模板来处理部分主题钩子。而现在则不必要这样了。

3.函数VS模板

正如前面所说实现特定的钩子有两种方式。通常的“函数”或者“模板”。根据要主题化的元素的特点选用最合适的方式。内核和模块可选用任何一种方式来构建输出。而上面的主题层可以使用同样的方式来覆写或者改变选用的方式。

Links to PDF.Flow mapfor 5 also availablefor comparison.

使用函数来实现主题钩子具有速度上的优势。通常比使用模板的快5倍但是对们对于涉及者来说就比较困难通常涉及者都比较熟悉直接的x HT ML而不是p hp函数。通常我们不需要考虑这样一点而是根据钩子的特点和在一个页面中被调用的次数来决定要选择的方式。

注意在Drup al5及以前版本 内核和模块只能使用函数来实现主题钩子。想要使用模板的话必须使用PHPTemplate来覆写钩子并在引擎层中进行转换。

下面是覆写的两个例子这里使用了devel themer.

函数方式

主题函数theme_menu_loc al_tasks是一个用来输出一级和二级标签的简单函数。这里的主题钩子就是"menu_loc al_tasks"。为了覆写它可将函数名中的前缀"theme"替换为你主题的名字或者所用主题引擎的名字。最好使用主题的名字这样可以避免潜在的与子主题http://drup al.or g/no de/225125的命名冲突。

本例中 Garland是使用引擎名来覆写的。如果你的主题是基于Garland的子主题那么你必须使用你的主题名了。

将下面的代码放到主题的temp late.php清空主题注册表缓存这样就覆写了默认输出。注意将"drop"改为你主题的名字。

<?p hpfunction drop_menu_loc al_tasks() {

$o utp ut=' ' ;if($primary=menu_primary_loc al_tasks()) {

$output .="<ol clas s=\"tabs primary\">\n". $primary."</ol>\n";

}if($s ec ondary=menu_s ec ondary_loc al_tasks()) {

$output .="<ol c las s=\"tabs secondary\">\n". $sec ondary."</ol>\n";

}r eturn$output;

}

?>

这里所做的唯一修改就是将<ul>标签改为了<o l>。

在api.drupal.org你可以找到所有的主题函数。

模板方式

如果默认是使用模板实现的那么你只需要简单得将模板源文件拷贝到主题下面然后清空主题注册表就完成了覆写。下面为s earc h-theme-form.tpl.php的一个例子。注意在这里主题钩子就是"search_theme_form"需要将连字符“-”替换为下划线“_”.

这就是你要做的。使用编辑器打开拷贝的模板对其进行修改。 内核中的所有.tp l.p hp文件都带有注释。根据注释你就可以做出具体的修改了。

注意模板可以放在主题下面的任何目录中。这样便于管理也避免了主题根目录下面的混乱。

相关页面

 为了定制模板中的变量参看自页面“预处理函数” http://drupa l.org/node/223430。 可以在子页面“核心模板和建议”Core templates and suggestions找到所有的主题模板。

将函数转化为模板

将一个主题函数转化为一个模板开始是需要一点工作的但一旦完成便很好使用。如果你和设计者一同工作那么转化为模板将会使设计者更专注于设计而不是编码。在内核中 已有了很多模板而在将来的版本中将有更多的主题函数转化为模板。第3方模块为了与内核接轨最好也使用模板。本部分是为那些还没有使用模板的主题钩子准备的。Drupal以模板的方式识别主题钩子是自动完成的。下面是完成修改所需的所有必要条件 模板名必须与主题钩子匹配。

 主题钩子中的下划线必须改为连字符。

 模板文件必须使用扩展名".tp l.p hp"。 根据主题引擎的不同扩展名会有所不同假如主题函数为theme_us er_s ignature。这里的主题钩子就是"us er_s ignature"。创建一个名为"us er-s ignature.tpl.php"的文件清空注册表就会告诉Drup al现在钩子已改为模板方式了。现在该文件中的内容将替代相应的函数。这里的难点是设置模板文件中用到的变量这可以通过预处理函数来完成。

需要注意的一些点

 可以在模板中直接放置代码但这种方式不好。所有的复杂逻辑都应该从.tp l.p hp文件中分离出来。这样使得模板文件更干净更便于管理。

 这也有安全方面的考虑。将逻辑与显示分离可以避免潜在的恶意用户来创建内容从而减小CSS(cross-site scripting)攻击的机会.当让你的设计者处理模板文价时所有的输出都应该非常干净这样设计者就不用考虑安全问题了。

 比较关于论坛的theming functions in 5和template conversions in 6。你可以使用这个作为例子来进行两种方式之间的转换。

 更多关于预处理函数的信息http://drup al.or g/no de/223430。

Drup al的主体注册表维护了主题钩子相关的缓存数据包含主题钩子和如何处理它们的信息。

对于大多数主题开发者来说都不需要直接与注册表打交道。只需要记住当添加或者删除主题函数和模板时要清空它。编辑已有的函数和模板时则不需要清空。

无忧云:洛阳/大连BGP云服务器38.4元/月,雅安物理机服务器315元/月起,香港荃湾CN2限时5折优惠

无忧云怎么样?无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点,目前商家开启了夏日清凉补贴活动,商家的机器还是非常...

美国200G美国高防服务器16G,800元

美国高防服务器提速啦专业提供美国高防服务器,美国高防服务器租用,美国抗攻击服务器,高防御美国服务器租用等。我们的海外高防服务器带给您坚不可摧的DDoS防护,保障您的业务不受攻击影响。HostEase美国高防服务器位于加州和洛杉矶数据中心,均为国内访问速度最快最稳定的美国抗攻击机房,带给您快速的访问体验。我们的高防服务器配有最高层级的DDoS防护系统,每款抗攻击服务器均拥有免费DDoS防护额度,让您...

bluehost32元/月,2核2G/20GB空间,独立ip,新一代VPS美国云主机!

bluehost怎么样?bluehost推出新一代VPS美国云主机!前几天,BlueHost也推出了对应的周年庆活动,全场海外虚拟主机月付2.95美元起,年付送免费的域名和SSL证书,通过活动进入BlueHost中文官网,购买虚拟主机、云虚拟主机和独立服务器参与限时促销。今天,云服务器网(yuntue.com)小编给大家介绍的是新一代VPS美国云主机,美国SSD云主机,2核2G/20GB空间,独立...

drupal主题为你推荐
企业邮局系统企业邮件系统用什么软件好?phpweb破解忘记phpweb网站后台用户名密码,怎么找回破解播放flashFlash动画设计与制作——第九章:导出和发布动画360公司迁至天津天津360公司?360开户哪家好?360开户费多少?360推广怎么样?360效果怎么样?360和百度相比哪个更合适?重庆网站制作重庆网站制作,哪家专业,价格最优?curl扩展大神帮忙看下centos 7.2 系统 php7.0.12的 curl 扩展怎么开启,谢谢啦瑞东集团中粮集团主要生产什么的?是国企么电子商务世界电子商务最先起源于那个国家,什么时间香港空间香港有哪些购物场所
太原域名注册 justhost singlehop 主机点评 日志分析软件 天猫双十一秒杀 阿里云代金券 一点优惠网 52测评网 softbank邮箱 umax120 免费dns解析 php服务器 wordpress中文主题 免费php空间 闪讯网 hdsky 服务器机柜 comodo hosts文件 更多