Как вручную использовать наложение администратора Drupal 7?


Я подумываю об использовании встроенного скрипта jQuery наложения администратора Drupal для наложения моего собственного содержимого. Возможно ли это?

Author: Logi, 2011-08-01

5 answers

Модуль наложения отображает как наложение страницы, для которых реализация hook_admin_paths() возвращает TRUE для связанного пути. Например, реализация этого крючка, выполненного из модуля узла, выглядит следующим образом:

function node_admin_paths() {
  if (variable_get('node_admin_theme')) {
    $paths = array(
      'node/*/edit' => TRUE, 
      'node/*/delete' => TRUE, 
      'node/*/revisions' => TRUE, 
      'node/*/revisions/*/revert' => TRUE, 
      'node/*/revisions/*/delete' => TRUE, 
      'node/add' => TRUE, 
      'node/add/*' => TRUE,
    );
    return $paths;
  }
}

Это означает, что форма редактирования узла отображается как наложение, когда включен модуль наложения. Если модуль наложения не включен, эти страницы отображаются с использованием административной темы.

Для путей реализованный другими модулями, модуль может реализовать hook_admin_paths_alter(). Примером реализации может быть следующий, в котором страницы профиля пользователя будут отображаться в виде наложения.

function mymodule_admin_paths_alter(&$paths) {
  // Treat all user pages as administrative.
  $paths['user'] = TRUE;
  $paths['user/*'] = TRUE;
  // Treat the forum topic node form as a non-administrative page.
  $paths['node/add/forum'] = FALSE;
}
 7
Author: kiamlaluno, 2011-08-01 17:59:06

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

 9
Author: , 2012-01-24 18:34:25

Если вы хотите реализовать эту функцию для определенного типа контента, чтобы все узлы этого типа контента открывались в административном наложении, вы можете использовать следующий код:

<?php
/*
 * Implements hook_admin_paths_alter().
 */
function YOUR_MODULE_admin_paths_alter(&$paths) {
  $query = new EntityFieldQuery();
  $query->entityCondition('entity_type', 'node')
      ->entityCondition('bundle', 'YOUR_CONTENT_TYPE')
      ->propertyCondition('status', 1);
  $result = $query->execute();

  if (isset($result['node'])) {
    $nodes = array_keys($result['node']);
    foreach ($nodes as $node_id) {
      $node_path = 'node/' . $node_id;
      $paths[$node_path] = TRUE;
    }
  }
}
?>
 3
Author: Елин Й., 2013-01-29 20:24:47

Модуль наложения жестко запрограммирован для одной цели - отображения страниц администратора. Для надежного повторного использования этого кода для вашего собственного контента потребуется огромное количество усилий.

 1
Author: tim.plunkett, 2011-08-01 17:25:13

Возможно, вам поможет один из многочисленных модулей contrib, например Диалоговый API.

 1
Author: tostinni, 2011-08-26 16:24:22