Допустим, нужно сделать форму заказа, которая открывалась бы по ссылке в лайтбоксе. А в ссылке по которой форма будет открываться, будем передавать параметр zakaz, значение которого будет определять сам заказ. К примеру, это может быть название отеля.

Было бы хорошо, при открытии формы получать параметр zakaz и задавать его значение нужному полю. Я пока не нашел как это сделать, поэтому сделал так: мы получаем значение заказ и добавляем в форму jquery скрипт, который присваивает значение параметра zakaz нужному полю.

PHP скрипт добавляем в элемент контейнер:

ChronoForms 5 - задание значения поля формы из параметра адресной строки

ChronoForms 5 - задание значения поля формы из параметра адресной строки

Добавляем код:

<?php
$view = JRequest::getVar( &#39;view&#39;, &#39;&#39;, null, &#39;STRING&#39;);
if ($view == &#39;article&#39;){
$id= JRequest::getVar( &#39;id&#39;, 0, null, &#39;INT&#39;);
 
// Get a db connection.
$db = JFactory::getDbo();
 
// Create a new query object.
$query = $db->getQuery(true);
 
// Select all records from the user profile table where key begins with "custom.".
// Order it by the ordering field.
$query->select(array(&#39;id&#39;, &#39;title&#39;));
$query->from(&#39;#__content&#39;);
$query->where(&#39;id=&#39;.$id);
 
// Reset the query using our newly populated query object.
$db->setQuery($query);
 
// Load the results as a list of stdClass objects.
$result = $db->loadObject();
 
$zakaz = $result->title;
}else{
$zakaz = JRequest::getVar( &#39;zakaz&#39;, &#39;&#39;, &#39;GET&#39;, &#39;STRING&#39; );
//$zakaz = base64_decode($zakaz);
$zakaz = urldecode($zakaz);
 
}
 
echo "<script>
 
jQuery(document).ready(function($) {
$(&#39;#hotel&#39;).val(&#39;" . $zakaz . "&#39;);
});
</script>
"
 
?>

Логика кода такая: если форма вставлена в материал (с помощью плагина), то получаем название материала и его значение присваиваем полю формы. Если нет, то берем значение параметра zakaz из адресной строки браузера, и дешифруем его, потому как, чтобы передать его в адресную строку мы его зашифровали с помощью urlencode()

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

Для K2 :

<?php
$option = JRequest::getVar( &#39;option&#39;, &#39;&#39;, null, &#39;STRING&#39;);
$view = JRequest::getVar( &#39;view&#39;, &#39;&#39;, null, &#39;STRING&#39;);
if ($option == &#39;com_k2&#39; && $view == &#39;item&#39;){
$id= JRequest::getVar( &#39;id&#39;, 0, null, &#39;INT&#39;);
 
// Get a db connection.
$db = JFactory::getDbo();
 
// Create a new query object.
$query = $db->getQuery(true);
 
// Select all records from the user profile table where key begins with "custom.".
// Order it by the ordering field.
$query->select(array(&#39;id&#39;, &#39;title&#39;));
$query->from(&#39;#__k2_items&#39;);
$query->where(&#39;id=&#39;.$id);
 
// Reset the query using our newly populated query object.
$db->setQuery($query);
 
// Load the results as a list of stdClass objects.
$result = $db->loadObject();
 
$zakaz = $result->title;
}else{
$zakaz = JRequest::getVar( &#39;zakaz&#39;, &#39;&#39;, &#39;GET&#39;, &#39;STRING&#39; );
//$zakaz = base64_decode($zakaz);
$zakaz = urldecode($zakaz);
 
}
 
echo "<script>
 
jQuery(document).ready(function($) {
$(&#39;#hotel&#39;).val(&#39;" . $zakaz . "&#39;);
});
</script>
"
 
?>

изменилось:

$option = JRequest::getVar( &#39;option&#39;, &#39;&#39;, null, &#39;STRING&#39;);
$view = JRequest::getVar( &#39;view&#39;, &#39;&#39;, null, &#39;STRING&#39;);
if ($option == &#39;com_k2&#39; && $view == &#39;item&#39;){

и

$query->from(&#39;#__k2_items&#39;);

 

Комментарии   

#7 Galina 02.01.2016 13:03
Здравствуйте! Очень нужно данное вами решение! Но вопрос: непоняно с полем "номер размещение 2-х местный домик" - каковы его настройки и параметры?
#6 Евгений 01.08.2014 14:24
Цитирую Николай:
Цитирую Евгений:
Статейка очень полезная и нужная - долго искал ... Но вот к материалами на К2 не работает (((( Случайно не знаете решения?

Добавил для k2, отличается условие и запрос к базе для получения названия материала


Спасибо, очень помогли. На мой взгляд, тема "Как вставить заголовок в поле/строку ChronoForms" очень нужная, чот нигде больше подобных решений не нашол. ещё раз спасибо!
#5 Евгений 01.08.2014 14:17
Цитирую Николай:
Цитирую Евгений:
Если ставить вместо 'article' значение 'item' то нужному полю присваивается значение 'Wrapper Module' :sad:

Я не понял тут какая связь между view и нужным полем, в нужное поле берется из параметра zakaz, если не менять код, а если форма в материале, то из базы берется значение поля title


Всех их связывает великий и ужасный "метод тыка" :lol:
#4 Николай 01.08.2014 06:13
Цитирую Евгений:
Если ставить вместо 'article' значение 'item' то нужному полю присваивается значение 'Wrapper Module' :sad:

Я не понял тут какая связь между view и нужным полем, в нужное поле берется из параметра zakaz, если не менять код, а если форма в материале, то из базы берется значение поля title
#3 Николай 01.08.2014 06:11
Цитирую Евгений:
Статейка очень полезная и нужная - долго искал ... Но вот к материалами на К2 не работает (((( Случайно не знаете решения?

Добавил для k2, отличается условие и запрос к базе для получения названия материала
#2 Евгений 31.07.2014 23:34
Если ставить вместо 'article' значение 'item' то нужному полю присваивается значение 'Wrapper Module' :sad:
#1 Евгений 31.07.2014 23:31
Статейка очень полезная и нужная - долго искал ... Но вот к материалами на К2 не работает (((( Случайно не знаете решения?

Чтобы сделать комментарий, нужно авторизоваться на сайте!