2011-06-30 13 views
1

drupal 7のメニュー出力を上書きして、各メニュー項目の前に番号を表示したいとします。Drupal 7のメニュー項目に番号を付ける

function FDP_link($variables) { 
    return '<a href="' . check_plain(url($variables['path'], $variables['options'])) . '"' . drupal_attributes($variables['options']['attributes']) . '><sup>01</sup>' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</a> 
'; 
} 

問題は、私は動的にする番号が必要である、すなわち:だから各メニューには、現在の出力をオーバライドするために、この機能を使用して1

イムから始まり、番号順にその前に番号を持っているでしょうメニュー項目ごとに1ずつ増加します。誰かが私がこれを達成するのを助けてくれますか?

答えて

0

あなたは値にそれが呼び出されるたびにインクリメントするあなたの関数内で静的配列を使用することができます。

function FDP_link($variables) { 
    static $counters; 
    $counters[$variables['element']['#theme']]++; 
    return '<a href="' . 
     check_plain(url($variables['path'], $variables['options'])) . '"' . 
     drupal_attributes($variables['options']['attributes']) . 
     '><sup>'.sprintf('%01d',$counters[$variables['element']['#theme']]).'</sup>' . 
     ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</a> 
'; 
} 

それとも、またpreprocess_block()フック付きのメニュー項目を傍受する方法を見つけることがあります。

+0

これはトリックでしたが、「sprintf( '%01d'」を「sprintf( '0%d' 'を正しく表示するように変更するだけでした。 – RiaanZA

関連する問題