2012-04-12 32 views
0

我有一個菜單項櫃檯,基本上作爲一個類添加增量值的菜單系統:PHP力復位計數器爲0

<?php 
    if ($element['#original_link']['depth'] == 1) { 
     static $counter = 0; 
     $counter++; 
     $class = 'count-' . $counter; 
    } 
    $output = 'some output code build'; 
    return '<li class="' . $class . '">' .$output .'</li>'; 
    ?> 

注意,代碼爲每個菜單項中(在循環外或陣列)。代碼將簡單地輸出無序列表的列表,沒有UL:

<li class="count-1">One</li> 
<li class="count-2">Two</li>, ...etc. 

這很好地工作,直到我更改菜單的來源。

1)。一個是使用我的CMS的系統菜單,

2)。後者正在使用該系統菜單的塊輸出,除了後者從#1繼續計數器而不是從1重置(儘管#1爲1)的事實之外,兩者都輸出類似的菜單結構。一旦#2佔據了地方,就不會被激活)。我還沒有弄清楚爲什麼,但似乎#2是#1的延續。雖然我預計每個應該從1開始增量。我不能在這裏使用重置。除了我的CMS對櫃檯的做法之外,是否有什麼明顯的我錯過了PHP可以在這裏處理的事情?

任何指針將非常感激。感謝

UPDATE,實際代碼在使用中:

function mytheme_menu_link(array $variables) { 
    //dpm($variables); 
    $element = $variables['element']; 
    $sub_menu = ''; 

    if ($element['#below']) { 
    $sub_menu = drupal_render($element['#below']); 
    } 

    if ($element['#original_link']['menu_name'] == variable_get('menu_main_links_source', 'main-menu')) { 
    if ($element['#original_link']['depth'] == 1) {  
     static $counter = 0; 
     $counter++;      
     $element['#attributes']['class'][] = 'count-' . $counter; 
    } 
    } 

    $output = l($element['#title'], $element['#href'], $element['#localized_options']); 
    return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n"; 
} 

/** 
* Implements theme_menu_tree() 
    No helpful variables, except for a flattened render of tree 
*/ 
function mytheme_menu_tree__main_menu($variables) { 
    return '<ul class="menu">' . $variables['tree'] . '</ul>'; 
} 

回答

2

當使用static變量,該變量的值不會相同的代碼的後續執行之間重置。這是static的明確目的。如果你不想要這樣的行爲,請擺脫它。

+0

謝謝,不幸的是,當靜態刪除時,沒有增量值,僅僅是因爲那塊代碼不在循環中。都有類似的類=「count-1」。 – swan 2012-04-12 06:58:01

+0

那我真的不明白這個問題。請提供更多代碼,最好是一個完整的自包含示例來說明問題。 – deceze 2012-04-12 06:59:04

+0

添加了菜單項目列表及其容器UL功能。謝謝 – swan 2012-04-12 07:08:23