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


Добавляем код:
<?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');