从本主题开始,云客源码分析系列将连续讲解drupal主题相关内容,主要读者定位为drupal开发人员,以及想深入理解主题系统的前端人员,讲述系统是如何处理主题的,尽量兼顾到不会php的主题开发人员,提供许多要点知识,使他们读后更加深入的理解主题,对一些概念和用法有精确的掌握,由于这样的定位,将少讲解主题开发的入门知识,这方面的中文文章资料有很多,官方也较系统的进行了介绍,你应该先行查阅,如果有疑点或需要更加深入那么本系列将是你需要的。
这里推荐你阅读晴空写的《听晴空讲主题》系列文章,该系列还配有视频教程,晴空本人是中国为数不多的最专业的drupal主题开发者之一,作为主题开发人员对系统理解之深让云客惊讶。
由于阅读本主题时你应该已经掌握了主题基本概念,所以本主题将进行离散的讲解比较重要的知识点,也对官方文档含糊不清的地方给予清晰解释和深入剖析,后续主题将全面介绍系统与主题相关的组件和逻辑。
drupal主题系统的能力:
drupal主题系统十分灵活,你可以全站使用一套主题,用响应式设计去兼容移动端和pc端,如果响应式无法满足要求,你可以在各端分别使用不同的主题,但主题系统的灵活性远不止如此,实际上在同一个站点中你可以根据任意条件使用不同的主题,系统后台设定的只是默认值而已,比如在pc端或移动端你可以为不同语言采用不同主题,甚至不同用户采用不同模板,条件是任意的,只需要简单实现一个主题协商即可。
yaml格式:
关于yaml文件的规范请见官网http://www.yaml.org/ 网上有许多教程,不再讲述,这里仅提供一些注意事项及建议:
在扩展的info文件中,只有'type', 'core', 'name'是必须的,如果指定了'version'且全等于'VERSION',那么将采用drupal的版本号作为扩展的版本号(\Drupal::VERSION)
drupal中如果php的'yaml'扩展存在那么将使用YamlPecl::class来解码yaml文件,如果不存在那么回退使用YamlSymfony::class来解码,前者有很好的性能,但为了数据在不同环境下的一致性,在编码数据时一律使用后者。
如果你对yaml理解不深或者方便起见,可以直接使用系统提供的工具来产生yml文件以避免错误,这里是一个演示(请在控制器中执行):
$data = [
"str" => "字符串",
"st