web-dev-qa-db-ja.com

リージョン内のブロックのタイトルを非表示にして、コンテンツとは別にレンダリングすることはできますか?

Drupalに含まれている「アクティブフォーラムトピックブロック」のカスタムリージョンをスタイリングしています。 node.tpl.phpのように、領域内の特定の要素を非表示にできます-[name] .tpl.php?

これは私のnode.tpl.phpの一部です:

    // We hide the elements now so that we can render them later.
    hide($content['comments']);
    hide($content['links']);
    hide($content['field_image']);
    hide($content['links']['#links']['node-readmore']);
    hide($content['links']['#links']['comment-add']);
    hide($content['field_tags']);

リージョン--forum_topics.tpl.php(例の名前 "forum_topics")で可能であれば、これを実行します。

    hide($content['???']);

Region.tpl.phpの場合、適切な方法がわかりません。これが可能である場合、ブロックのタイトルを非表示にするために角括弧の間に何を入れることができますか?ブロックタイトルだけでなく、他にも表示できるドキュメントページがある場合は、リンクしてください。

2
hdavis84

block.tpl.php ファイル($block->regionを使用して地域を特定する)でこれを行う方が簡単です。タイトルとコンテンツを別々に印刷するからです。

テスト環境では、次のようなものを使用して、複雑な変数の概要をよりよく把握することもできます(このような問題に役立ちます)。

drupal_set_message('<pre>'.var_export($content, TRUE).'</pre>');

function print_r_html ($data) {
  ?><pre><?php print_r($data); ?></pre><?php
}
3
Madis

あなたは常にhook_block_view_alterを使用してタイトルを隠すことができます、あなたはこのようなことをすることができます

function MYMODULE_block_view_MODULE_DELTA_alter(&$data, $block) {
  if arg(xx) = xx {  // detemine the path is a forum topic path
    $data['subject'] = xxx;   // change subject
    // or you can:
    unset($data['subject']);
  }
}

ps:MYMODULEはモジュール名、MODULE_DELTAはブロックIDです。それが役に立てば幸い。

0
gilzero