0

drupalのバージョンは6です。$body_classesがどこから来るのか知りたいだけです。

template_preprocess_pageには、「body_classes」という変数があることを知っていました。

しかし、私の問題は、すべてのbody_classesが前処理ページからのものではないということです。

例えば:

「アクティビティとアトラクション」という名前の用語があり、page.tpl.phpのタグに「ページ-アクティビティとアトラクション」というクラスがあります。タクソノミーモジュールがbody_classを生成するように見えますが、タクソノミーモジュールのソースコードを検索した後に見つけることができました。

4

1 に答える 1

2

モジュール(分類法など)は通常、ページテンプレート変数をオーバーライドしません。ただし、hook_theme_registry_alter()でカスタムの前処理関数を提供することで実行できます。(たとえば、コンテキストモジュールを参照してください)

クラス'page-activities-and-attractions'は、1894行のincludes / theme.incのtemplate_preprocess_page()から取得されている可能性があります。

$body_classes[] = preg_replace('![^abcdefghijklmnopqrstuvwxyz0-9-_]+!s', '', 'page-'. form_clean_id(drupal_strtolower(arg(0))));

これにより、Drupalパスの最初の部分にボディクラスが追加されます。
たとえば、パス「node / 1」にはボディクラス「page-node」があり、パス「taxonomy / term/1」にはボディクラス「page-taxonomy」があります。

パス「アクティビティとアトラクション」がある場合(おそらくビューのページ表示からですか?)、ボディクラス「ページアクティビティとアトラクション」を取得します。

注:これは、urlエイリアスではなく内部Drupalパスを使用します。エイリアス「content/mypage」は、実際には内部的に「node / 12」である可能性があるため、本体クラスは「page-content」ではなく「page-node」になります。

于 2010-04-29T18:59:55.427 に答える