4.4 德国人写的主题教程(4)How to Make a Drupal Theme step by step (4)
http://www.drupaltutorials.de/2013/06/28/drupal-themes-teil-5/
上一节讲述的在Firebug中调试及改变页面输出只能临时性的,如果你想永远的改变你的主题,你就必须修改相对应的原始文件,如下图所示的tpl模板文件。这一节,我们将讲述和模板文件有关的知识。
做Drupal主题的人或早或晚都要接触到模板引擎的概念。首先我们来说一下什么是模板引擎。模板引擎是用来将模板中预定义的占位符替换成相应的动态内容的软件。如果你使用过微软的Word,那你一定用过一个类似的功能:邮件合并。在这个功能中就使用到了占位符,它会被用实际的值所替换。模板引擎的工作方式和这个过程非常相似。只是这里使用的占位符是模板变量。在Drupal7中默认的模板引擎是PHPTemplate。
上周末我有机会参观了中国长城,这是世界上最长的墙,一共8850公里(5,500英里)。它绵延于群山之上,利用了群山天然屏障的优势。因此,你得走想当长一段路,但是一旦登上了长城,那景色可不是一般的壮观。它英勇坚定的蛇行于地平线之上,让你觉得它像一条巨龙。
我了解到长城实际上是由不同朝代的人共同修建的,它并不是一个连续的工程。中国人早在公元前7世纪就开始建造长城,并持续建造了2000多年!
有人说,有一百多万人死于建筑长城。所以你每走一步,都无法停止想象它是怎样被建立起来的,以及有多少人曾受到牵连。我基本算是一个人在这里,所以不难想象一个明朝士兵在这里寂寞生活,等着会有什么事情发生。历史,风光,安宁 - 它只是让我说不出话来。
- 阅读更多 关于 Dries 徒步长城
- 登录或注册以发表评论
Welcome Dries to China!
We are expecting to see you in Shanghai! Our city has the best drupal community in China. Wish you a pleasant journey!
非常高兴Dries来到中国!
作为中国最活跃的Drupal社区城市 - 上海,欢迎你能够到上海来看一下看!祝旅途愉快!
Drupal Happy Hour是一次Drupaler面对面交流的机会,没有条条框框的安排,少许的啤酒,话题围绕Drupal和开源技术的放松聚会。
Drupal创始人Dries到天津参加会议,因此,我们组织了这次的特别的见面会。希望给中国的Drupal工程师们一个与Dries见面和沟通的机会。你可以在这里了解更多Dries的成就 http://buytaert.net/resume
Drupal 6 - > 8迁移的已知问题
下面列出的各种项目,可能需要特别注意当从Drupal 6迁移到Drupal 8。 节点类型 默认配置在D6在Drupal创建story和page内容类型但drupal8默认类型是article和basic page(有机器名为“页面”就像在D6)。 迁移将重现story类型但重用page类型。 从D6迁移的开发人员可能希望删除文章类型。#2236289: Migrating "story" nodes from D6 creates new content type in D8为进一步的细节。
URL别名
当url别名的语言迁移不启用新Drupal 8网站的别名将直到你启用新Drupal 8网站上的语言。
模块和主题
新的模块和主题需要启用,管理主题需要设置(如果有的话)。
配置文件类别
如果你在drupal6使用个人信息模块分组配置文件,您将需要在迁移之后手动重新创建分组。
先决条件: •友好的命令行( 没有用户界面 ) •PHP 5.4(检查也使用命令行) •git •Drush 7. x(dev)。 •Drupal 6网站(不推荐在生产运行迁移数据库) •最新版本的Drupal 8 •使模块迁移Drupal( drush en migrate_drupal) •确保Drush可以编写config目录。
没有UI,只有Drush
唯一的方法将数据迁移到Drupal8,使用Drupal迁移模块Drush 。 Drush支持的版本是Drupal8 和drupal7.x。 使用Drush迁移你需要最新的版本的drupal,所以 建议通过composer安装Drush 。 有一个UI创建( 迁移升级 ),但它仍然未完成。 这将是一个普通发布版模块,直到Drupal核心包括才算完成。
- 阅读更多 关于 执行一个Drupal 8迁移
- 登录或注册以发表评论
原文链接:Dynamic migrations (load plugins)
动态迁移(加载插件
当编写一个网站特定的迁移,目的地属性值是已知的。然而,当写一些更通用的,有可能迁移配置实体也需要写,尽管目的地属性值是不清楚的。 例如,当migrate_drupal核心模块不知道D6或D7节点。 所以它需要一些机制在php中来创建这些迁移而不是静态的YAML。
这种机制是加载插件。 当加载d6_cck_field_values:article
:迁移、存储控制器认为这是一个动态的迁移d6_cck_field_values:article
:基地迁移。它加载迁移,然后寻找一个加载(load)插件加载文章(article)。在这种情况下加载插件drupal_entity 配置流程复制源插件的基础领域的迁移。反过来,这些字段填写基于Drupal 6字段实例表和当前节点类型。 这些都是这是通过添加负载插件来实现: load:
plugin: drupal_entity
bundle_migration: d6_node_type
然后指定d6_cck_field_values:*
作为迁移到加载
- 阅读更多 关于 动态迁移
- 登录或注册以发表评论
原文链接
迁移目的地
目的地插件必须有一个属性值,比较典型的是实体entity:entity_type.
例如:
destination:
plugin: entity:block
另一个典型的例子是url_alias
插件,迁移URL别名。config
配置 插件允许创建最初的配置元素:
destination:
plugin: config
config_name: book.settings
config_name:book.settings
参考子页面关于更多的目的地插件。
- 阅读更多 关于 迁移目的地
- 登录或注册以发表评论
原文链接Constant values
常量
有时你需要一个常量。 可能会用来也许是连接插件或者一些只是国定的值。 在这种情况下,首先需要在源中定义一个常量,然后过程中的的任何地方使用它。下面的示例设置id的属性值为常量node_search:
source:
constants:
id: node_search
process:
id: constants/id
注意, 常量属性值没有什么特别的。如果包含一个constants的属性值,如果用另一个名字,例如defaults。换句话说,下面的代码示例和上面的作用相同:
source:
defaults:
id: node_search
process:
id: defaults/id
因为源中这样的定义提供的默认值是从源中每一行检索(没有深度合并)。
- 阅读更多 关于 常量
- 登录或注册以发表评论
原文链接Process plugin: get
过程插件get
通常, 获得get
插件是每个流程的开始,通常是通过速记添加到另一个插件的源属性值。
get插件有一个配置的属性值source
。该值通常是一个源属性值,当运行这个插件后,过程值将被设置为该属性的值。 即: br>
process:
bar:
plugin: get
source: foo
只会复制源foo的属性值到目标foo的属性,由于geet是默认的过程插件,因此他可以速记为这样的:
process:
bar: foo
get插件还支持源属性值的列表。 如果该列表包含一个空元素,那么将使用当前的属性值。这使得当一个源属性值为一个空字符串作为它的名称时而获得该源是不可能的。
get也支持复制目的地的属性值。
- 阅读更多 关于 过程插件get
- 登录或注册以发表评论