我使用PHP代码格式在块中添加了一些自定义代码,以在特定页面上显示该块。我已经检查了Devel PHP页面上所有正常工作但内容没有在页面上显示的内容。下面的代码获取目标节点的字段值。
value
希望这澄清了这个问题。 感谢
答案 0 :(得分:0)
你确定它在Devel中有效吗?我刚刚尝试执行你的代码,这一行:
$body = $dest_node->get('body')->getValue();
返回数组。
尝试使用此代码:
$body = $dest_node->body->value;
答案 1 :(得分:0)
首先,您的第一个代码块(获取当前节点)可以只用一行代替:
$node = \Drupal::service('current_route_match')->getParameter('node');
可以通过以下方式更改整个块:
if ($node = \Drupal::service('current_route_match')->getParameter('node')) {
print $node->body->value;
}
P.S。使用PHP文本过滤器绝对是一个坏主意。您可以轻松编写自己的自定义模块,提供所需的块。最简单的块插件需要几行代码:
/**
* @file
* Contains \Drupal\my_module\Plugin\Block\MyBlock.
*/
namespace Drupal\my_module\Plugin\Block;
use Drupal\Core\Block\BlockBase;
/**
* Provides my super block.
*
* @Block(
* id = "my_module_block",
* admin_label = @Translation("My Block"),
* category = @Translation("My Module"),
* )
*/
class MyBlock extends BlockBase{
/**
* Builds and returns the renderable array for this block plugin.
*
* @return array
* A renderable array representing the content of the block.
*
* @see \Drupal\block\BlockViewBuilder
*/
public function build() {
if ($node = \Drupal::service('current_route_match')->getParameter('node')) {
return [ '#markup' => $node->body->value ];
}
}
}
此文件MyBlock.php
必须放在名为/src/Plugin/Block/
的自定义模块中的my_module
目录中。