2009-09-08 2 views
0

Сайт, который я создаю для клиента в D6, имеет различные изображения, накладывающиеся на части основной области содержимого. Это выглядит очень красиво, и они должны быть там для общего эффекта.Тема администрирования Drupal не относится к страницам блоков (admin/build/block)

Проблема заключается в том, что если вы используете эту тему на страницах администрирования, изображения мешают всему.

Моего решения было создать тему пользовательского администратора, на основе установленного по умолчанию, который имеет эту область изображения отключены в файлах вывод шаблон - page.tpl.php

Проблема заключается в том, что, когда вы пытаетесь редактировать страницы блоков, она использует тему по умолчанию, а половина настроек администратора блоки нечетко за изображениями. Я ЗНАЮ, что это по дизайну в Drupal, но это меня раздражает, и я нахожусь в сторону «ошибки», а не «функции». Также кажется, что нет возможности обойти это.

Вы можете отредактировать /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'); 
    } 
} 

EDIT: тогда (возможно) вы должны использовать form_alter против формы редактирования блока для восстановления целевой темы. таким образом, вам не нужно взламывать ядро.

-1

Если вам не нужна ваша новая тема при выполнении административных задач, вы можете использовать другую тему при этом.

Перейти к «Конфигурация сайта» -> «Администрирование». Здесь вы можете выбрать тему, которая будет использоваться при администрировании. Таким образом, ваша новая тема используется только тогда, когда пользователи просматривают ваш сайт. И вы можете выполнять задачи администратора без вмешательства всех ваших изображений.

+0

в любом случае будет использовать тему по умолчанию на странице редактирования блока (это действительно его проблема) – gpilotino

2

в template.php вы можете разместить , и у вас будет хороший класс тела, который вы можете использовать, чтобы скрыть эти изображения с помощью CSS.

0

Спасибо, что подняли эту тему! У меня была такая же проблема, и это раздражает. Вот как исправить это без единой строки кода: 1) Переключите тему основных в тему администрирования. 2) Настройте блоки. Это всегда влияет на выбранную в настоящее время тему , основную тему. 3) Переключите главную тему назад к тому, что она должна быть. Тема вашего администратора по-прежнему будет отражать ваши изменения.

2

Если у кого-то проблема с этим, немного похожее на решение barraponto выше, если вы используете модуль меню администратора, он добавляет к телу класс (.admin-menu), который вы можете использовать для скрытия любые наложения div и т. д., которые мешают.

0

может просто использовать блок-админ .....tpl из блочного модуля и тему в вашей настраиваемой теме. Я сделал это, так как модуль темы администратора никогда не перекрывает администратор блоков, даже если вы используете собственный бит пути.