尝试从节点访问值以使用Swift Mailer在电子邮件模板中呈现

时间:2018-11-22 05:49:36

标签: php email drupal theming

我目前正在尝试使用swift mailer构建电子邮件html模板。我现在的问题是如何自定义模板以从节点中获取值并将其呈现在电子邮件模板中。仅从将要发送的节点中获取和打印/渲染节点值,如下面的屏幕快照所示。

enter image description here

enter image description here

enter image description here

Swift mailer具有使用{{ body }}

从所有字段输出值的默认方式

有没有一种方法可以访问字段中的值并将其呈现在模板上。类似于下面的代码可用于节点模板

{{content.field_title.value}}{{node.field_title.value}}

Swift邮件程序可以通过预处理呈现值,但我似乎无法使其正常工作。以下是正在进行的代码

  

https://www.drupal.org/node/1590184

function swiftmailer_preprocess_swiftmailer(&$variables) {
    $variables['node_title'] = $node->getTitle();
}

2 个答案:

答案 0 :(得分:2)

function swiftmailer_preprocess_swiftmailer(&$variables) {
    // Don't forget to use the Node class on top of your .module or .theme file.
    $node = Node::load(YourNodeId); // Here add your node id. If you don't want it to be hardcoded I would suggest you to create a config page for it. The other way is to put a checkbox in it and then find it here with a query.
    $variables['node_title'] = $node->getTitle();
}

在swiftmailer.html.twig中执行此操作后,您将能够像这样{{node_title}}

来渲染节点标题。

答案 1 :(得分:0)

@clestcruz,进行预处理是个不错的选择。但是您也可以为此创建服务。

创建名为foo的自定义模块。 创建所有必需的文件,然后创建foo.services.yml。 提及服务:

services:
  foo.twig.TwigExtension:
    class: Drupal\foo\XYZ
    tags:
      - {name: twig.extension}

foo/src/XYZ.php中创建服务文件

<?php
namespace Drupal\foo;
use Drupal\block\Entity\Block;
use Drupal\user\Entity\User;
use Drupal\node\Entity\Node;
use Drupal\taxonomy\Entity\Term;
use Drupal\paragraphs\Entity\Paragraph;
use Drupal\Core\Url;

/**
 * Class DefaultService.
 *
 * @package Drupal\foo
 */
class XYZ extends \Twig_Extension {

  /**
   * {@inheritdoc}
   * This function must return the name of the extension. It must be unique.
   */
  public function getName() {
    return 'product_listing_extend_display';
  }

  /**
   * In this function we can declare the extension function.
   */
  public function getFunctions() {
    return array(
      'getData' => new \Twig_Function_Method( $this, 'getData', array('is_safe' => array('html'))),
    );
  }

// Function to get tax childs by tid
  function getData($id) {
    // query for data 
   // return value
  }

}

在树枝文件中调用方法{{getData()}}。