使用基于参考的模块而不是分类法模块的优点或缺点是什么?


9

我想知道如何决定使用核心分类标准模块还是实体引用模块?

我以前没有使用实体引用模块,但是在10-15个网站上使用了分类法模块(和一些相关模块)。

使用基于参考的模块而不是分类法模块的优点或缺点是什么?


最近,我开始建立一个杂志档案网站。

有很多杂志。这些杂志都有问题。每期都有文章。


这里最小(也是最深)的部分是文章

文章

  • 页码(范围):
  • 标题:
  • 作者:
  • 文章类型:
  • 关键字:
  • 杂志:
  • 问题:


问题

  • 发行数量:
  • 封面图片:
  • 日期(已发布):
  • 杂志:


杂志

  • 描述:
  • 封面图片:


在此处输入图片说明

这里,(至少)有两种方法可以实现此网站:

1.将有一个称为的内容类型article,所有其他类型(发行,杂志,作者)将为分类术语(分层)。在发行和杂志等之间会有一个等级。

2.内容类型很多:文章,期刊,杂志,作者。在创建文章时;问题,杂志和作者等均可参考。

因此,从理论上讲,这两种方法似乎非常相似。

有没有人遇到过类似的情况,请问您选择哪种方法,为什么?

Answers:


9

还有其他解决方案来解决您的问题。

现场收集

您可以使用字段收集字段收集视图模块来存储和组织内容。使用此方法,Issueand Magazine将成为Field Collection类型,IssueArticleMagazine的字段Issue。我有实现这种结构的经验。在我的情况下,要求是Library应包含书籍(带有“标题”,“出版者”和“ ...”字段),每本书包含多个卷(页数,翻译器,...),每个卷还包含不限数量的其他一些项目(例如,扫描书中某些不相同的页面)。

我使用Field Collection方法实现了这一点,这非常好。您可以轻松地创建一个链接来编辑每个字段集合的每个单独的项目,还可以按字段集合的项目进行过滤。我在“字段集合”中按值发布了“ 视图中的组项目”的答案,其中显示了如何使用“字段集合视图”

实体视图附件

也称为EVA模块。

“ Eva”是“实体视图附件”的缩写;它提供了一个Views显示插件,该插件允许将View的输出附加到任何Drupal实体的内容。节点或注释的正文,用户帐户的配置文件或分类术语的列表页面都是实体内容的示例。

您可以使用EVA仅显示特定内容的字段值,从而可以对字段的显示和格式灵活性进行令人难以置信的控制。例如,您可能希望以某种特殊方式将两个字段连接在一起。您可以将字段添加到EVA显示屏,将上下文过滤器设置为NID,添加全局:文本字段,并使用标记使用HTML格式化字段。如果要在“全局:文本”字段中一起使用它们,请不要忘记将它们显示出来。示例:您可能具有城市,州和邮政编码字段。您可以将它们组合在“视图”中的“全局:文本”字段中,以显示为“城市,邮政编码”。当您为内容类型管理显示时,将刚刚创建的EVA添加到显示中,并且无论何时显示该类型的节点,它都会将其ID传递给EVA,并且EVA将返回您选择的字段,如您所愿格式化。(资源 :EVA和实体参考用例使用方法(

这个模块是完美的,它将View作为字段附加到内容类型的节点上。我使用此模块创建了一个Album。该相册包含singer(有关每个相册的一些信息),songs并且包含File,Title,Rate和...。因此,我创建了一个EVA类型的View,并将其附加到一个节点上。因此,在每个Singer的节点页面上,我都显示了此View,该View从节点中获取了适当的信息。带实体视图参考是如何使用此模块的完美指南。

分类术语VS实体参考

我建议你阅读实体引用与分类是否存在超过期限参考使用实体引用任何益处/注意事项?,正如它说的那样,分类法最适合在以分层方式组织相似项目时使用。喜欢标签

分类法允许您使用免费标记(可以使用“ 内容分类法”模块将其禁用),从而可以即时创建新标记。修改内容框架非常容易。使用这种方法,普通的或至少一些经过身份验证的用户(不具备编程知识)可以更改此框架。分层选择模块就是这种方法的完美示例。

尽管分类法易于使用,但我自己更喜欢实体引用,但它提供了很多可能性和可伸缩性,并允许创建非常复杂的结构。在此上下文中,实体的概念不限于内容。它可以是注释,用户,分类法和...。它具有更大的可伸缩性,因此您不必担心自定义内容类型或将来对其进行修改(如Entity reference vs.分类法中所指出)。我相信实体方法比分类法更强大。

这些方法还有其他一些组合,因此无需赘述。

无论如何,我建议您完全了解实体方法及其相关模块。如果您在多个项目中使用它,尽管它很复杂,但是使用起来非常容易。不仅在您当前的需求中,而且在将来,它将成为您的非常可靠的工具


非常感谢您的详细回答。它为我提供了有关使用非分类模块的很好的见解。在使用这种解决方案之前,需要了解两点:1.分类具有自动完成功能,这些模块是否具有此功能?因为在节点添加页面上没有自动完成功能,几乎不可能创建网站。2.我可以在不使用其他模块的情况下使用核心分类法模块本身,但是您提到的解决方案需要一些额外的额外模块,并且很难知道“使用哪个其他模块会更好”。再次感谢。
herci 2015年

2
没关系。关于问题编号1,如果您使用实体模块和实体引用字段,是的,它是自动完成的。如果您使用Field Collection,则不需要自动完成,因为它没有任何关系,因此将节点及其子级封装为一个包。关于问题2,许多模块依赖于Entity模块,因此无论您使用哪种方法,都必须安装并启用此模块。此外,我认为它所提供的强大功能值得安装一些模块
M ama D

虽然我建议您不要使用“字段集合”,但带有实体引用字段的“实体”是一个很棒且非常强大的工具。结合诸如CER(对应实体引用)之类的东西,您将获得2种关系,因此,在您的情况下,文章将知道该文章属于哪个期刊和杂志,以及对该文章的了解。我应该注意,视图已经对实体关系进行了反向查找,但这更快并且带来了新的可能性。
mediaashley

1
@mediaashley获得2种方式的关系,您不需要安装CER。使用关系可以轻松实现这一目标。该drupal.stackexchange.com/questions/124893/...解释了这个
中号AMA d

2
除了简单的用例之外,我建议不要使用字段集合。在处理更复杂的需求时,您会发现,从长远来看,其他模块对字段集合的支持较弱。另一个问题是,所有用来访问和处理您习惯的数据的drupal技术都不适用于存储在字段集合中的数据。当然,仍然可以进行所有数据操作,但是实现起来相当混乱。与实体参考。
gbyte.co 2015年

8

您还可以使用其他组合,例如文章和问题是杂志的分类标准。

对此并没有真正正确或错误的答案,这取决于个人喜好,特定的项目要求等。

最好使用节点进行内容分类,并使用分类法对该内容进行分类,但是有时对于某些事物仅仅是分类还是其自身的内容可能会有些晦涩。

例如,您的文章类型和关键字字段似乎更像是分类法,但期刊和杂志确实可以任其选择。

开箱即用的功能可能会影响您的决定。例如,用于节点的附加模块比用于分类法的模块要多得多,但是对于分类法,您可以直接使用列表页面(如果需要)。可能还存在与层次结构相关的功能,使用一种解决方案或另一种解决方案可以更轻松地实现。

内容类型定义只是图片的一部分。您绝对应该充分考虑将内容呈现给用户的方式,您希望用户如何浏览内容的层次结构,该内容与网站上其他内容的关系,希望管理员如何管理此内容内容等。例如,您是否需要某种分层菜单系统,您希望人们能够去杂志或发行页面,还是仅与文章页面上可见的内容相关?您是否希望通过一次搜索列出所有3种类型的内容(如果有些是节点而有些是分类法术语,这可能就没那么重要了)。

计划所有步骤,然后查看可用的模块来帮助您实现目标。您可能会发现一种方法可以更轻松地实现所需的目标。如果不是这样,那么无论出于何种原因,您都只能选择自己认为最合适的那个。

有时,您可能会选择一种方法,然后发现一些难以满足要求的问题。如果您尽可能提前计划,则可以降低这种风险。


是的,我您说过可能还有其他组合。我将尝试基于参考的模块,因为我已经在许多项目中使用了基于分类法的解决方案。我将分享此案例的结果。谢谢。
herci 2015年

5

将分类术语用于“杂志”之类的另一考虑是,您将失去对这些项目的修改和注释之类的功能。可以使用诸如分类标准修订版之类的模块添加授予的修订版,但是该模块的安装基数非常低。就个人而言,我相信核心在此基础上对节点进行修订处理。

我可以想到至少有一次,由于需求的变化,在项目上线后不得不将分类学术语更改为节点,这涉及相当数量的重组和迁移。

您可能会发现,如果您确实转用其他实体类型(例如,带有entity_reference的节点),则所做的更改不会有任何麻烦,因为一切工作方式都大致相同,但是它将为您带来更大的灵活性。


谢谢,修订部分是一个很好的观点。正如您所说的那样,很难从分类法迁移到节点。我很可能会使用基于节点+实体引用的解决方案。再次感谢您的回答。
herci 2015年

3

我不会说这是最准确的答案,但这是我的想法。我将举例说明。

我通常使用分类法根据抽象对节点进行分类。例如,新闻可以分为体育,政治等。

但是当我想要像杂志这样的参考书时,我正在考虑未来。考虑何时要帮助用户决定选择哪篇文章。杂志排名(可能是影响因素)是可能的。或者,也许我想联系那本杂志。在这种情况下,如果它是节点或实体,那么术语将无济于事。

另一方面,您必须自己做一些事情。例如,单击一个分类术语将导致您进入一个页面,其中包含该术语的分类节点。因此,现在需要一个视图和一个上下文过滤器,等等。


3

我确定有人问我为什么要远离田野收藏,但评论似乎已被删除。无论哪种方式我的2美分:

分类法应用于分类和分类。不适用于内容关系。通过分类术语链接2个内容,您使用的是3个实体,而您只需要2个。

以我的经验,虽然分类法现在可以使用,但它们不是完全成熟的实体,因此不应用作“内容”。

在这种特殊情况下,如果您的杂志有内容(内容描述,订购细节等)或自己的“页面”,则它应该是内容类型,因为它是内容。

问题有点模棱两可,但是您可能有一个概述等等,所以它们可能有一个页面,并且也很可能满足。因此是另一种内容类型。

文章显然是内容类型。

为此,您可以使用Entity Reference链接这些内容,但是可以做得更好。

与@Drupalist建议使用“字段集合”的方式相同,您可以使用内联实体形式(我认为是“实体参考”的一部分)。字段集合是这些旧模块之一,其中的一个很好的主意(实施效果不佳)与其他模块存在很多冲突。虽然它们现在是实体,但是它们仍然存在问题,对于像作者等的东西,最好使用完全成熟的实体(甚至是内容类型)。

内联实体表单使您可以在要引用的实体内部创建和编辑引用的实体...因此,可以从文章内部创建/编辑作者,或者仅引用已经创建的实体。

加上CER,您将自动从作者那里获得参考,以回到文章,从文章回到期刊,再到杂志,或您的发展方向。这在视图的执行方式上具有优势,但也使您可以在“作者”页面上显示文章列表,并在文章页面上显示作者信息,而这些视图都完全没有视图。

完整地回到分类法,然后您将用它们来标记带有“钓鱼”,“汽车”,“计算机”等/诸如此类的文章等,这样您就可以找到任何一期,杂志,文章或具有有关该标签的内容/文字的作者。

试图使它简短,所以希望它会有所帮助并且有意义。我已经在数十个站点上完成了此操作。全球体育赛事,旅游/节假日预订网站,国际广播公司,饮料,慈善机构等。功能强大,功能强大,可满足您的意外需求。


感谢您的回答。这真的很有意义,阅读经验对我来说非常重要。
herci 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.