Drupal:探索 Canvas(第2部分)

发布: (2025年12月17日 GMT+8 17:38)
7 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的具体文本内容,我将按照要求将其译成简体中文并保留原始的格式、Markdown 语法以及技术术语。谢谢!

Source:

探索组件

在我之前的文章中,我已经熟悉了新模块,并且取得了一个有希望的开端。
在本篇文章中,我将探索 组件

什么是组件?

这个术语故意保持模糊,因为组件可以是 前端‑基于 的,也可以是 后端‑基于 的。
在实践中,组件仅仅是一段原子 HTML 加上其定义。

前端示例(React)

const Component = () => {
  return (
    <div>
      Test
    </div>
  );
};

export default Component;

前端开发者会立刻认出这是一个 React 组件。

后端示例(Drupal 单目录组件)

# test.component.yml
'$schema': 'https://git.drupalcode.org/project/drupal/-/raw/HEAD/core/assets/schemas/v1/metadata.schema.json'
name: test
{# test.twig #}
<div>
  Test
</div>

对于编辑者来说,两种类型在视觉上没有区别。

Props

硬编码文本或图片对编辑者没有用处,因此组件可以暴露 props,这些属性在选中组件时会显示为输入字段。

带 Props 的前端组件

const Component = ({ name }) => {
  return (
    <div>
      Test {name}
    </div>
  );
};

export default Component;

带 Props 的 Canvas 组件

带 Props 的后端组件

# text.component.yml
'$schema': 'https://git.drupalcode.org/project/drupal/-/raw/HEAD/core/assets/schemas/v1/metadata.schema.json'
name: test
props:
  type: object
  properties:
    name:
      type: string
      title: Name
{# text.twig #}
<div>
  Test {{ name }}
</div>

Slots

Slots 让编辑者 嵌套组件,从而创建更复杂的页面布局。

  • 在前端组件中,slot 变量的处理方式与 prop 变量相同;只需记得使用 camelCase
  • 在后端组件中,YAML 文件中定义的键既可以作为 prop,也可以在 Twig 模板中作为 slot 变量使用。

空 Slot 组件(视觉提示)

空 Slot 组件

当你添加一个包含 slot 的组件时,slot 会显示为紫色占位符(而普通组件使用的是蓝色占位符)。

包含组件的 Slot

带测试组件的 Slot

注意: 截图中展示的是未加样式的组件;加样式后的组件会更整洁,但视觉提示(占位符)仍会相互叠加。

操作页面上的组件

添加组件

Add component toolbar

  1. 点击左侧 Canvas 工具栏上的 加号 (+) 图标
  2. 将出现所有可用组件的列表。

Content 方块是一个可以拖拽组件的占位符,但当前 UI 只能通过以下方式添加组件:

  1. 点击组件上的三点菜单。
  2. 选择 Insert

Insert component

即使组件已经有插槽,Insert 链接也会将新组件添加到主 Content 区域,而不是插槽内部。

编辑 / 删除组件

  • 右键单击 组件以打开包含操作选项的上下文菜单。

    Component on page options

  • 或点击左侧工具栏上的 Layers 图标,以查看页面上所有组件的层级视图。

    Layers toolbar

Summary

  • Components 可以是前端(React、Vue 等)也可以是后端(Drupal 单目录)。
  • Props 为编辑者公开可编辑的字段。
  • Slots 允许嵌套组件,以构建复杂布局。
  • Canvas UI 提供工具栏图标,用于添加、插入和管理组件,并可通过右键点击和图层视图进行进一步操作。

掌握这些基础后,你就可以在新模块的编辑器中开始构建和排列组件。祝编码愉快!

Canvas layout

可以拖拽组件。当你点击组件名称旁边的三个点时,会看到与在页面上右键点击相同的菜单。

在我的示例中,已经定义了一个 块布局,页面上有页眉和页脚。

你不需要默认的块配置——这时 patterns(模式) 就派上用场了。

  • Patterns(模式) 是组件设置的快照(例如页眉或页脚)。
  • 对于重新设计,需要添加新模式,然后在所有页面上进行更改。
  • 可以在组件菜单中通过 Add pattern(添加模式) 链接来添加模式。

Add pattern

创建前端组件

后端组件的创建与 Canvas 模块分离,对我而言,这些就是不希望编辑器随意更改的组件。

拥有 Administer code components 权限的编辑者可以创建前端组件。

点击 Manage library 图标后,会看到一个类似于点击 Add 图标时显示的列表。

Manage components

最大的变化是新增了 New 下拉菜单和 Code 区域。

  • 我不太明白他们为什么把 New 做成下拉菜单,因为只能添加前端组件。
  • Code 区域可以看到已经创建但尚未链接到组件列表的组件。

New 下拉菜单中点击 Code component 链接后,会弹出一个窗口要求输入组件名称。关闭弹窗后,组件的编辑界面会显示出来。

Component editor

  • 在右上角可以看到 Review changes 按钮,用于保存组件。
  • 稍微左下方可以看到 Add to components 按钮——该按钮用于将组件添加到页面中。

在反复创建和修改组件的过程中,我注意到保存时经常会出现错误,但第二次保存时错误就不会再出现。

临时结论

虽然这些组件已经提供了很多功能,但使用一段时间后,左侧工具栏会让人感到困惑。

拥有两个相似的工具栏区域,甚至相似的弹出菜单,使我更容易点击错误的图标。我认为在导航器旁边添加一个 Manage components(管理组件)按钮并弹出相应的窗口会更清晰。

不过,这些只是初期的使用问题。

Back to Blog

相关文章

阅读更多 »

澳大利亚首选的Web技术栈

为什么在澳大利亚选择技术栈很重要 澳大利亚企业优先考虑质量、安全性和性能。网站被期望能够无缝运行...