利用M2A建立个人资料 Personal Portfolio Using M2A

这个秘籍演示了如何使用 M2A 关系来动态构建内容。

解释

在个人作品集网站中,您通常至少有以下三种类型的页面,由以下内容:

  • A Resume 页面组成:
    • text 注意您的教育、工作经验和技能。
    • user 详细信息,例如您的电子邮件、电话号码、社交媒体链接等。
  • A Portfolio 页面组成:
    • text 描述工作项目。
    • images 展示工作项目。
    • video 展示工作项目。
  • An About 页面组成:
    • text 谈论您的生活、爱好或职业目标。
    • images 炫耀你的生活,突出你的个性。
    • video 这样人们就可以看到您的讲话并了解您的个人形象。
    • user 详细信息,例如您的头像(链接自“图片”)或位置。

这三个页面在结构上都是独一无二的,但由来自相同四个集合的相同基本类型的内容组成:textimagesvideodirectus_user details。 随着时间的推移,您可能还想添加更多页面。 例如:多个投资组合_(一个用于用户体验,一个用于开发,一个用于设计,等等)_它们又都是由这些构建块组成的。 对于此内容类别,tweaks 和 restructures 很常见。 简历需要更新。 投资组合随时间扩展。

对于需要上述结构灵活性类型的数据或内容,M2A 关系是一种合适的数据管理方式。 Directus 提供了一个特殊的 M2A 接口,可以快速轻松地构建数据和内容。

在这个秘籍中,我们将解释如何使用 M2A 数据模型构建上述个人投资组合。 然后在最后的提示中,讨论这种方法的优缺点,并列出其他替代方法。

The Recipe

要求
您需要对 Directus 中的数据模型权限 有基本的了解。

Create the Initial Collections

  1. 创建集合添加字段 如下:
text
- id
- text_content (a standard input field with a Markdown Interface)
videos
- id
- video_url (a standard input field)

在 Directus 中,您的 userimages 集合已经存在。 它们是内置的 系统集合directus_filesdirectus_users。 如果您想将地理坐标或社交媒体链接添加到“directus_users”,请根据需要添加字段。

Configure an M2A

现在我们需要创建一个“页面”集合,它将包含我们的 M2A 关系。

  1. 创建“页面”集合。
pages
- id
- title (a standard STRING input field, to store the page title)
- page_content (an M2A with a content builder Interface)
  1. 配置字段 pages.page_content 所以它与:
    • text
    • videos
    • directus_users
    • directus_files

至此,我们的基本数据模型配置就完成了。

  1. 根据需要为每个数据模型配置权限。 您可能希望为我们制作的集合授予公共读取权限,并为 directus_usersdirectus_files 配置自定义访问权限。

Build and Display Content

  1. Create items for your Resume, Portfolio, and About pages.

最后的提示

接下来,您需要使用 API 访问这些。 如果您尝试使用“/items/pages”,则“page_content”会返回一个 ID 数组。 相反,您需要添加一个 字段参数 来获取嵌套关系数据。

使用 M2A 构建内容时,需要牢记一些重要事项。

有必要吗?

我们食谱中的用例是一个三页的投资组合网站,总体上非常简单。

数据模型中的 M2A 涉及相当多的复杂性,但在前端也是如此,因为您必须构建前端逻辑来遍历每个页面项目,识别其组成内容类型,并将每个类型注入适当的 组件或模板。 对于三页的投资组合博客,前端开发可能比您预料的要复杂得多。 您可以改为选择 Singleton 集合,然后创建三个独立的 (但不那么复杂) 页面。

或者,如果您计划拥有越来越多由相同内容类型组成的独特页面,则使用具有更复杂前端逻辑的 M2A 最终可能比无数单例更有效。

M2A 仅适用于内容吗?

尽管 Directus M2A 界面在设计时考虑到了内容构建,但底层数据模型并不限于任何特定的数据类型。 您可以将它用于任何您想要的用途,从_库存到物联网网络等等!_