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

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

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

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

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

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

<?php
$view = JRequest::getVar( 'view', '', null, 'STRING');
if ($view == 'article'){
$id= JRequest::getVar( 'id', 0, null, 'INT');
 
// 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('id', 'title'));
$query->from('#__content');
$query->where('id='.$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( 'zakaz', '', 'GET', 'STRING' );
//$zakaz = base64_decode($zakaz);
$zakaz = urldecode($zakaz);
 
}
 
echo "<script>
 
jQuery(document).ready(function($) {
$('#hotel').val('" . $zakaz . "');
});
</script>
"
 
?>

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

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

Для K2 :

<?php
$option = JRequest::getVar( 'option', '', null, 'STRING');
$view = JRequest::getVar( 'view', '', null, 'STRING');
if ($option == 'com_k2' && $view == 'item'){
$id= JRequest::getVar( 'id', 0, null, 'INT');
 
// 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('id', 'title'));
$query->from('#__k2_items');
$query->where('id='.$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( 'zakaz', '', 'GET', 'STRING' );
//$zakaz = base64_decode($zakaz);
$zakaz = urldecode($zakaz);
 
}
 
echo "<script>
 
jQuery(document).ready(function($) {
$('#hotel').val('" . $zakaz . "');
});
</script>
"
 
?>

изменилось:

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

и

$query->from('#__k2_items');

 

Комментарии   

#9 claripuci 18.01.2018 08:39
Для материалов Joomla есть еще очень простой способ вставить заголовок в поле формы Chronoforms.
В настройках поля можно просто вставить в Value короткий код: " жаль что код не вставляется... если автору интересно, могу прислать. Моя почта "
Может кому пригодится...
И может, уважаемый автор напишет решение для К2 :)
#8 claripuci 18.01.2018 08:34
delete
#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 не работает (((( Случайно не знаете решения?

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