通过节点字段值以在块中查看过滤器 -- 8 领域 和 views 领域 和 google-maps 领域 drupal 相关 的问题

Pass node field value to view filter in a block


4
vote

问题

中文

背景

对于节点类型文章我想显示从名为 sted (位置)的内容类型生成的地图标记的块视图。对于内容类型文章我已经创建了一个名为 kartreferanse (map参考)的实体参考字段(允许的多个值),在那里您可以选择所删除的多个节点(地方)。到现在为止还挺好。我还在一个块中展示了一个块,它显示了使用地理位置 - commonmap的所有内容类型(地点)的标记。现在我想将参考字段传递给视图,以仅显示当前节点的字段 kartreferanse (地图参考)中挑选的位置。我尝试使用上下文过滤器(field_kartreferanse:content)内容:id ,没有运气,和/或尝试使用 field_kartreferanse:content 在视图中构建关系。

问题

如何将当前节点(文章)的ID传递给视图(在块中),并使用文章中的实体参考字段在地图块视图中显示正确的节点ID? 我还必须为此进行一些过滤标准吗? (field_kartreferanse:content)InnHold:ID(= [Content:nid]) (后来我将不得不在会讲多种语言的网站上工作。)

在此处输入图像描述

(Drupal 8,本地安装/ MAMP,Geo Locationfield,views 8.1.10)

英文原文

Background

For the node type article I want to display a block view of map markers generated from a content type called sted (places). For the content type article I have made a entity reference field (multiple values allowed) called kartreferanse (map reference) where you can pick multiple nodes of the type sted (places). So far so good. I have also made a view in a block that displays markers for all the content types sted (places) using a Geolocation - CommonMap. Now I want to pass the reference field to the view to show only the places picked in the field kartreferanse (map reference) for the current node. I have tried using contextual filters (field_kartreferanse: Content) Content: ID with no luck, and/or tried building a relationship using field_kartreferanse: Content in the view.

The question

How can i pass the ID of the current node (article) to the view (in a block) and use the entity reference field in the article to show right node IDs in the map block view? Do I also have to make some filter-criteria for this to work? (field_kartreferanse: Content) Innhold: ID (= [Content: Nid]) (Later I will have to make this view work in a multilingual site.)

enter image description here

(Drupal 8, local install / mamp, geo locationfield, views 8.1.10)

        
 
 

回答列表

7
 
vote
vote
最佳答案
 

在块中使用视图的最简单方法(或使用构建阵列的任何东西)是渲染元素:

  $node = Drupal::routeMatch()->getParameter('node');  $current_nid = $node->id();  $view_arguments = [$current_nid];   $build['news'] = [    '#type' => 'view',    '#name' => 'myviewname',    '#display_id' => 'block_1',    '#arguments' => $view_arguments,    '#weight' => 30,  ];  return $build;   

传递的第一个参数将用作您的内容ID。

如果您想通过UI完成所有,您可以设置上下文过滤器以从内容ID拉动。

设置视图上下文过滤器以拉入内容ID

然后,如果您根据视图放置一个块,它将从当前节点中拉入。

通过cms

 

The easiest way to use a view in a block (or anything that uses a build array) is as a render element:

$node = \Drupal::routeMatch()->getParameter('node');  $current_nid = $node->id();  $view_arguments = [$current_nid];   $build['news'] = [    '#type' => 'view',    '#name' => 'myviewname',    '#display_id' => 'block_1',    '#arguments' => $view_arguments,    '#weight' => 30,  ];  return $build; 

The first argument passed in will be used as your content ID.

If you want to do it all through the UI, you set your contextual filter to pull from the content id.

set views contextual filter to pull in content id

then if you place a block based on the view, it will pull in from the current node.

placing block version of view through CMS

 
 
         
         
6
 
vote

最后我做了。

首先您对项目进行内容类型(在本例中 SED / PLACE )。 然后,您可以进行或编辑要显示相关项目的内容类型(在本例中文章)。对于您添加参考字段的文章。 Type of item to reference content 以及参考的内容类型是您的项目内容类型。 (我为该字段选择了无限的值)。

创建一个视图,显示块中您的项目类型的内容,然后选择所需的样式(例如网格,未格式化的列表,自定义样式......) 。视图的预览现在显示所有物品。编辑其中一个文章,以便它引用一个/某些项目(并非所有项目)。添加要显示的视图块以显示文章

编辑视图以仅显示相关项目:

(高级)关系添加: Content using field_your_refernce_field - (Relate each Content with a field_your_refernce_field set to the content.)

(高级)上下文过滤器添加: function mymodule_menu() { $items['custom_files/%mymodule_filename'] = array( 'page callback' => 'mymodule_filedownload', 'page arguments' => array(1), 'delivery callback' => 'mymodule_file_delivery', ); } 0 。编辑上下文过滤器(内容ID) function mymodule_menu() { $items['custom_files/%mymodule_filename'] = array( 'page callback' => 'mymodule_filedownload', 'page arguments' => array(1), 'delivery callback' => 'mymodule_file_delivery', ); } 1 function mymodule_menu() { $items['custom_files/%mymodule_filename'] = array( 'page callback' => 'mymodule_filedownload', 'page arguments' => array(1), 'delivery callback' => 'mymodule_file_delivery', ); } 2 function mymodule_menu() { $items['custom_files/%mymodule_filename'] = array( 'page callback' => 'mymodule_filedownload', 'page arguments' => array(1), 'delivery callback' => 'mymodule_file_delivery', ); } 3 和(上面)"关系:" 选择 function mymodule_menu() { $items['custom_files/%mymodule_filename'] = array( 'page callback' => 'mymodule_filedownload', 'page arguments' => array(1), 'delivery callback' => 'mymodule_file_delivery', ); } 4 < / p>

(对于视图预览,将您的测试物品的ID添加到 998876615 以查看结果。)

在此处输入图像说明

 

Finally i made it.

First you make a content type for the items (in this case sted / place). Then you make or edit the content type where the relevant items is going to be displayed (in this case article). For the articles you add a reference field. The Type of item to reference is content and the content type to reference is your items content type. (I chose unlimited values for the field).

Create a view that shows content of the type your items in a block and choose the styling you want (e.g. grid, unformatted list, custom style...). The preview of the view now show all your items. Edit one of the articles so that it reference one/some of the items (not all). Add the view block to be displayed with the articles.

Edit the view to show only the relevant items:

(advanced) Relationships add: Content using field_your_refernce_field - (Relate each Content with a field_your_refernce_field set to the content.).

(advanced) Contextual filters add: CONTENT ID. Edit the Contextual filter (CONTENT ID) When the filter value is NOT available Provide default value Content ID from URL and (above) "Relationship:" choose field_your_refernce_field

(For the view preview add the ID of your test-article into the Preview with contextual filters: to see the result.)

enter image description here

 
 

相关问题

1  模块开发的标准方法是什么?  ( What is standard approach to module development ) 
我正在使用模块来创建我需要的内容类型和视图。 我在admin中准备内容类型,然后使用导出以导出配置(即 views.view.my_view_name.yml 等)。 然后我将相关配置复制到 mymodule/config/install 目录。 我安装了模块,它添加了内容类型。 现在我必须更新内容类型的...

2  获取自定义内容类型的选择字段中的可用选项列表  ( Get list of available options in a select field of custom content type ) 
我创建了一种称为"幻灯片" 的自定义内容类型,该类型具有一个名为'field_category'的自定义选择字段。我希望能够将"field_category" 的可用选项加载到块形式的选择字段中。 目前正在尝试遵循答案的说明这里,但我仍然有困难。 我抓住了内容类型定义,如此 $definitions = Dru...

2  如何将变量记录到TXT文件?  ( How can i log variables to a txt file ) 
在drupal 7中,我使用devel的drupal_debug()或其别名dd()在网站的临时目录中将变量记录到drupal_debug.txt。 在Drupal 8版本的Devel此功能已消失。它似乎被 develdumpermanagerInterface 但对我来说不清楚它是如何使用的。 如何将变量记录到D...

5  没有ajax从模态内部初始化  ( No ajax gets initialised from inside the modal ) 
我有一堆在模态内部打开的形式,以便用户未被重定向页面。然后我在表单中的表单项目上有几个AJAX呼叫。它们都在页面中使用表格而不是模态时工作,但是当在模态时,它只会获得AJAX错误。 最简单的ajax功能如下: function hook_form_alter(&$form, $form_state, $form_...

1  将URL重写为路由URL  ( Rewrite url to routing url ) 
我已经创建了像这样的路由URL login.compnay_login_form: path: '/u/{company_name}/login' defaults: _controller: 'DrupalloginControllerLoginController::login_form' ...

3  如何简化注册过程  ( How may i simplify the registration process ) 
我尝试使用 rng 允许学生用户进行公司访谈的注册人(事件) 。我在我的活动中设置了一个看法,让学生注册面试。 似乎有点复杂,因为他们必须单击一个链接(寄存器)到一个页面,在那里他们在选择身份下单击创建按钮,其中只有一个强制性的"我的帐户" 收音机? 与RNG有更好的方法,或者可以使用RNG或更合适的模块来做,我确...

2  如何更新已安装的功能?  ( How do i update an installed feature ) 
如果我在不同的站点中使用Drupal 8中的模块功能,请在不同的站点中安装它们。当有更改并再次导出时,如果我替换目的地站点中的文件,我如何更新已安装的功能?我找不到UI的任何地方来做。 我不能使用毛发。 ...

-1  填写表格后的活动用户帐户  ( Active user account after fill form ) 
嗨,我所有的客户想要 不要立即激活用户帐户 在提交表单的供应商或客户端后,向管理员发送电子邮件通知他们 发送电子邮件至供应商/客户端以确认注册。 在Drupal 8 ...

3  每个语言的用户角色权限  ( User role permissions per language ) 
drupal 8支持核心中的多语言(I18n)。我想知道,是否有可能限制用户只能为一个特定语言添加/编辑内容? ...

3  如何在分类学术语页上展示儿童?  ( How to display children on the taxonomy term page ) 
我认为我的问题很简单,但我不设法在互联网上找到解决方案(我找到了Drupal 7的解决方案,但他们不适用于Drupal 8)。 我有一个分类,如: 水果 红色水果 草莓 覆盆子 黑色水果 蔬菜 在Drupal 8中使用视图,使用预配置的分​​类学期,我希望在我点击父级时,它会显示这些儿童术语中的所有子项和...

1  翻译与视图中不可翻译的字段弄乱  ( Translation mess up with fields which are not translatable used in views ) 
设置: 内容类型新闻与字段 身体(可翻译) 日期(节点旁边的另一日期字段 - 可翻译日期 - 可翻译) 新闻类型(列表字段 - 不可翻译,新闻应该是每种语言的相同类型) 用过滤器查看: 已发布:是 内容类型:新闻 内容语言:目前激活的界面语言 字段"新闻类型" - &gt;暴露于用户 项目中的默认语言是德语...

1  在要需要的实体表单上设置字段  ( Setting a field on an entity form to be required ) 
我在内容实体上有一个多值实体参考字段,我使用延伸延伸FormBase的ContententityForm的自定义表单类来显示,该类别扩展了EntityForm。 我想设置要需要的字段:使用此表单时,必须选择至少一个实体以引用。然而,我不想使这个实体级别约束,因为在所有情况下都不是绝对需要。 在表单中,更改钩子(以及我...

1  块的动态重量  ( Dynamic weight for blocks ) 
我想改变侧边栏中的块权重,所以块位置是每个请求的更改。 有没有办法来做? ...

6  当添加或更新的某些包的节点时,如何在块上清除缓存?  ( How do you clear cache on a block when node of certain bundle added or updated ) 
如果要在更新任何节点时清除渲染数组上的缓存,则可以添加为cache_tag,"node_list" : '#cache' => [ 'tags' => ['node_list'] ], 但是当仅添加或更新某个捆绑的节点时,没有办法执行此操作。 如果您有一个块,例如,当添加或更新带有捆绑"文章...

2  d8迁移:可以在目标插件中默认捆绑包是动态的吗?  ( D8 migration can default bundle in destination plugin be dynamic ) 
我的目标是通过现有的D6内容类型('mini'),并根据其当前的D6 URL别名('课程'或"页面" )迁移到两个特定的D8内容类型中的一个,并且在其中别名落在层次结构中。 我已成功写入一个简单的源插件,它将别名添加到RowSource中。 如何控制目标插件,以便我可以迁移到相应的捆绑包中 - 无论是"页面" 或"...

0  如何覆盖视图领域?  ( How do i override the view field ) 
我想覆盖分类学术语视图视图-ceive.html.twig调整分类学术语内容列表。 我似乎无法找到正确的覆盖是什么。我的调试建议并不建议任何东西。 我已经尝试过: views-view-fields--taxonomy-term--%.html.twig views-view-fields--taxonomy-t...

0  Infinit循环当我提交表单并使用附加参数重定向到此表格  ( Infinit loop when i submit a form and redirect to this form with an additionnal ) 
我创建了一种形式。提交表单时,我希望重定向到表单页面并传递另一个参数。 我这样做: public function buildForm(array $form, FormStateInterface $form_state, $results = null) { if ($results) { cu...

0  日期时间格式:10月未正确编写德语  ( Date time formats october not correctly written in german ) 
我在drupal管理(admin / config / date-time)中创建了一个时间格式,其中包含en / de以下设置: DE: d. F Y -> 05. October 2016 EN: dS F Y -> 05th October 2016 问题是"10月" 用德语写的"Oktober" (...

1  HTML包装器未添加到视图行  ( Html wrapper not added to views row ) 
在Drupal8站点中,我有显示博客内容创建了一个枝条文件的视图,并用一些HTML标记包裹以主题博客页面。考虑一页我有10个内容。在Twig中的某些内容/行HTML包装器的特定间隔不添加,所以特定内容设计中断。我找不到这个问题的原因。请帮助解决。 注意:启用rannish缓存。 实际内容。 <div cl...

1  使用自定义模块处理缓存的正确方法是什么?  ( What is the correct way to handle caching with custom modules ) 
我在Drupal 8中创建自定义模块。我创建了一个具有一些自定义数据库表的模块。其中一个表,"mymodule_tickets" 通过我在模块中创建的管理表单填充。 在网站的公共边,我有另一个自定义页面设置('/ booking'),它显示包含可用的"票" 的表单。对于大部分,这真的很好,但我很难理解缓存。 '/ b...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.