我正在尝试创建一个基于共享分类法术语的反播放内容的视图。
更具体地说,我有两种内容类型:
这些内容具有相同的词汇表“类别”。实际上,内容类型的“提供”和“需求”的“类别”字段引用的词汇(分类法)与术语相同:
每个用户可以通过2种不同的表单来定义他们的报价和需求。
简单地说,让我们以3个用户为例,他们创建了他们的报价,并且需要使用这个表单。下面是一个具体例子的表格:

==>案例1:当前用户(登录用户)=用户1
假设我是用户1(当前用户)。视图页必须向我说明其他用户(用户2,用户3)的内容“需要”的列表,这些内容具有与我的内容“提供”的“类别”字段相等的“类别”字段的特点。
换言之:
1)我的内容“提议”是“提供1”和“提供2”,包含字段类别(“电子”、“科学”)。
2)其他用户的“需要”内容为“需要2”、“需要3”、“需要4”、“需要5”和“需要6”。
3)比较我的内容“提供”和其他用户的内容“需求”之间的字段类别:
4)这意味着视图页应显示以下需求清单:
换句话说,提供1和提供2(这是我的报价)匹配需要3,需要5和需要6(这是我的报价所涵盖的其他用户的需要)。这是因为他们有相同的类别“电子”和“科学”。
==>案例2:当前用户=用户2
使用相同的逻辑,如果当前用户是用户2,视图页将取消以下需求列表:
==>案例3:当前用户=用户3
对于用户3,以下需求列表:
。
发布于 2019-04-15 00:43:43
这种类型的匹配(列表分类法兄弟姐妹)通常是通过Has Taxonomy term ID上下文过滤器完成的,但是您的情况更间接一些。
您没有在其他节点页面上显示相关内容。您希望在用户页面上列出一些内容,但列出的内容与用户之间的匹配没有完成(因为您没有对用户进行分类法),这将进一步删除,您将通过用户“桥接”将内容匹配到其他内容。
您需要使用“实体引用”的方式来实现所有必要的匹配和上下文过滤。
首先,我们列出用户提供的节点,因为它们给出了上下文,它们告诉我们要查找哪些类别。一旦我们有了视图,就需要那些与那些提供的字段值相同的节点,我们还过滤掉了用户的需求,以防他们有需要,因为他们只想看到其他人的匹配需求。
Path更改为user/%user/related-needsTaxonomy term referenced from field_category类别中添加Relationship Content,您可以要求它,因为它们都将被填充Content using field_category类别中添加一个新的关系Taxonomy term。此关系自动使用第一个关系。这就是从所有提供节点类别到系统上使用相同类别的所有节点进行匹配的地方。此时,可以使用Title字段显示“提供”节点。您可以保持这种方式只是为了测试,但该字段不是我们的目标,因为我们希望看到与报价相关的需求列表。或者如果您不需要它:按照以下步骤修改它:Title字段并使其使用第二个关系(这将是唯一可用的关系)。这将显示与同一视图行中的节点共享相同类别分类的节点。从现在开始,对于添加的每个字段,如果不使用关系,它将显示提供节点数据,如果使用第二个关系,则将显示来自与该行中的提供节点共享相同类别的节点的数据。这包括我们所追求的需求节点。Authored by并进行配置: 不使用relationship When the filter value is NOT available,提供来自路由的默认value用户ID,从路由context When the filter value IS available or a default is provided重写title Needs matching user {{ arguments.uid }} Offerings (在Replacement patterns下检查您的参数令牌)指定验证criteria用户ID。Authored by并对其进行配置: Relationship field_category (第二个) When the filter value is NOT available从URL 2 When the filter value IS available or a default is provided指定验证criteria用户ID More中提供默认value原始值,因为显示这些信息没有意义,因此上下文过滤器排除了当前查看用户编写的需要节点。如果您的用户永远不会需要与他们的提供节点共享相同类别的节点,那么这个步骤就没有必要了。Entity ID更改为Target_id。确保删除了所有排序条件,因为它会干扰聚合。访问用户配置文件页面并找到选项卡,并检查结果是否与您预期的一样。这似乎是一个复杂的过程,但它是有意义的,一旦你了解在每一步正在发生的事情。
https://drupal.stackexchange.com/questions/244168
复制相似问题