曾经使用drupal9开发过一个资讯网站,为了省事,白龙网把每个栏目的新闻发布功能,使用content-type内同一个节点来实现,同时使用分类字段list来分类显示不同的列表页的资讯内容。结果,客户发现“上一篇、下一篇”的功能可以在该节点内不同的列表之间来回切换。而客户的需求是“上一篇、下一篇”功能只能在本列表下的资讯之间切换。
解决这个需求的方法有两个,一是在content-type下为每个列表页分别配置一个内容类型,例如资讯列表1、资讯列表2、资讯列表3等等。二是使用ECK-Entity-Types模块,为每个资讯列表配置一个实体,分别发布不同的资讯内容。
在drupal9环境下,系统自带的内容类型(Content-types)可以用作数据建模。借助ECK模块自定义实体类型(ECK-Entity-Types),亦然可以实现同样的功能。
安装ECK模块之后,他会分别出现在“/admin/structure/eck”、“/admin/modules”目录下,实体绑定、字段添加、内容发布、权限设置、查阅内容等均在上述两个界面实现。
例如,新建一个“新闻中心”的实体类型,添加body等字段,并发布新闻,通过视图区块打印到前端页面。
一、实体绑定
在“/admin/structure/eck”目录下新建的实体,必须先创建并绑定实体类型,才能进行下一步操作,否则会一直提示错误。
二、字段添加
与内容类型添加字段的方法类似,进入“/structure/eck”目录,点击三角下拉按钮下的“Bundle-list”,接着在弹出的界面中点击“Manage-fields”,然后根据自己的需求,添加需要的字段类型即可。
三、内容发布
在ECK-Entity-Types实体中发布内容与Content-types发布内容不同。进入“/structure/eck”目录,直接点击“Add-content”就可以发布内容了,操作更加简单了。
四、权限设置
到这里,你会发现发布的内容在其它浏览器中是无法查阅的,系统会提示用户没有权限查看。进入“/admin/people/permissions/module/eck”目录,勾选“View-any-entities”选项,给予匿名用户访问目标实体的权限,刷新前端页面,发现匿名用户可以正常发布上一步发布的内容了。
五、查阅内容
该实体发布的内容,在该实体可以查看,在content中是查阅不到的。具体来说,进入“/structure/eck”目录,点击“Content-list”列表,即可查看已发布的内容。
至此,我们成功使用ECK-Entity-Types模块实现了实体的建立与内容的发布。