web-dev-qa-db-ja.com

Drupal 7オーバーレイがすでに使用されている場合、ポップアップのノード/編集画面でどのように使用しますか?

ノード/編集フォームにボタンを追加するモジュールを書いています。このボタンは、ライトボックスにDIV/IFRAMEをポップアップする必要があります。 Drupal 7は、管理ページとノード/編集ページに新しいオーバーレイモジュールを使用しています。

だから私の質問は、私のボタンがノード/編集ページにあるので、オーバーレイをオーバーレイする必要があります。オーバーレイにアクセスして変更したりZインデックスを作成したりする方法はありますか、またはライトボックス効果を作成するために独自のオーバーレイコードを作成するだけですか(ノードのオーバーレイ/オーバーレイの編集)。

1
Camsoft

オーバーレイで使用されるz-indexを変更することは可能ですが、私はそれが必要だとは思いません。オーバーレイには、Overlayモジュールで使用されるものよりも高いz-indexを使用するだけです。

オーバーレイがいつ出力されるか、またはどのように出力されるかを知る必要がある場合は、 overlay_page_alter() によって実行されるコードを確認する必要があります。 overlay.moduleによって作成されたhook_page_alter()の実装。

function overlay_page_alter(&$page) {
  // If we are limiting rendering to a subset of page regions, deny access to
  // all other regions so that they will not be processed.
  if ($regions_to_render = overlay_get_regions_to_render()) {
    $skipped_regions = array_diff(element_children($page), $regions_to_render);
    foreach ($skipped_regions as $skipped_region) {
      $page[$skipped_region]['#access'] = FALSE;
    }
  }

  $mode = overlay_get_mode();
  if ($mode == 'child') {
    // Add the overlay wrapper before the html wrapper.
    array_unshift($page['#theme_wrappers'], 'overlay');
  }
  elseif ($mode == 'parent' && ($message = overlay_disable_message())) {
    $page['page_top']['disable_overlay'] = $message;
  }
}
2
kiamlaluno