主题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的主体注册表维护了主题钩子相关的缓存数据包含主题钩子和如何处理它们的信息。

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

Vultr再次发布充值多少送多少活动

昨天我们很多小伙伴们应该都有看到,包括有隔壁的一些博主们都有发布Vultr商家新的新用户注册福利活动。以前是有赠送100美元有效期30天的,这次改成有效期14天。早年才开始的时候有效期是60天的,这个是商家行为,主要还是吸引到我们后续的充值使用,毕竟他们的体验金赠送,在同类商家中算是比较大方的。昨天活动内容:重新调整Vultr新注册用户赠送100美元奖励金有效期14天今天早上群里的朋友告诉我,两年...

Megalayer优化带宽和VPS主机主机方案策略 15M CN2优化带宽和30M全向带宽

Megalayer 商家主营业务是以独立服务器和站群服务器的,后来也陆续的有新增香港、菲律宾数据中心的VPS主机产品。由于其线路的丰富,还是深受一些用户喜欢的,有CN2优化直连线路,有全向国际线路,以及针对欧美的国际线路。这次有看到商家也有新增美国机房的VPS主机,也有包括15M带宽CN2优化带宽以及30M带宽的全向线路。Megalayer 商家提供的美国机房VPS产品,提供的配置方案也是比较多,...

DMIT:美国cn2 gia线路vps,高性能 AMD EPYC/不限流量(Premium Unmetered),$179.99/月起

DMIT怎么样?DMIT最近动作频繁,前几天刚刚上架了日本lite版VPS,正在酝酿上线日本高级网络VPS,又差不多在同一时间推出了美国cn2 gia线路不限流量的美国云服务器,不过价格太过昂贵。丐版只有30M带宽,月付179.99美元 !!目前,美国云服务器已经有个4个套餐,分别是,Premium(cn2 gia线路)、Lite(普通直连)、Premium Secure(带高防的cn2 gia线...

drupal主题为你推荐
开启javascript如何启用JavaScript?360和搜狗搜狗浏览器和360极速浏览器你会选择哪个?outlookexpress如何开启OUTLOOK EXPRESS功能?支付宝调整还款日花呗调整还款日算延期吗?字节跳动回应TikTok易主#北京字节跳动科技有限公司#小说审核有三面么?我面试了两轮就叫我回家等消息了 要是刷下来了也该告团购程序团购系统软件有哪些?一般需要考虑那几点?站点管理有关站点的知识介绍?powerbydedecms如何去掉dedecms自带广告以及Power by dedecms无忧登陆无忧登陆怎么用??ie假死我的ie浏览器偶尔出现假死的情况 即打开浏览器时无法显示网页 点了关闭窗口也没反应,请问这是怎么回事啊
美国主机空间 域名申请 免费注册网站域名 快速域名备案 骨干网 awardspace yardvps idc评测网 最好的空间 阿里云浏览器 阿里校园 卡巴斯基破解版 上海服务器 架设邮件服务器 外贸空间 域名转入 中国联通宽带测试 广州服务器托管 mteam 沈阳idc 更多