Drupal Overlay 应用到指定页面2种方法

2016-02-22    编辑:kp12345     点击(
如果想让Drupal的非管理页面也出现在Overlay覆盖层中或者使用Drupal默认的Overlay模块作为普通的弹出框口来使用,那么我介绍2个方法帮助你实现

 Drupal overlay paths

方法一 加入到 admin_paths

应该说是这个方法是最快的,在一个模块中重新定义其在hook_menu定义的菜单项到hook_admin_paths_alter()来实现。那些路径属于admin_path的,即用来决定哪些页面将被呈现为Overlay叠加层样式。模块应要求Overlay模块的依赖,以确保其他页面都作为有效覆盖渲染。

你可以让其他模块定义的页面作为管理页面。

 代码如下 复制代码

function mymodule_admin_paths_alter(&$paths) {
  $path['node/*'] = TRUE;
  $path['node/*/view'] = TRUE;
  $path['node/*/backlinks'] = FALSE;
}

通常情况下,每个模块实现hook_admin_paths()来设置他们自定义的菜单项是管理页面,这意味着,一个网页是不是一个管理页面,该页面的路径不会被添加到返回的数组。

hook_admin_paths() 是在您自己的模块中定义的菜单项执行,重新定义时,从其他模块中定义的菜单项管理页面,你需要用hook_admin_paths_alter() 来实现。

即定义当前模块中定义的页面是否为管理页面:

 代码如下 复制代码

function hook_admin_paths() {
  $paths = array(
    'mymodule/*/add' => TRUE,
    'mymodule/*/edit' => TRUE,
  );
  return $paths;
}

方法二 使用Overlay Paths
您也可以使用Overlay Paths模块。它是一个简单的模块。使管理员能够使用非管理页面到Overlay叠加层中。这意味着您可以复用Overlay作为弹出窗口而不用添加更多的JavaScript库到您的网站来实现类似的Modal功能。


使用Overlay Paths定义的API作为钩子即可实现:

 代码如下 复制代码

/**
 * Implement hook_overlay_paths().
 */
function mymodule_overlay_paths() {
  $paths = array(
    'user' => TRUE,
  );
  return $paths;
}

这样,网站实现弹出框的效果就使用Drupal自带的Overlay就行了,赶紧试试吧。