Drupal 块标题跨越每个单词



希望在块标题中的每个单词周围添加一个span标签。我需要让标题中的最后两个单词是更大的字体,并且是不同的颜色。

function MYTHEME_preprocess_block(&$variables) {
  $block = $variables['block'];
  if ($block->subject) {
    $words = explode(' ', $block->subject);
      $words[0] = '<span>' . $words[0] . '</span>';
      $words[0] = '<span>' . $words[0] . '</span>';
      $words[1] = '<span>' . $words[1] . '</span>';
      $words[2] = '<span>' . $words[2] . '</span>';
      $words[3] = '<span>' . $words[3] . '</span>';
      $words[4] = '<span>' . $words[4] . '</span>';
    $block->subject = implode(' ', $words);
  }
}

在模板中想通了.php对于我的问题,但是使用循环可能有一个更漂亮的实现。

使用循环来回答ThroneDigital的答案:

$newWords = array();
foreach(explode(' ', $block->subject) as $word) {
    $newWords[] = '<span>' . $word . '</span>';
}
$block->subject = implode(' ', $newWords);

你也可以使用 array_map() 函数,但这需要你创建一个新函数,对于这么小的文本来说,这是不值得的。

最新更新