Drupal 8创建可渲染链接并添加Class Nofollow属性

主题:
作者:anxin
日期:2017-07-06
分享:

Drupal 8 创建一个可渲染链接的方式有两种:

  1. 使用Drupal 8 Link对象创建链接
  2. 直接创建可渲染的Link数组

首先创建一个Link对象,然后把 Link 对象转换为 Drupal 8 可渲染数组

1)、在 Drupal 8 THEMENAME.theme 文件相应的 preprocess 函数中添加代码,同时为数组添加 nofollow 属性:

use Drupal\Core\Url;
use Drupal\Core\Link;

function THEMENAME_preprocess_node($variables) {

    $url = Url::fromRoute(
        'entity.node.edit_form',
        ['node' => 1],
        ['attributes' => [
            'class' => 'node-edit',
            'rel' => 'nofollow',
        ]]
    );
    $link = Link::fromTextAndUrl(t('Edit'), $url);
    $link = $link->toRenderable();
    $variables['edit_node'] = $link;
}

代码解释:

1、使用Url类的静态方法 fromRoute()创建一个url,在创建url时提供参数:route,节点值,属性值。

2、使用Link类的fromTextAndUrl()静态方法创建一个链接对象,在创建链接时提供参数:链接的提示标题(title属性),url对象。

3、使用link对象的方法toRenderable(),把链接转换为 Drupal 8可渲染的数组。

2)、在 Drupal 8 模板文件中输出变量

<# node.html.twig #>

{{ edit_node }}

在 Drupal 8 中直接创建一个可渲染的link数组,同时为链接添加 nofollow 属性

$url = Url::fromRoute('entity.node.edit_form', array('node' => NID));
$link = [
    '#type' => 'link',
    '#url' => $url,
    '#title' => t('Edit'),
    '#options' => [
        'attributes' => [
            'rel' => 'nofollow',
        ],
    ]
];
$variables['edit_node'] = $link;

link数组必须的两个属性:#type#url。#url属性是一个 Drupal 8 Url类的对象。其中 #title,#options 属性是课选的。

本文链接:https://www.yuzhi100.com/article/drupal-8-chuangjian-lianjie-tianjia-shuxing

本文版权归知站所有,未经站长同意不得转载,谢谢尊重作者劳动成果!

作者:anxin