web-dev-qa-db-ja.com

Drupal 7:メニューHTML出力を変更しますか?

私が作成しているDrupal 7テーマのHTML出力を変更しようとしています。

基本的に、テキストを含む単純な<a>を含む<li>の代わりに、<a>内に追加のHTMLを含めたいと思います。

Drupalのメニューで作成されたHTMLを変更できることは知っています。 page.tpl.phpで次の呼び出しを確認できます。

<?php print theme('links__system_main_menu', array(
      'links' => $main_menu,
      'attributes' => array(
        'id' => 'main-menu',
        'class' => array('links', 'clearfix'),
      ),
      'heading' => array(
        'text' => t(''),
        'level' => 'h2',
        'class' => array('element-invisible'),
      ),
    )); ?>

出力を作成するテーマ関数を呼び出します。出力を変更する1つの方法は、theme.incのtheme_links関数を変更することですよね?

http://api.drupal.org/api/drupal/includes--theme.inc/function/theme_links

また、template.phpにフックを配置して、HTMLを作成する関数をオーバーライドできることも知っています。実際のオーバーライド関数を作成する方法がわかりません。誰かが私を正しい方向に向けることができますか?

17
Donnie Thomas

あなたがすることは、「theme.inc」ファイルを直接変更するのではなく、出力を変更するためのフックを実装することです。

たとえば、このページで受け入れられた回答: Drupal Override Custom Menu Template


そして、一般的なルールとして、何かの出力を変更したい場合は、 フックを実装 (モジュール内またはアクティブなテーマのtemplate.php内)または template事前定義されたファイル名で このようなケースが存在する場合(テンプレートがまだ存在しない場合、 テンプレートの候補のリストを変更する モジュールまたはテーマを使用して).

18
wildpeaks