2009-09-08 47 views
0

我爲D6中的客戶創建的網站具有覆蓋主要內容區域各個部分的各種圖像。它看起來非常漂亮,他們必須在那裏才能發揮一般效果。Drupal管理主題不適用於塊頁面(admin/build/block)

問題是,如果您在管理頁面中使用此主題,圖像會阻礙一切。

我的解決方案是創建一個自定義的管理主題,基於默認的一個,它在輸出模板的文件來禁用這些圖像區域 - page.tpl.php中

的問題是,當你嘗試編輯塊頁面,它使用默認的主題和一半的塊管理設置在圖像後面不可點擊。我知道這是在Drupal中設計的,但它讓我很討厭,並且在我的腦海中朝着「bug」而不是「功能」傾斜。它似乎也沒有辦法繞過它。

您可以編輯/modules/blocks/block.admin.inc來強制Drupal在選定的管理主題中顯示塊頁面。但是無論你做什麼改變,你都不會轉移到默認主題,因爲Drupal單獨處理每個主題,每個主題可以有不同的塊佈局。 :x

function block_admin_display($theme = NULL) { 
    global $custom_theme; 

    // If non-default theme configuration has been selected, set the custom theme. 
    // $custom_theme = isset($theme) ? $theme : variable_get('theme_default', 'garland'); 
    // Display admin theme 
    $custom_theme = variable_get('admin_theme', '0'); 

    // Fetch and sort blocks 
    $blocks = _block_rehash(); 
    usort($blocks, '_block_compare'); 

    return drupal_get_form('block_admin_display_form', $blocks, $theme); 
} 

任何人都可以幫忙嗎?我能想到的唯一辦法就是將$ content區域放在圖片顯示區域的下方,並且僅對內容顯示使用區塊。

謝謝!

回答

1

可以,無論你想你的自定義模塊中使用hook_init()應用管理主題:

function yourmodule_init() 
{ 
    if (some condition here like arg(0) == 'foobar' 
     or node_load(arg(1))->type == 'something') 
    { 
     $GLOBALS['custom_theme'] = variable_get('admin_theme', '0'); 
     drupal_add_css(drupal_get_path('module', 'system') .'/admin.css', 'module'); 
     drupal_add_js(drupal_get_path('theme', 'myadmintheme').'/jscripts/adminjs.js'); 
    } 
} 

編輯:然後(可能),你必須使用form_alter對塊編輯形式恢復到目標的主題。這樣你就不必破解核心。

-1

如果您在執行管理任務時不需要新主題,則可以在此過程中使用不同的主題。

轉到「網站配置」 - >「管理主題」。在這裏你可以選擇在做管理時使用的主題。因此,您的新主題只能在用戶查看您的網站時使用。而且您可以在不受所有圖像干擾的情況下執行管理任務。

+0

無論如何,它將使用塊編輯頁面中的默認主題(這確實是他的問題) – gpilotino 2009-09-08 11:55:21

2

中的template.php你可以把

 
function YOURTHEME_preprocess_page(&$vars) { 
    if (implode('/', arg()) == 'admin/build/block'){ 
    $vars['body_classes'] = $vars['body_classes'].' administer_block'; 
    } 
}
,你就會有一個很好的體類,您可以使用隱藏使用CSS這些圖像。

0

感謝您提出這個話題!我遇到了同樣的問題,而且很煩人。不需要一行代碼即可解決此問題: 1)將主要主題切換爲您的管理主題。 2)配置塊。這總是會影響當前選中的主要主題。 3)將主題切換回原來的樣子。您的管理主題仍會反映您的更改。

2

如果有人仍然有這個問題,有點類似於上面的barraponto的解決方案,如果您使用的是管理菜單模塊,它會向主體添加一個類(.admin-menu),您可以使用它來隱藏任何覆蓋的divs等都在阻礙着你。

0

只能使用塊管理.....塊模塊中的tpl文件,並將它置於您的自定義主題中。我已經這樣做了,因爲即使使用自定義路徑位,管理主題模塊也不會覆蓋塊管理員。