[Решено] Проблема Colorbox+Webform Drupal 6

Главные вкладки

Аватар пользователя MaximumofmaX MaximumofmaX 5 декабря 2011 в 21:41

Никак чтото не подцеплю Webform в Colorbox.
выдаёт Request unsuccessful: Not Found.

вывожу кодом

<?php<a class="colorbox-load" href="/colorbox/form/webform_client_form_7?width=500&height=350">Form</a>?>

или

<?php<a class="colorbox-load" href=""/colorbox/form/[form_7]?width=500&height=350]">Form</a>?>

на официалке пишут про баги но там версия модуля колорбокс более ранняя, в последней таих строк даже нету.
http://drupal.org/node/940220

помогите люди знающие.

Комментарии

Аватар пользователя drupby drupby 5 декабря 2011 в 22:50

"MaximumofmaX" wrote:
вывожу кодом

<?phpForm?>

или

<?phpForm?>


"MaximumofmaX" wrote:
а поконкретнее можно, в какую сторону плыть чтобы всё заработало

в коде разобраться и отделить мух от котлет ,в смысле php от html .

Аватар пользователя MaximumofmaX MaximumofmaX 5 декабря 2011 в 23:21

так он всю страницу подцепляет, а мне только одну форму нужно. все комбинации уже пробовал. поиски читал...такбы не спрашивал

на официалку ссылка сообщение номер 6. я про него речь в 1 посте вёл.

Аватар пользователя Айдар Айдар 5 декабря 2011 в 23:32

Он не сработает все равно через колорбокс - там вроде надо искать более раннюю версию самой библиотеки, но автор ее по непонятным причинам скрывает.

"MaximumofmaX" wrote:
в какую сторону плыть

В сторону модуля Popups, вестимо. Там, насколько помню, на страницы модуля colorbox еще написано, что больше формы не поддерживаются. У Вас возможно получится даже форму вывести, но при отправке будет 500.

Аватар пользователя Айдар Айдар 5 декабря 2011 в 23:34

И еще, вот это: /colorbox/form/webform_client_form_7?width=500&height=350 должно заменяться на что-то вроде /colorbox/form/webform_client_form_7%3Fwidth=500&amp;height%3D350

Аватар пользователя rimen rimen 6 декабря 2011 в 11:10

MaximumofmaX wrote:
так он всю страницу подцепляет, а мне только одну форму нужно. все комбинации уже пробовал. поиски читал...такбы не спрашивал

подцепим страницу, на которой будет только форма и ничего лишнего.

Для чего нужно сделать несколько вещей.
1. новый темплейт страницы, например, page-cbox.tpl.php, в котором выводим только то ,что нам нужно
Например (привожу только body)

<body class="<?php print $body_classes; ?>">
  <div id="page" class="cbox-page"><div id="page-inner">
  <?php print $content; ?>
  </div></div>
</body>

2. добавить следующее в phptemplate_preprocess_page tempalate.php, чтобы подключить наш tpl страницы (очень может быть ,что в вашей теме это уже сделано)

if (!$vars['is_front']) {
    $path = drupal_get_path_alias($_GET['q']);
    list($site_section, ) = explode('/', $path, 2);
    if (arg(0) == 'node') {
      if (arg(1) == 'add') {
        $site_section = 'node-add';
      }
      elseif (is_numeric(arg(1)) && (arg(2) == 'edit' || arg(2) == 'delete')) {
        $site_section = 'node-' . arg(2);
      }
    }
  }
     
  //подхватываем page.tpl в зависимости от адреса страницы (например, page-stranica.tpl.php)
  $vars['template_files'][] = 'page-'.$site_section;

3. добавляете алиас страницы, например для вашей webform/7, cbox/webform/7.

Теперь, если все верно сделано и сброшен кэш, по адресу site.ru/cbox/webform/7 вам отдастся страница с "только" формой

4.отправляем colorbox ссылки "по новому" направлению - подключаем свой js (например, в файле темы .info)

$(document).ready(function(){
    //форма заказа
    var popupLink = "a.cbox-popup";
    $(popupLink).click(function(e){
        e.preventDefault();
        $.colorbox({
            iframe: true,
            width: 600,
            height: "95%",
            href: "/cbox/"+this.pathname + this.search
        });
    });
});

Теперь, ваша ссылка вида <a class="cbox-popup" href="webform/7">Форма связи</a> при включенном js откроет только форму в iframe, а выключенном js отправит пользователя на обычную страницу формы.

Чтобы у всплывающего окна не появлялись скроллы, css задайте ширину-высоту, например в моем примере

#page.cbox-page {
width: 600px;
}

Остается момент с автозакрытием/ресайзингом по отправке формы. Были какие-то варианты на http://stackoverflow.com/, у меня необходимости не было.

Аватар пользователя rimen rimen 6 декабря 2011 в 11:14

По сути, если сделать все, как расписал, теперь таким же макаром, можно любую страницу открывать colorbox - нужно лишь добавить алиас да ссылке добавить класс нужный.

Аватар пользователя drupby drupby 6 декабря 2011 в 11:33

так то можно форму и во вьюсе где-нибудь ,к примеру в блоке или в шаблоне вытянуть ,скрыть ее ,а потом в colorbox-inline вывести нужный div с формой.

Аватар пользователя rimen rimen 6 декабря 2011 в 11:53

Можно, все зависит от задачи. Только проверьте, что будет по сабмиту формы из colorboxa в вашем варианте (при неверном заполнении формы) - мне не понравилось.
Мне нужно было передавать параметры в форму в зависимости от нажатой кнопки. На том же сайте, что приводил выше на странице контактов вьюха с контактами многих лиц, по нажатию открывается одна и та же форма связи, но по отправке отправляется смс конкретному человеку и письмо на его мыло. Так же в каталоге заказ уходит в разные отделы.
Потому делал более-менее унифицированный вариант.

Аватар пользователя MaximumofmaX MaximumofmaX 6 декабря 2011 в 20:19

я вчера более простым способом решил проблемму)

написал шаблон page-node-7.tpl.php
где только контент вывожу

и вывожу ссылкой
<a class="colorbox-load" href="node/7?width=500&height=350&iframe=true]">Form</a>

по сути тоже самое что предлогает rimen только попроще)

вот кстати когда вывожу колорбокс классами colorbox-load и colorbox-inline почему то грузится посредине всей страницы а не экрана. Это глюк стилей калорбокса или я чёто гоню?

Аватар пользователя rimen rimen 6 декабря 2011 в 21:13

Да,все верно. Этот вариант, когда нужно вывести одну форму, проще и даж правильнее))
А в коде самого colorbox ничего не менял?
Попробуй стиль колорбокса сменить или в другой теме вывести.
Еще у него есть параметры позиционирования, может, их изменял.

Аватар пользователя Айдар Айдар 6 декабря 2011 в 21:53

"MaximumofmaX" wrote:
переставил полностью калорбокс всё пришло в норму))))

Если речь о предыдущем посте, то, вероятно, стоило сначала поиграться с агрегацией скриптов колорбокса и всего сайта.

Аватар пользователя drupby drupby 6 декабря 2011 в 23:08

"MaximumofmaX" wrote:
переставил полностью калорбокс всё пришло в норму))))

неужели colorbox-load стал выводить все формы ?

Аватар пользователя alex_ti alex_ti 25 сентября 2012 в 10:30

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

Аватар пользователя tishka2 tishka2 10 ноября 2015 в 11:49

C вашего позволения, подниму тему. Делаю так: создал материал типа page, в Body вписал код:


<?php
module_load_include
('inc''node''node.pages');
echo 
drupal_get_form('stena_node_form');
?>

Где stena_node_form - id формы, которую нужно вывести.

Сделал page-node-25.tpl.php, где 25 - это ID той страницы. В этот шаблон вставил:

<?php
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="<?php print $language->language ?>" xml:lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>">

<head>
  <?php print $head ?>
  <title><?php print $head_title ?></title>
  <?php print $styles ?>
  <?php print $scripts ?>
  <script type="text/javascript"><?php /* Needed to avoid Flash of Unstyle Content in IE */ ?> </script>
</head>

<body>
     <div id="main">
        <?php print $content; ?>
      </div>
<?php print $closure ?>
</body>
</html>

Ссылка на вывод окошка:


<?php if(!user_is_anonymous()) { ?>
<a class="colorbox-load add_zapis_link" href="/forma-dobavleniya-zapisi-na-stenu?width=600&height=800&iframe=true">Добавить запись на стену</a>
<?php 
else echo 
"Авторизуйтесь, для добавления записи на стену";?>

где /forma-dobavleniya-zapisi-na-stenu - алиас той страницы с выводом формы.

Итог этих действий - выводится только нижняя часть формы. Как на прикрепленном файле.

Как так-то? Упустил что-то? Заранее благодарен за ответы!