drupal-使用hook_preprocess_field在paragraph的accordion中添加自定义数据
描述:我的accordion类型原先只有两个字段,分别是title和content。显示在页面上会默认隐藏其内容,点击“+”会显示内容。然而现在有一个新需求,就是加一个开关使编辑内容者可以选择默认“展开”或“不展开”。
1.在drupal8后台添加一个新字段
1.1 在/admin/structure/paragraphs_type/accordion/fields下加一个字段,我命名为Open,类型为Boolean。
1.2 在/admin/structure/paragraphs_type/accordion/form-display下,字段属性如下
该页面的配置对应着编辑者添加编辑时的页面结构
1.3 在/admin/structure/paragraphs_type/accordion/display下,字段属性如下
该页面的配置对应着用户可看见的页面的内容结构,这里我们不应该让用户看见新字段的内容,所以需要Disabled。
2.字段添好了,我需要在前台页面获取到隐藏字段的值并将它加到div标签中,最后效果如下所示
在one.theme中,使用hook_preprocess_field,根据命名规则,以及根据调查可知这个div标签是在paragraph.html.twig中输出的,我需要通过hook将获 取到的字段值加入到“attributes”中。所以函数命名为one_preprocess_paragraph,"one"是项目名,paragraph是和上面的paragraph.html.twig对应。这个名字是惟一的,不能随意命名。
function one_preprocess_paragraph(&$variables) {
if ($variables['paragraph']->getType() == 'accordion') {
$array = $variables['paragraph']->toArray();
if (isset($array['field_is_expanded'])) {
$variables['attributes']['data-is-expanded'] = $array['field_is_expanded'][0]['value'];
}
}
}
3.我的工作完成了,接下来就由前端根据div标签中的值来调整页面了。
drupal-使用hook_preprocess_field在paragraph的accordion中添加自定义数据的更多相关文章
- 文章翻译:ABP如何在EF core中添加数据过滤器
原文地址:https://aspnetboilerplate.com/Pages/Documents/Articles%5CHow-To%5Cadd-custom-data-filter-ef-cor ...
- 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作
CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...
- 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作(二)
CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...
- SpringMvc中的数据校验
SpringMvc中的数据校验 Hibernate校验框架中提供了很多注解的校验,如下: 注解 运行时检查 @AssertFalse 被注解的元素必须为false @AssertTrue 被注解的元素 ...
- Entity Framework 6 Recipes 2nd Edition(11-11)译 -> 在LINQ中调用数据库函数
11-11. 在LINQ中调用数据库函数 问题 相要在一个LINQ 查询中调用数据库函数. 解决方案 假设有一个任命(Appointment )实体模型,如Figure 11-11.所示, 我们想要查 ...
- ASP.NET中后台数据和前台控件的绑定
关于ASP.NET中后台数据库和前台的数据控件的绑定问题 最近一直在学习个知识点,自己创建了SQL Server数据库表,想在ASP.NET中连接数据库,并把数据库中的数据显示在前台,注意,这里的数据 ...
- SAP CRM 通过调试观察CL_CRM_BOL_ENTITY中的数据
这个(BOL里面)最重要的类值得一看. BOL中的每条记录都会在CL_CRM_BOL_ENTIT中表示.至今,我们已经写过一些事件处理器,并且我们已经直接或间接的通过这个类工作.在业务场景中,我们也许 ...
- 将Oracle数据库中的数据写入Excel
将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...
- [数据科学] 从csv, xls文件中提取数据
在python语言中,用丰富的函数库来从文件中提取数据,这篇博客讲解怎么从csv, xls文件中得到想要的数据. 点击下载数据文件http://seanlahman.com/files/databas ...
随机推荐
- github & Front-end JavaScript frameworks
github & Front-end JavaScript frameworks https://github.com/collections/front-end-javascript-fra ...
- python整数转ASCII码
# *-* coding:utf-8 *-* import binascii data = [1441465642, 251096121, -870437532, -944322827, 647240 ...
- poj 2823 二分法+单调队列
#include<stdio.h> #include<string.h> #define N 1100000 int a[N]; int fmin[N],fmax[N]; i ...
- Mutual Training for Wannafly Union #6
A =w= B QvQ C 题意:有长度为n的序列(n<=5e5),求满足条件的a,b,c,d的组数,要求满足条件:min([a,b])<=min([c,d]),a<=b<c& ...
- Ubuntu 16.04下截图工具Shutter
Ubuntu下自带截图工具Screenshot,但是有个缺点是不能对截到的图进行标注,快捷键如下: 截图的升级软件Shutter,具有标注的功能 安装: sudo apt-get install sh ...
- js二叉树,前序/中序/后序(最大最小值,排序)
function Node(data,left,right) { this.left=left this.right=right this.data=data } function Btr() { t ...
- 如何在eclipse中用maven编译
在eclipse中用maven编译的方法: 在项目中的“pom.xml”文件上点击右键,在弹出的菜单中选择“Run AS”à“Maveninstall”来编译和生成项目.如下图所示: 在编译和生成过程 ...
- Dalvik虚拟机总结
一.Dalvik虚拟机启动 在启动Zygote进程时,会启动Dalvik虚拟机,完毕以下几件事: 1. 创建了一个Dalvik虚拟机实例: 2. 载入了Java核心类及注冊其JNI方法: 3. 为主线 ...
- C/C++ Threads): Creating worker threads that will be listening to jobs and executing them concurrently when wanted
Suppose we have two workers. Each worker has an id of 0 and 1. Also suppose that we have jobs arrivi ...
- iOS-UITextView-文本输入视图的使用
#import "ViewController.h" @interface ViewController ()<UITextViewDelegate> { UIView ...