欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

宁皓网 Drupal 8:视图(上)

Views 模块是 Drupal 非常重要的一个模块,现在已经集成到了 Drupal 核心里面。你可以使用它创建各种形式的内容列表,比如内容,用户,文件等等。

1)  创建视图
视图是 Drupal 一个非常重要的模块,现在已经集成到了 Drupal 的核心里面。也就是你不再需要单独去安装还有升级它了。视图可以想成是显示内容列表用的一个东西。你可以创建一些视图,去显示不同的内容,比如网站里的用户,文件,内容,评论,分类等等。你也可以去定制他们的显示样式,你可以用任何你想要的样式去显示你想显示的内容列表。

这里我提前创建了一些内容 .. 一些电影类型的内容 .. 还有一些人物类型的内容 ..

打开其中的一个看一下 .. 我们可以去修改一下网站处理图像的质量 .. 打开 配置 .. 在 媒体 这里 .. 找到 图像工具包 .. 默认生成的图像质量是 75% .. 这里我们修改成 100% .. 再保存一下 ..

再打开结构 ... 视图 .. 在这里,可以管理网站上的所有的视图。这里会有一些系统自带的视图 .. 这些视图一般就是来自不同的模块,它们是很好的学习视图的资源 ... 在这里我们也可以在这里创建自己想要的视图。
 

字段
2)  创建视图

打开 结构 .. 视图 .. 创建新的视图 .. 可以点击这个 添加新的视图 .. 先给视图起个名字 .. 这里我们可以先去创建一个显示电影内容用的视图 .. 输入 movie .. 这个名字是 Drupal 内部使用的 .. 点击 编辑 .. 再给它起个中文名 .. 输入 电影 .. 勾选一下 描述 .. 输入 显示电影相关的内容 ..

在下面会有一些快捷的设置 .. 点开 显示 .. 在这里需要选择一下这个视图主要显示的东西是什么 .. 默认是内容 .. 你也可以选择 文件 .. 或者 用户等等 .. 先选择这个默认的内容 ..

在它的后面,可以再设置一下内容的类型 .. 这里选择 电影 ... 然后是内容的排序标准 ..

想生成一个页面,可以勾选一下 生成一个页面 .. 或者也可以勾选一下 生成一个区块 .. 这些我们也可以在创建完视图以后再去修改 .. 直接点击 保存并编辑 ..

现在你看到的是视图的主要的配置界面 .. 看起来有点复杂,有很多选项 .. 下面我们再一块一块儿去了解一下视图的配置 ...

3) 视图的显示

每个视图里面可以包含多个显示,你也可以把显示想成是视图的类型,不同类型的显示,可以用在不同的地方 .. 刚才我们创建的视图里面,有一个 主 显示,它有点像是一个默认的显示 .. 如果视图里面不包含其它类型的显示,就会有一个主显示 ..点击 添加 .. 在这里会列出可以使用的显示的类型 ..

比如 页面,就是创建一个页面来显示内容 .. 你可以自己设置页面的地址 .. 用户访问这个地址就可以看到你设计的视图里的内容 ..

如果你想创建一个视图可以用在 Drupal 的 区块系统里面,可以选择区块 .. 这样你在区块管理里面,可以找到创建的视图区块 .. 你可以把区块,放到 Drupal 模板里面的定义的某个地方显示出来 .. 这里还有 附件 类型的显示 .. 这样你创建的这个视图可以附加到其它的视图上去显示 ..

种子 .. 这种类型的显示,可以输出 RSS 格式的内容 .. 用户可以使用一些 RSS 阅读器去订阅一下这个视图输出的内容 ..

有一些模块也会去定义自己的显示类型 .. 我们先选择一下 页面 .. 去添加一个页面类型的显示 .. 再去简单的配置一下 .. 先去修改一下这个显示的名字 .. 输入 电影页面 .. 添加一个描述 ... 显示电影列表的页面 ... 应用一下 ..

再点开 标题 .. 输入 电影 .. 应用 .. 这个标题内容会作为页面标题 ..

再给这个页面显示添加一个可以访问的路径 .. 在 页面设置 这个区域里,点开 路径 .. 输入页面的地址 .. movie .. 再应用一下 ..

这样用户就可以使用 movie 这个地址访问到这个视图里的内容了 .. 保存 ... 再点击 查看电影页面 ... 这里显示的就是 movie 这个视图里面的电影页面这个显示里的内容 .. 现在就是一个简单的电影标题的列表 ..

4) 视图里的字段

视图的主要功能就是去创建一个内容的列表,这个列表里面的每个项目都可以包含各种不同的内容,比如一个电影列表,每个项目里面可以有电影的海报,标题,演员,导演,简介等等。这些东西就是视图里的字段 ..

前面我们创建了一个电影视图,添加了一个电影页面,这个列表里的项目现在只有一个标题字段 .. 下面再去给它添加几个 .. 找到 字段 这个区域 .. 新增 ..

这里会列出所有可用的字段 .. 不同类型的内容,可用的字段可能会不太一样 ... 有时候你在视图里添加了某种关联以后,在这里可能又会出现一些新的可以使用的字段 ..

先搜索一下 海报 .. 勾选一下 .. 然后再应用 ... 又会出现一个配置字段的界面 .. 不同类型的字段,可以使用的配置也可能不太一样 .. 海报是一个图像字段,所以在这里,会有一个 图像样式 .. 点开它 .. 可以选择要使用的图像样式 .. 这里选择 小号海报 .. 这种图像样式是我们在介绍 Drupal 字段的时候自己创建的 ..

图像链接到 .. 可以选择 内容 .. 这样在点击这个海报的时候,会打开它所在的内容页面 .. 再应用一下 .. 看一下视图的预览 .. 这里除了电影内容的标题以外,还会显示一个电影海报 ..

下面再去给它添加几个字段 .. 新增 .. 先找到 body 这个字段 .. 它就是内容的正文 ..

发行日期 ..

再找到 导演 字段 .. 然后是 演员 .. 电影名 .. 最后再勾选一下 类型 .. 注意这里有好几个 类型字段 .. 我要的是给电影内容添加的电影类型这个字段 .. 看一下后面的描述,可以帮助我们确定要使用哪个字段 ..

然后点击应用 .. 这样会依次出现刚才勾选的字段的配置界面 .. 最上面会显示正在配置的是哪个字段 .. 现在是 body 这个字段 .. 打开 格式化器 .. 选择 切边的 .. 意思就是我们要截取字段内容的一部分 .. 在下面输入需要的字符数 .. 默认是 600 ,这里输入 120 .. 应用 ..

然后配置的是 发行日期 .. 日期格式 选择 年份 ... 再应用 ..

然后配置的是导演 .. 先给这个字段添加一个标签 .. 这个标签默认会显示在字段内容的上面 .. 点击 生成标签 .. 输入 导演 .. 再点开这个 多字段设置 .. 这里已经勾选了在同一行显示多个值,因为导演这人字段是一个可以引用多个内容用的字段,所以字段里的可能会有多个值 .. 如果有的话,就在同一行里面显示它们 ..

显示类型,选择 简单分隔符 .. 使用的分隔符现在是一个逗号,这里我们换成一个空格 .. 再应用 ... 现在要配置的是 演员 .. 点开 多字段设置 .. 修改一下分隔符 .. 使用一个空格 ..

又提示要配置一下 演员 这个字段 .. 同样给它一个标签 .. 生成标签 .. 输入 演员 .. 点开 多字段设置 .. 把分隔符设置成一个空格 ..

接着是电影名 .. 直接点击应用 .

最后是电影的类型 .. 也给它添加一个标签 .. 生成标签 .. 输入 类型 .. 再点开 多字段设置 .. 修改一下使用的分隔符 .. 用一个空格 / 再加上一个空格 .

再去预览一下 .. 你会看到,现在这个电影列表里面,每个项目都有很多字段组成 ... 电影的标题,海报 .. 简介 .. 发行日期 .. 相关的导演, 演员 .. 还有电影的类型 ..

这里的简介可能没有截取 .. 再去修改一下 .. 找到 body 字段 .. 点击打开 .. 在截取限制这里,重新再输入 120 .. 再应用一下 .. 最后再保存一下 ..

5) 视图字段的显示顺序

先去修改一下视图里面的字段的顺序 .. 找到 字段 这个区域 .. 点击 新增 后面的向下的三角形 .. 然后选择 Rearrange .. 重新排列 ..

这里会列出视图里的所有的字段 .. 用鼠标拖放的方式可以重新排列一下它们 .. 先是 海报 .. 然后是 标题 .. 电影名 ... 发行日期 .. 接着是 导演 .. 演员 .. 电影的类型 .. 最后是内容的正文 ..

完成以后,再应用一下 .. 你会看到,现在列表项目里的字段就会按照我们自己定义的顺序来显示了 ..

6) 覆盖视图字段的输出内容

现在我想让电影的标题,电影名,还有发行日期这几个字段的内容组合到一块儿去显示 .. 我们可以覆盖输出这几个字段其中的一个 ... 这里应该是去覆盖输出 发行日期 这个字段 .. 因为在覆盖输出的时候,只能看到这个字段之前的字段 .. 标题,电影名 .. 还有发行日期 ,这几个字段里面,发行日期是排在最后的,所以可以在这个字段里看到它前面的标题,还有电影名这两个字段 ..

点开发行日期这个字段 .. 打开 重写结果 .. 勾选一下 使用自定义文本覆盖字段输出的内容 .. 然后在这个文本框里,可以自定义一下这个字段输出的内容 .. 打开下面的 替换匹配模式 ..

这里会出现一些使用字符串表示的字段 .. 比如这个 title ,field_name .. field_release_date .. 这些就是在视图里添加的字段 ..

先复制一下 标题 ... 注意要包含 title 周围的这两组大括号 .. 粘贴到上面的文本框里 .. 再复制一下 field_name .. 粘贴到 title 的后面 .. 中间加上一个空格 .. 最后是这个 field_relase_date .. 发行日期字段的内容 ..

复制一下 .. 再粘贴到上面的文本框里 .. 中间用一个空格分隔一下 .. 然后再用一组括号包装一下这个发行日期字段的内容 ..

应用 .. 再找到视图的预览 ... 你会发现 .. 原来显示 发行日期 字段的地方,现在会用我们自定义的输出 .. 也就是它里面会有 电影的标题,电影名 ..还有一个用括号包装的发行日期 ..

现在我们就可以上面多余的电影的标题,还有电影名这两个字段的内容隐藏起来 .. 找到 标题 .. 勾选一下排除显示 .. 应用 .. 再打开 电影名 .. 勾选一下排除显示 .. 再应用一下 ..

这样在视图输出的电影列表项目里面 .. 就不会出现标题还有电影名这两个字段的内容了 .. 只会显示一个标题,电影名,还有发行日期这几个字段的组合 ..

最后我们再保存一下视图 ..

 
7) 视图字段输出的 HTML

你可以定义在视图里面的每个字段使用的 HTML 标签 .. 先去看一下 ... 查看页面 .. 然后打开浏览器的开发者工具 ... 选择 Elements .. 选中页面上的视图输出的内容 ..

这里每一排内容的周围都会用一个 div 包装一下,上面有一个默认的 css 类,名字是 views-row .. 这里其实是视图的格式控制输出的 .. 在后面我们会介绍到 ..

每行内容里面的东西就是一些字段 .. 这些字段都会有一个 div 包装 .. 上面有一个共同的 css 类,名字是 views-field .. 然后还会有一个字段特别的类 .. 前缀是 views-field 后面加上字段的机器名 ..

再打开一个字段看一下 .. 比如这个导演字段 .. 这个字段里面包含一个标签 .. 标签内容的周围有一个 span 标签 .. 上面有 views-label 还有一个 views-label 前缀,加上字段机器名的 css 类 ..

字段的内容用的是一个 div 包装 .. 上面会有 field-content 这个类 .. 里面是字段的具体的内容 ... 这些东西我们可以通过视图字段里的 样式设定 来定制 ... 包括字段使用标签,字段标签使用的标签,还有上面用的 css 类等等 ..

 
8) 自定义视图字段输出的 HTML 与 CSS 类

现在包装这个组合以后的电影标题内容用的还是一个 div 标签 .. 我想在它们周围使用一个标题标签 .. 回到这个电影页面视图 .. 找到 发行日期 这个字段 ... 我们就是在这个字段里组合了刚才你看到的电影标题 ..

定制字段的样式 .. 可以打开 样式设定 .. 这里有几个选项 .. 可以让我们定制字段的 HTML,也就是字段内容的 HTML 标签 .. .. 这里可以定制字段标签的 HTML .. 还有一个可以定制包装字段和标签的 HTML ..

选择哪一个取决于你想要的样式 .. 你用的主题可能需要字段使用特定的 HTML 结构 .. 在某些标签上,应用指定的 CSS 类 .. 你可以在这里去自定义一下 ..

这里我们勾选一下 定制包装字段和标签的 HTML .. 也就是字段内容的最外面那层包装 .. 然后再选择一种元素 .. 这里可以使用一个 H2 .. 如果你想在这个标签上面添加一些自定义的 css 类 .. 可以再勾选一下 生成一个 css 类 .. 然后再去添加自己需要的 css 类 .. 在介绍 Drupal 主题的课程里我们再回到这里看一下 ..

应用 ... 然后再保存 ..

回到这个视图页面 .. 再查看一下电影标题组合字段上的 HTML .. 现在,你会看到,用的是一个 H2 标签包装了整个字段的内容 ..

字段的内容又用了一个包装 .. 如果你不需要这个包装的话,也可以去设置一下 .. 回到视图的管理界面 .. 再打开 发行日期 .. 样式设定 .. 这次勾选一下 定制字段的 HTML .. 然后选择 无 .. 应用 .. 再保存 ..

回到前台页面 .. 刷新 ... 你会发现,现在这个字段会只用一个 h2 标签包装 .. 里面直接是字段的内容.. 没有添加多余的包装元素 .. 在这个 h2 上面用了一些默认的 css 类 .. 不需要的话也可以去掉它们 .. 回到视图 .. 打开这个字段 ..样式设定 .. 取消勾选这个 添加默认的 css 类 ..

再回到前台 .. 刷新 .. 这回这个 h2 元素上面,没有添加任何的 css 类 ..

现在我想让 导演 .. 演员 .. 还有 类型 这几个字段里面的标签跟字段内容在同一排显示 .. 这里之所以在两行显示 .. 是因为在字段内容的周围用了一个块级元素包装了一下 .. 去掉这个包装 .. 内容跟标签就会在同一排显示了 ..

回到视图 .. 先点开 导演 .. 样式设定 .. 勾选一下定制字段的 HTML .. 然后选择 无 .. 应用一下 ..

再打开 演员 .. 样式设定 .. 同样勾选一下 定制字段的 HTML .. 元素选择无 .. 应用 .. 最后再打开 类型 这个字段 .. 样式设定 .. 定制字段的 HTML .. 元素同样选择无 .. 应用 .. 再保存一下 ..

回到前台 .. 刷新 .. 现在,导演 .. 演员 .. 还有类型这几个字段的标签还有字段内容就会显示在同一行了 .. 因为我们去掉了字段内容的块级元素的包装 ..

格式与显示
9) 视图的格式

视图的格式其实就是视图的模板 .. 它决定了视图怎么样去组织显示列表里的每一行的内容 .. 现在电影页面这个视图显示里用的是 没有格式化的列表 .. 这种格式的视图会在每行内容的周围用一个 div 包装一下 .. 上面有一个 views-row 这个 css 类 ..

找到 格式 这个区域 .. 这里会显示这个视图显示正在使用的格式 .. 点击后面的设置 .. 可以配置一下这种格式 ..

这里我们可以取消 添加视图的行类 .. 然后在上面的行里面,添加一个自定义的 css 类 .. 比如用一个 item .. 如果还有其它的要添加的类,你可以使用空格分隔一下 ..

应用 .. 再到预览那里看一下 .. 现在你会看到,每行内容的包装的上面,就会使用我们自己定义的 item 这个类了 .. 有些模板可能会让你在这些列表内容的包装上添加一些特定的 css 类 ..

我们再去看一下其它的格式 .. 打开格式 .. 选择 HTML 列表 .. 应用 .. 这种格式就是使用一个无序或者有序的列表去组织显示内容 .. 列表类型 选择默认的 无序列表 .. 应用 ..

这种格式的视图输出的就是一个无序列表 .. 最外面是一个 ul 无序列表标签 .. 每行内容的会用一个 li 列表标签包装一下 ..

再去修改一下 .. 点击 配置 .. 这次选择 有序列表 .. 这种格式的跟刚才的区别就是 .. 最外面会用一个 ol 有序列表标签 .. 里面的每行内容仍然是用的 li 标签 ...

这次我们再看一下表格 .. 点开格式 .. 选择 表格 .. 应用 .. 现在这里会显示一个表格 .. 最外面是一个 table 标签 .. 里面是 thead 表头 .. 还有 tbody 主体 .. 主体部分每行内容用的是 tr 标签 .. 每个单元格用的是 td 标签 ..

再去修改一下 .. 这回选择格子 .. 应用 .. 输入列数 .. 也就是每一行内容分成几列去显示 .. 输入 3 .. 再应用一下 ..

再到预览这里看一下 .. 现在每一行内容会分成三栏显示 .. 再查看一下这种格式输出的 HTMl 结构 .. 这里你会发现 .. 每行内容会用一组 div 包装一下 .. 里面会有三个项目 ... 在这些 html 标签上面都会使用一些特定的 css 类 ..

有些模板可能需要你使用这种形式的代码结构来输出内容 .. 在以后我们可能还会回来去设置视图的格式 ..

最后我们还是把这个视图的格式换成默认的没有格式化的列表 ...

10) 视图格式显示

 

在视图的格式这里边儿,还有一个 显示 .. 现在用的是 字段 .. 意思就是列表里的每一行内容里面是用一些字段组成的 .. 在下面的 字段 这里,我们可以去添加要显示的字段 ..

我们先点开后面的 设置看一下 .. 这里有个选项有时候挺有用 . 就是这个 提供默认的包装元素 .. 默认视图会为每个字段都添加一些包装元素 .. 你可以在每个字段的设置里去定制这些元素 .. 如果你不想使用这些默认的包装 .. 可以取消这个选项 ...

先关掉 .. 这个配置界面 .. 再点开这个显示 .. 然后选择 内容 .. 应用 .. 提示选择一种模式 .. 这些就是内容的显示模式 .. 我们可以在内容类型的 管理显示 那里去配置这些模式的显示 .. 在介绍 Drupal 字段的时候,我们提到过内容的显示模式 ..

这里选择全文 .. 再应用一下 .. 在下面 字段 这个区域里面,我们就不能去选择添加自定义的字段了 .. 再去预览一下 ..

现在这个视图输出的列表里面,每个项目的显示用的就是内容在 全文 这种模式下的样式 ..

再回到这个显示 .. 改成原来的 字段 .. 再应用一下 ..

来自 https://ninghao.net/course/3178


 


普通分类: