希望在块标题中的每个单词周围添加一个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() 函数,但这需要你创建一个新函数,对于这么小的文本来说,这是不值得的。