Вы здесь

Убрать регионы из colorbox+iframe

0

Прошу о подсказке куда смотреть. Уверен материалов много. Вопрос-то не сложный.
Нужно просто очистить вывод материала в colorbox (iframe). Выводится вся страница с регионами, логотипом и прочими полями. Как вычистить регионы и вывести только #block-system-main (Основное содержимое)?
Хотел окончательно разобраться с чисткой вывода в колорбокс. Через что это делать нужно и как правильно. Посоветуйте материалы, термины или решения.
Спасибо.

Уточнение: нужна чистка вывода в случае colorbox (iframe=true). Просто вывод материала в colorbox совсем прост и с ним все понятно.

Версия Drupal: 
7.x
Связанные проекты: 
Colorbox
Вопрос задан 23.07.2015 - 06:18

Ответы

0

Спасибо всем, кто ответил. Решение получилось следующее:
(Для опытных разработчиков задача тривиальная, я понимаю. Но все равно напишу очевидные вещи для тех, кто тоже только разбирается с препроцессами.)

  1. В файл template.php нашей темы написал следующий код:

    function my_theme_preprocess_page(&$variables){
    if(isset($variables['node']) && $variables['node']->type == 'my_node_type') {
    $variables['theme_hook_suggestions'][] = 'page__templatename';
    }
    }

  2. В папке нашей темы создаем файл page--templatename.tpl.php
    Это будет наш шаблон для вывода всех нод типа my_node_type.

В нем выводим только контент, как и было задумано в топике.

<h1 id="page-title"><?php print $title; ?></h1>
<?php print render($page['content']); ?>

Все работает. Еще раз спасибо.

Ответ дан 25.07.2015 - 06:49
0

Установите модуль Colorbox-node. Для любой ссылки добавьте класс 'colorbox-node' и содержимое той страницы откроется в колорбоксе:

<a href="/node/1" class="colorbox-node">Нода 1</a>

UPD. После уточнения.
Ну тогда передавайте через GET какой-нибудь параметр, а в шаблоне чистите что угодно.

Ответ дан 23.07.2015 - 06:53

Нужно открывать содержимое в iframe. Если вы откроете ноду через colorbox с настройкой iframe=true у вас выведется полный материал со всеми регионами. Получится сайт в сайте.

Нужно именно вывод через iframe.

Комментарий оставлен 23.07.2015 - 08:20

Получится сайт в сайте.

Iframe это и есть сайт в сайте. Передавайте GET параметр и чистите в шаблоне что угодно.
Обновил ответ.

Комментарий оставлен 23.07.2015 - 09:44

а каким образом можно отследить открытие определенного типа ноды? что-то типо:
function theme_preprocess_page(&$variables){
if (arg(0) == 'node') {}

Только вот по пути он определит все типы ноды.

Комментарий оставлен 23.07.2015 - 15:32
function yourtheme_preprocess_page(&$variables){
    if(isset($variables['node']) && $variables['node']->type == 'your_node_type') {
        // Ваш код
      }
}
Комментарий оставлен 23.07.2015 - 16:30

Спасибо, все получилось.
Есть еще один пример, но он не рабочий. Выдает ошибку. Поделитесь опытом - что в нем не верно?
function mytheme_preprocess_page(&$variables){
if($variables['type'] == 'event') {
$variables['theme_hook_suggestions'][] = 'page__event';
}
}

Комментарий оставлен 25.07.2015 - 06:39
0

я возможно скажу банальную вещь, но на ваш вопрос это отвечает:
на странице настроек Колорбокс отключите галку: Enable Regions
то есть тут:
Конфигурация - Медиа-Файлы - Colorbox - закладка Расширенные настройки
Enable Regions

Ответ дан 23.07.2015 - 12:54

Спасибо за такую подсказку. Раньше не обращал внимания на это поле. Оно у меня отключено было и так. Однако, это опять немного не то.
Опишу подробней:
Если вы делаете вывод материала через колорбокс с параметром iframe = true, тогда на выходе получаете целиком всю страницу с регионами. Препроцессом это можно вычистить все. Тогда получим чистый main-content.
Зачем такой велосипед? Ведь если iframe = false, то colorbox сам все вычистит и выведет только сам материал (Colorbox Node). Но у меня задача: открыть другой колорбокс внутри этого. То есть открыли материал в колорбоксе, а среди текста есть фотка, жмем на нее и она открывается в колорбоксе.
Если делать без iframe, то colorbox изображения заменит colorbox самого материала и пользователь утратит первоначально открытый материал.

А вот iframe все делает как надо - открывает один в другом.

Комментарий оставлен 23.07.2015 - 14:32

спасибо, я не знал как это сделать. теперь буду знать. хотя раз так все сложно то делать не буду. на то он и сайт чтобы люди по нему ходили, а вы почти как новый сайт внутри сайта делаете.
вот еще о том как не отображать в колорбоксе сложные поля: http://dru.io/question/2422
кстати, апи колорбокса и все эти параметры в адресной строке я не использую, единственная донастройка для колорбокса - открывать все ссылки на картинки в колорбоксе делается так:

Следующий скрипт можно подгружать в шаблоне сайта, он открывает все ссылки на картинки в модальном окне Колорбокс:

jQuery(document).ready(function($) {
    // Открываем все ссылки на изображения в ColorBox
    $("a[href$='.jpeg'], a[href$='.jpg'], a[href$='.png'], a[href$='.gif']")
    .attr('rel', 'gallery')
    .colorbox();
});
Комментарий оставлен 23.07.2015 - 15:34