我在D6中为客户创建的网站有各种图像覆盖主要内容区域的部分。它看起来非常漂亮,它们必须在那里才能产生一般效果。
问题是,如果您在管理页面中使用此主题,则图像会妨碍所有内容。
我的解决方案是创建一个自定义管理主题,基于默认管理主题,在输出模板文件中禁用这些图像区域 - 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区域推到远低于图像出现的区域,并仅使用块进行内容显示。
谢谢!
答案 0 :(得分:2)
function YOURTHEME_preprocess_page(&$vars) {
if (implode('/', arg()) == 'admin/build/block'){
$vars['body_classes'] = $vars['body_classes'].' administer_block';
}
}
并且你将有一个很好的身体类,你可以使用它来隐藏这些图像。
答案 1 :(得分:2)
如果有人仍然遇到此问题,有点类似于上面的barraponto解决方案,如果您使用的是管理菜单模块,它会向正文添加一个类(.admin-menu),您可以使用它来隐藏任何覆盖正在阻碍的div等。
答案 2 :(得分: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来恢复目标主题。通过这种方式,你不必破解核心。
答案 3 :(得分:0)
感谢您提出这个话题!我遇到了同样的问题,而且很烦人。以下是如何在没有一行代码的情况下解决问题: 1)将主主题切换到您的管理主题。 2)配置块。这总是会影响当前选定的主主题。 3)将主题切换回它应该是什么。您的管理主题仍会反映您的更改。
答案 4 :(得分:0)
可以使用块模块中的block-admin ..... tpl文件,并在自定义主题中对其进行主题化。我这样做是因为管理主题模块永远不会覆盖块管理员,即使你使用自定义路径位。
答案 5 :(得分:-1)
如果您在执行管理任务时不需要新主题,则可以在执行此操作时使用其他主题。
转到“网站配置” - > “行政主题”。在这里,您可以选择在执行管理时使用的主题。因此,您的新主题仅在用户查看您的网站时使用。而且您可以在不受所有图像干扰的情况下执行管理任务。