0

Drupal 6 で作業しています。

ユーザーがブログ ページにいるときに、特定のブロックを追加する必要があります。単純なことのように聞こえますが、それは私を怒らせてきました。

ユーザーがブログの概要または個々のブログ エントリを表示しているときに、ブロックを表示する必要があります。

最初はページ名でフィルタリングできると思っていたので、 page = /blog/ の場合にのみ表示されます。残念ながら、これはブログの概要ページにのみ適用されます。個々のブログ エントリ ページには独自の URL があります (デフォルトは /node/ ですが、所有者が望むものに変更されます)。

もう少しグーグルで調べて、 $node->type=='blog' を見つけました。これは、私がブログ エントリ ページにいるという事実を拾うはずですが、機能していないようです。

admin/build/block/configure ページでは、ページの表示を PHP モードに設定し、PHP コードを次のように設定しています。

<?php
return ($node->type == 'blog');
?>

しかし、テンプレートで print_r($node) を実行しても、type==blog と表示されますが、うまくいかないようです。

上記に strpos($_SERVER['REQUEST_URI','blog') も追加しましたが、もちろん最初の条件が機能しないため、2 番目の条件を追加しても役に立ちません。

明白な答えがあるはずのように感じますが、私はそれを見つけることができません。誰でも私を助けることができますか?ありがとう。

4

1 に答える 1

1

上記のコードの問題は、ブロックのコードを実行すると、 $node 変数が利用できないことです。ブログノードに追加するには、このようなことをする必要があります。

<?php
    // This code checks the internal url, which for nodes always will be node/[nid].
    // Last condition: don't display the block on node edit forms etc.
    if (arg(0) == 'node' && is_numeric(arg(1)) && empty(arg(2))) {
      $node = node_load(arg(1));
      return $node->type == 'blog';
    }
?>
于 2010-08-11T10:53:06.657 に答える