进阶篇45. Drupal中的排版4

区块

区块通常是被放置在区域中的,然后在page模板中通过打印区域来渲染区块。相关的方法在前面几节中讲区域和模板文件的时候已经讲过了。作为比区域更小的单元,如果在”区块布局“页面,移动或者增减区块,自然就会影响网页的排版。当然这种改动所带来的变化同时还受到区域和模板文件的影响。事实上,大部分的情况下,页面的布局都是由区域、区块、管理显示、模板和CSS共同作用的结果。

区域中可以包含一个或多个区块。打印一个区域的时候,就会把这个区域中所有的区块都打印出来(除非有别的逻辑判断阻止区块被打印出来)。

你还可以参考《进阶篇7. 实践:首页模板的制作3——转换2》中的方法来直接打印某个区块,只是在Drupal中有太多的区块,情况比较复杂,如果出现了问题,还要仔细阅读相对应的官网文档。

在Drupal8中,区块有一些重大的改进,其中之一就是几乎所有的东西都是区块。这样做是为了方便themer能容易的把所有的东西都打印到页面上。比如在Drupal7中,导航菜单是区块,但是网站名称和网站logo就不是区块。但是在Drupal8中,你可以找到一个”Site branding“区块,用这个区块来控制网站名称和网站logo是否显示。

另一个重要的改进是可以自定义区块类型。在以前的版本中,区块只有一个标题和一个body。而在Drupal8中,你可以自定义一个区块类型,然后给它添加不同的字段。

d8 custom block type

你还可以控制是否打印区块的标题。

blcok title Display

在后台页面”自定义区块库“中有一个”block types“的选项卡(/admin/structure/block/block-content/types),在这里你可以看到一个默认的区块类型”basic block“,你可以点击”添加自定义区块类型“来创建新的区块类型。值得注意的是,在创建了新的区块类型之后,还要创建对应的区块,然后把区块放到区域中,才会在页面上显示出来——习惯了Drupal7的人在初次尝试Drupal8区块的时候,总是会遇到这样的问题。

第三个重要改进是在Drupal8中,同一个区块可以被重复使用,放在不同的区域中。而在Drupal7中,想要在不同的位置放两个相同的区块,就必须先创建两个相同的区块。下图中,你可以看到help区块被使用了2次,被放置在两个不同的区域中。

drupal d8 block multiple regions

以上这些改进使得Drupal8中的区块作用更大,使用区块做出来的页面效果更丰富。

Block Visibility Groups模块,可以让网站管理员为区块配置更复杂的显示规则。从而实现Panels模块的一些功能,但是却不像Panels那样复杂而且庞大。

d8-drupal-block-visibility-group

Block field模块能让你把区块当做一个字段来使用,将其添加到某个内容类型上。这样你也可以在打印节点字段的时候打印一个区块。

本书共96小节:

评论 (写第一个评论)