
Модуль Simple dialog
admin ср, 03/08/2011 - 15:57
Simple dialog совсем молодой модуль (опубликован 27-06-2011), интегририруется в друпал слабо, может использоваться как основа для каких-либо будущих разработок. Поэтому документация скудная. Дальнейшее описание основано на просмотре прилагаемого примера, изучении кода и экспериментах.
Модуль не имеет промежуточного интерфейса для взаимодействия с ядром друпала более, чем подгрузить скрипт через функцию API drupal_add_js и drupal_add_css. Поэтому он не имеет никакого представления о нодах, вьюсах и пр. Соответственно, он не может загрузить материал с адресом "/node/1". Однако, он может спарсить страницу по адресу "node/1" (со всеми блоками, заголовками) и отобразить ее часть, определяемую селектором. Это позволяет его использовать для отображения любого содержимого с любой страницы сайта.
Недостаток такого подхода: Поскольку для парсинга одной ноды должна быть загружена страница целиком со всеми заголовками и блоками, скорость отображения контента в модальном окне такая же, как если бы мы открывали страницу с нодой обычным способом. Для устранения этого недостатка предлагаю использовать следующий способ.
Для отображения материала в модальном окне создать для него отдельный тип. Например modal.
В теме в файле template.php (если файла нет - создать) добавить функцию
function имя_темы_preprocess_page(&$vars, $hook) {
if (isset($vars['node']) && $vars['node']->type) {
$vars['theme_hook_suggestions'][] = 'page__'. $vars['node']->type;
}
}
Та же создать файл page--modal.tpl.php со следующим содержимым:
При этом будет загружаться полное содержимое ноды без лишних блоков, но с комментариями, тегами и другими атрибутами. Если нужно загружать чистый контент ноды, то можно заменить содержимое файла на
Описание использования
1. Модуль ставится стандартным способом. У него нет зависимостей, он использует встроенный в Drupal-7 jquery ui.
2. Модуль имеет всего одну настройку по адресу admin/config/content/simple-dialog : подгружать или нет скрипт на всех страницах сайта. Если выбираем нет, то скрипт мы подгружаем вручную через drupal_add_js на тех страницах, где предполагается вызов модальных окон.
3. Вручную создается ссылка вида
Наша нода
где :
class="simple-dialog" - указывает подгруженному скрипту, что нужно материал отобразить в модальном окне;
rel="width:900;resizable:false;position:[center,60]" - специальный "язык", указывающий скрипту в какой форме будет отображение содержимого;
name="content" - селектор ID контейнера на странице node/1. Это работает в темах (например, Bartik), в которых содержимое ноды обернуто в . Для других тем нужно указывать тот идентификатор, которым обернут контент ;
href="/node/1" - адрес страницы-источника.
Для использования в проекте нужно создавать пользовательский блок меню с такими ссылками.
Комментировать