在版型中寫 BLOCK PHP

论坛: 

總有很多原因讓你不喜歡在 Drupal Block 中編寫 PHP 代碼。那如何是好?當然可以自建一個模組處理。但如果對模組認識不多,其實也可以透過版型來解決的。不同方法各有優點,自我按情況決定吧。

透過版型修改 BLOCK 的 PHP 內容跟寫版型是完全沒有分別的,看看以下示範代碼:

首先按一般方式建立一個 BLOCK,然後掛在喜歡的區域中,再編寫『版型下的 block.tpl.php』

<?php print $block->content // 原本的 BLOCK 內容 ?>

<?php print ' BLOCK ID:' . $block->bid . ''; // 取得 BLCOK ID,給下面使用 ?>

<?php if($block->bid == '10'): // 判斷是否顯示 ?>

<?php print '改變由這裏開始,編寫您自定的 PHP 代碼'; ?>

<?php endif; ?>

執行效果:

PHP 代碼簡潔到沒法再解釋。

如果只有一個 BLOCK,可以依 Drupal 版型規則建一個獨立 .tpl 檔案處理,這更可省略判斷是否顯示的代碼。我們可以建立 『block-block-1.tpl.php 』,然後可以任意修改。

值得注意的是:這裏的 "1" 跟上面例子的是有分別,如何找呢?

可以在 BLOCK 管理頁面看路徑:

也可以使用 PHP 列印出來:

<?php
print $block->delta;
?>

透過 Devel Themer 看得更詳細:

當然透過 HTML 也可以的,不說了。