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

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

香港服务器促销:香港华为云混合服务器、高防服务器首月半价,普通110M大带宽服务器月付799,付5用6,付10用13

博鳌云是一家以海外互联网基础业务为主的高新技术企业,运营全球高品质数据中心业务。自2008年开始为用户提供服务,距今11年,在国人商家中来说非常老牌。致力于为中国用户提供域名注册(国外接口)、免费虚拟主机、香港虚拟主机、VPS云主机和香港、台湾、马来西亚等地服务器租用服务,各类网络应用解決方案等领域的专业网络数据服务。商家支持支付宝、微信、银行转账等付款方式。目前香港有一款特价独立服务器正在促销,...

VPSMS:53元/月KVM-512MB/15G SSD/1TB/洛杉矶CN2 GIA

VPSMS最近在做两周年活动,加上双十一也不久了,商家针对美国洛杉矶CN2 GIA线路VPS主机提供月付6.8折,季付6.2折优惠码,同时活动期间充值800元送150元。这是一家由港人和国人合资开办的VPS主机商,提供基于KVM架构的VPS主机,美国洛杉矶安畅的机器,线路方面电信联通CN2 GIA,移动直连,国内访问速度不错。下面分享几款VPS主机配置信息。CPU:1core内存:512MB硬盘:...

棉花云1折起(49元), 国内BGP 美国 香港 日本

棉花云官网棉花云隶属于江西乐网科技有限公司,前身是2014年就运营的2014IDC,专注海外线路已有7年有余,是国内较早从事海外专线的互联网基础服务提供商。公司专注为用户提供低价高性能云计算产品,致力于云计算应用的易用性开发,并引导云计算在国内普及。目前公司研发以及运营云服务基础设施服务平台(IaaS),面向全球客户提供基于云计算的IT解决方案与客户服务(SaaS),拥有丰富的国内BGP、双线高防...

drupal主题为你推荐
phpcms模板phpcms模板下载后如何安装支付宝蜻蜓发布蜻蜓支付可以代理么cisco2960cisco2960接入层交换机人人视频总部基地落户重庆迁户口入重庆河南省全民健康信息平台建设指引(试行)Usercuteftp正大天地网正大光明是什么数字123456hdAPP上面带有HD是啥意思开源网店免费开源网上商城系统有哪些地址栏图标网站添加地址栏图标代码怎么写?
美国linux主机 域名备案信息查询 美国仿牌空间 hnyd 国外在线代理 web服务器的架设 183是联通还是移动 adroit linux服务器维护 如何用qq邮箱发邮件 linux使用教程 卡巴斯基免费试用版 raid10 架设邮件服务器 秒杀品 申请免费空间 腾讯网盘 阿里云邮箱怎么注册 webmin 服务器操作系统 更多