Вопрос по фильтрам - реализация
Вернуть хлебные крошки не получается, если меняем на
То, структура папок не выводить, но и хлебных крошек нет.
$param['xml_show_group_type'] = 'none';
То, структура папок не выводить, но и хлебных крошек нет.
Обнаружилась ещё одна проблема, куда бы не переходили, по рубрикам Доски Объявлений, всё равно отображается список со всеми объявлениями.
CCron, для реализации подобной сортировки(т.е. по доп. свойству и основному одновременно) вместо кода:
используйте:
// Сортируем как строку
$param['items_field_order'] = ' shop_properties_items_table.shop_properties_items_value';
$param['items_order'] = 'DESC';
$param['items_field_order'] = ' shop_properties_items_table.shop_properties_items_value';
$param['items_order'] = 'DESC';
используйте:
// Сортируем как строку
$param['items_field_order'] = ' shop_properties_items_table.shop_properties_items_value DESC, shop_items_catalog_date_time';
$param['items_order'] = 'DESC';
$param['items_field_order'] = ' shop_properties_items_table.shop_properties_items_value DESC, shop_items_catalog_date_time';
$param['items_order'] = 'DESC';
Спасибо, сортировка по доп. свойству и основному одновременно.
Но всё равно везде вместо крошек и пункта подать объявление пусто.
Ксли ставим вместо $param['xml_show_group_type'] = 'none';
$param['xml_show_group_type'] = 'all'; то на месте где должны быть хлебные крошки и подача объявления, выводится вся структура папок Доски Объявлений.
И вместо объявлений из нужной рубрики выводятся все.
Но всё равно везде вместо крошек и пункта подать объявление пусто.
Ксли ставим вместо $param['xml_show_group_type'] = 'none';
$param['xml_show_group_type'] = 'all'; то на месте где должны быть хлебные крошки и подача объявления, выводится вся структура папок Доски Объявлений.
И вместо объявлений из нужной рубрики выводятся все.
$shop = & singleton('shop');
$param = array();
$external_propertys = array();
$param['current_group_id'] = false;
$param['xml_show_group_type'] = 'none';
$param['items_on_page'] = 20;
// Ограничение по доп. свойству
$element['type'] = 1; // 0 - основное св-во, 1 - дополнительное
$element['property_id'] = 212; // идентификатор доп. св-ва
$element['prefix'] = ' AND '; // префикс
$element['if'] = '!='; // Условие
$element['value'] = "''"; //
$element['sufix'] = '';
$param['select'][] = $element;
// Сортируем как строку
$param['items_field_order'] = ' shop_properties_items_table.shop_properties_items_value DESC, shop_items_catalog_date_time';
$param['items_order'] = 'DESC';
$param = array();
$external_propertys = array();
$param['current_group_id'] = false;
$param['xml_show_group_type'] = 'none';
$param['items_on_page'] = 20;
// Ограничение по доп. свойству
$element['type'] = 1; // 0 - основное св-во, 1 - дополнительное
$element['property_id'] = 212; // идентификатор доп. св-ва
$element['prefix'] = ' AND '; // префикс
$element['if'] = '!='; // Условие
$element['value'] = "''"; //
$element['sufix'] = '';
$param['select'][] = $element;
// Сортируем как строку
$param['items_field_order'] = ' shop_properties_items_table.shop_properties_items_value DESC, shop_items_catalog_date_time';
$param['items_order'] = 'DESC';
CCron, см. описание параметра $param['xml_show_group_type'] в API для метода ShowShop:
$param['xml_show_group_type'] - тип генерации XML для групп, может принимать значения:
all - все группы всех уровней;
none - не выбирать группы
...
Поэтому если вы передаете $param['xml_show_group_type'] = 'all', то в XML попадут все группы, а в XSL-шаблоне по умолчанию указан вывод всех подгрупп текущей группы.
В коде также присутствует параметр $param['current_group_id'] = false, который указывает методу на необходимость генерации XML для всех товаров магазина. Поэтому на сайте они отображаются все. Именно поэтому не отображаются хлебные крошки: они ведь генерируются относительно идентификатора текущей группы, а он равен значению false.
$param['xml_show_group_type'] - тип генерации XML для групп, может принимать значения:
all - все группы всех уровней;
none - не выбирать группы
...
Поэтому если вы передаете $param['xml_show_group_type'] = 'all', то в XML попадут все группы, а в XSL-шаблоне по умолчанию указан вывод всех подгрупп текущей группы.
В коде также присутствует параметр $param['current_group_id'] = false, который указывает методу на необходимость генерации XML для всех товаров магазина. Поэтому на сайте они отображаются все. Именно поэтому не отображаются хлебные крошки: они ведь генерируются относительно идентификатора текущей группы, а он равен значению false.
Изменил $param['current_group_id'] = false; на $param['current_group_id'] = $GLOBALS['shop_item_path']['group'];
Закоментировал $param['xml_show_group_type'] = 'none';
теперь отображаются хлебные крошки, выводятся объявления только текущей группы и отображается ссылка на "Добавить объявление в этот раздел". Если нажимаем на "Добавить объявление в этот раздел", то нечего не происходит.
Закоментировал $param['xml_show_group_type'] = 'none';
теперь отображаются хлебные крошки, выводятся объявления только текущей группы и отображается ссылка на "Добавить объявление в этот раздел". Если нажимаем на "Добавить объявление в этот раздел", то нечего не происходит.
Если нажимаем на "Добавить объявление в этот раздел", то нечего не происходит.
Консоль ошибок выдает следующее:
Начало js:
Консоль ошибок выдает следующее:
Ошибка: div is null
Источник:
Строка: 13
Источник:
Строка: 13
Начало js:
var prev_comment = 0;
// Ответ на комментарий
function cr(comment_id)
{
if (prev_comment && prev_comment != comment_id)
{
document.getElementById(prev_comment).style.display = 'none';
}
var div = document.getElementById(comment_id);
if (div.style.display != 'block')
{
div.style.display = 'block';
}
else
{
div.style.display = 'none';
}
prev_comment = comment_id;
}
var temp_ChildId = '';
var temp_CurrenElementId = '';
var menu_timeout_id = 0;
var filter_timeout_id = 0;
// Ответ на комментарий
function cr(comment_id)
{
if (prev_comment && prev_comment != comment_id)
{
document.getElementById(prev_comment).style.display = 'none';
}
var div = document.getElementById(comment_id);
if (div.style.display != 'block')
{
div.style.display = 'block';
}
else
{
div.style.display = 'none';
}
prev_comment = comment_id;
}
var temp_ChildId = '';
var temp_CurrenElementId = '';
var menu_timeout_id = 0;
var filter_timeout_id = 0;
<?
$xsl_catalog = to_str($GLOBALS['LA']['xsl_catalog']);
$xsl_item = to_str($GLOBALS['LA']['xsl_item']);
$current_shop_id = to_int($GLOBALS['LA']['shop_id']);
$param = array();
if ($GLOBALS['shop_item_path'] != false)
{
if (class_exists("SiteUsers"))
{
/* Получаем id текущего пользователя сайта */
$SiteUsers = & singleton('SiteUsers');
$param['user_id'] = $SiteUsers->GetCurrentSiteUser();
}
$external_propertys = array();
if (isset($_POST['submit_comment']))
{
// Проверяем CAPCHA
$Captcha = new Captcha();
if (isset($_POST['captcha_key']) && isset($_POST['captcha_keystring']))
{
$cpt = $Captcha->ValidCaptcha($_POST['captcha_key'], $_POST['captcha_keystring']);
}
else
{
$cpt = false;
}
if ($cpt)
{
$param['shop_items_catalog_item_id'] = to_int($_REQUEST['shop_items_catalog_item_id']);
$param['shop_comment_user_name'] = to_str($_REQUEST['shop_comment_user_name']);
$param['shop_comment_subject'] = to_str($_REQUEST['shop_comment_subject']);
$param['shop_comment_text'] = to_str($_REQUEST['shop_comment_text']);
$param['shop_comment_grade'] = to_int($_REQUEST['shop_comment_grade']);
$param['shop_comment_date_time'] = date("Y-m-d H:i:s");
/* Активность/неактивность комментария */
$shop_row = $GLOBALS['shops']->GetShop($current_shop_id);
if ($shop_row)
{
$param['shop_comment_active'] = to_int($shop_row['shop_comment_active']);
}
else
{
$param['shop_comment_active'] = false;
}
$external_propertys['comment_is_active'] = $param['shop_comment_active'];
$GLOBALS['shops']->InsertComment($param);
}
else
{
/* Неправильно введен код изображенный на картинке */
$external_propertys['error'] = 1;
/* Запоминаем значения */
$external_propertys['shop_comment_user_name'] = to_str($_REQUEST['shop_comment_user_name']);
$external_propertys['shop_comment_subject'] = to_str($_REQUEST['shop_comment_subject']);
$external_propertys['shop_comment_text'] = to_str($_REQUEST['shop_comment_text']);
$external_propertys['shop_comment_grade'] = to_int($_REQUEST['shop_comment_grade']);
$external_propertys['shop_comment_date_time'] = date("Y-m-d H:i:s");
}
}
// Обработка добавления объявления
if (isset($_POST['add_advertisement']))
{
$shop = new shop();
$param = array();
$param['shops_id'] = $current_shop_id;
$param['groups_id'] = $GLOBALS['shop_item_path']['group'];
$param['name'] = to_str($_POST['advertisement_title']);
$param['description'] = '';
$param['shop_items_catalog_date_time'] = date('Y-m-d H:i:s');
$param['text'] = to_str($_POST['advertisement_text']);
if (class_exists('typograph'))
{
$typograph = new typograph();
$param['text'] = $typograph->ProcessTypographic($param['text'], true);
}
$param['currency_id'] = 1;
$param['price'] = to_float($_POST['advertisement_price']);
$param['is_active'] = to_int($GLOBALS['LA']['shop_item_is_active']);
$param['order'] = 0;
$param['indexation'] =1;
$param['seo_title'] = $param['name'];
$param['seo_description'] = $param['name'];
$param['seo_keywords'] = $param['name'];
$param['shop_sallers_id'] = 0;
$param['path_source_big_image'] = to_str($_FILES['advertisement_file']['tmp_name']);
//$param['path_source_small_image'] = $param['path_source_big_image'];
$param['original_file_name_big_image'] = to_str($_FILES['advertisement_file']['name']);
//$param['path_target_big_image'] = $item_big_image;
//$param['path_target_small_image'] = $item_small_image;
$param['original_file_name_small_image'] = $param['original_file_name_big_image'];
$param['use_big_image'] = true;
$param['max_width_big_image'] = to_int($GLOBALS['LA']['max_width_big_image']);
$param['max_height_big_image'] = to_int($GLOBALS['LA']['max_height_big_image']);
$param['max_width_small_image'] = to_int($GLOBALS['LA']['max_width_small_image']);
$param['max_height_small_image'] = to_int($GLOBALS['LA']['max_height_small_image']);
$param['used_watermark_big_image'] = false;
$param['used_watermark_small_image'] = false;
$param['isset_big_image'] = false;
$add_advertisement_id = $shop->InsertItem($param);
if ($add_advertisement_id)
{
/*
$param = array();
$item_dir_path = CMS_FOLDER . UPLOADDIR . 'shop_' . $current_shop_id . '/item_catalog_' . $add_advertisement_id ;
// Не существует директории для объявления
if (!is_dir($item_dir_path))
{
mkdir($item_dir_path);
}
$kernel = & singleton('kernel');
$ext = $kernel->GetExtension(to_str($_FILES['advertisement_file']['name']));
if ($ext != '')
{
$ext = '.' . $ext;
}
$item_big_image = $item_dir_path . '/shop_items_catalog_image' . $add_advertisement_id . $ext;
$item_small_image = $item_dir_path . '/small_shop_items_catalog_image' . $add_advertisement_id . $ext;
$param_load_files = array();
$param_load_files['path_source_big_image'] = to_str($_FILES['advertisement_file']['tmp_name']);
$param_load_files['path_source_small_image'] = '';
$param_load_files['original_file_name_big_image'] = to_str($_FILES['advertisement_file']['name']);
$param_load_files['path_target_big_image'] = $item_big_image;
$param_load_files['path_target_small_image'] = $item_small_image;
$param_load_files['original_file_name_small_image'] = $param_load_files['original_file_name_big_image'];
$param_load_files['use_big_image'] = true;
$param_load_files['max_width_big_image'] = to_int($GLOBALS['LA']['max_width_big_image']);
$param_load_files['max_height_big_image'] = to_int($GLOBALS['LA']['max_height_big_image']);
$param_load_files['max_width_small_image'] = to_int($GLOBALS['LA']['max_width_small_image']);
$param_load_files['max_height_small_image'] = to_int($GLOBALS['LA']['max_height_small_image']);
$param_load_files['used_watermark_big_image'] = false;
$param_load_files['used_watermark_small_image'] = false;
$param_load_files['isset_big_image'] = false;
$result = $kernel->AdminLoadFiles($param_load_files);
if ($result['big_image'])
{
$param['image'] = basename($item_big_image);
}
if ($result['small_image'])
{
$param['image_small'] = basename($item_small_image);
}
// Создано малое и/или большое изображение
if ($result['big_image'] || $result['small_image'])
{
$param['item_id'] = $add_advertisement_id;
$shop->InsertItem($param);
}
*/
// Добавляем Дату и время добавления объявления
$param = array();
$param['shop_items_catalog_item_id'] = $add_advertisement_id;
$param['shop_list_of_properties_id'] = 61;
$param['shop_properties_items_value'] = date('d.m.Y H:i:s');
$shop->InsertPropertiesItem($param);
// Добавляем ФИО
$param = array();
$param['shop_items_catalog_item_id'] = $add_advertisement_id;
$param['shop_list_of_properties_id'] = 4;
$param['shop_properties_items_value'] = to_str($_POST['advertisement_fio']);
$shop->InsertPropertiesItem($param);
// Добавляем Телефон
$param = array();
$param['shop_items_catalog_item_id'] = $add_advertisement_id;
$param['shop_list_of_properties_id'] = 5;
$param['shop_properties_items_value'] = to_str($_POST['advertisement_phone']);
$shop->InsertPropertiesItem($param);
// Добавляем E-mail
$param = array();
$param['shop_items_catalog_item_id'] = $add_advertisement_id;
$param['shop_list_of_properties_id'] = 6;
$param['shop_properties_items_value'] = to_str($_POST['advertisement_email']);
$shop->InsertPropertiesItem($param);
// Получаем список дополнительных свойств раздела объявлений
$group_propertys_result = $shop->GetPropertiesOfGroup($GLOBALS['shop_item_path']['group']);
$count_group_propertys = count($group_propertys_result);
// Для группы существуют доп. свойства
if ($count_group_propertys)
{
// В цикле получаем подробную информацию о дополнительных свойствах группы
for ($i = 0; $i < $count_group_propertys; $i++)
{
if (isset($_POST['shop_item_property' . $group_propertys_result[$i]])
|| isset($_FILES['shop_item_property' . $group_propertys_result[$i]]))
{
if (isset($_POST['shop_item_property' . $group_propertys_result[$i]]))
{
$item_property = $shop->GetPropretyOfItems($group_propertys_result[$i]);
// Доп. свойство - нефлажок и нефайл
if ($item_property['shop_list_of_properties_type'] != 7 && $item_property['shop_list_of_properties_type'] != 2)
{
$property_value = to_str($_POST['shop_item_property' . $group_propertys_result[$i]]);
}
// Доп. свойство - флажок
elseif ($item_property['shop_list_of_properties_type'] == 7)
{
$property_value = 1;
}
// Доп. свойство - список
elseif ($item_property['shop_list_of_properties_type'] == 2)
{
$property_value = to_int($_POST['shop_item_property' . $group_propertys_result[$i]]);
}
$shop_properties_items_value_small = '';
$shop_properties_items_file = '';
$shop_properties_items_file_small = '';
}
else // Доп. свойство - файл
{
$item_dir_path = CMS_FOLDER . UPLOADDIR . 'shop_' . $current_shop_id . '/item_catalog_' . $add_advertisement_id;
$kernel = & singleton('kernel');
$ext = $kernel->GetExtension($_FILES['shop_item_property' . $group_propertys_result[$i]]['name']);
if ($ext != '')
{
$ext = '.' . $ext;
}
$property_big_file = $item_dir_path . '/shop_property_file_' . $add_advertisement_id . '_' . $group_propertys_result[$i] . $ext;
$property_small_file = $item_dir_path . '/small_shop_property_file_' . $add_advertisement_id . '_' . $group_propertys_result[$i] . $ext;
$param_load_files = array();
$param_load_files['path_source_big_image'] = $_FILES['shop_item_property' . $group_propertys_result[$i]]['tmp_name'];
$param_load_files['path_source_small_image'] = '';
$param_load_files['original_file_name_big_image'] = to_str($_FILES['shop_item_property' . $group_propertys_result[$i]]['name']);
$param_load_files['path_target_big_image'] = $property_big_file;
$param_load_files['path_target_small_image'] = $property_small_file;
$param_load_files['original_file_name_small_image'] = $param_load_files['original_file_name_big_image'];
$param_load_files['use_big_image'] = true;
$param_load_files['max_width_big_image'] = to_int($GLOBALS['LA']['max_width_big_image']);
$param_load_files['max_height_big_image'] = to_int($GLOBALS['LA']['max_height_big_image']);
$param_load_files['max_width_small_image'] = to_int($GLOBALS['LA']['max_width_small_image']);
$param_load_files['max_height_small_image'] = to_int($GLOBALS['LA']['max_height_small_image']);
$param_load_files['used_watermark_big_image'] = false;
$param_load_files['used_watermark_small_image'] = false;
$param_load_files['isset_big_image'] = false;
$result = $kernel->AdminLoadFiles($param_load_files);
if ($result['big_image'])
{
$shop_properties_items_file = basename($property_big_file);
$property_value = $param_load_files['original_file_name_big_image'];
}
else
{
$property_value = '';
$shop_properties_items_file = '';
}
if ($result['small_image'])
{
$shop_properties_items_value_small = $param_load_files['original_file_name_small_image'];
$shop_properties_items_file_small = basename($property_small_file);
}
else
{
$shop_properties_items_value_small = '';
$shop_properties_items_file_small = '';
}
}
$param = array();
$param['shop_items_catalog_item_id'] = $add_advertisement_id;
$param['shop_list_of_properties_id'] = $group_propertys_result[$i];
$param['shop_properties_items_value'] = $property_value;
$param['shop_properties_items_value_small'] = $shop_properties_items_value_small;
$param['shop_properties_items_file'] = $shop_properties_items_file;
$param['shop_properties_items_file_small'] = $shop_properties_items_file_small;
$shop->InsertPropertiesItem($param);
}
}
}
}
}
/* Вывод списка */
if (!$GLOBALS['shop_item_path']['item'])
{
$param['current_group_id'] = $GLOBALS['shop_item_path']['group']; // корневая группа
/* Определяем номер элемента, с которого начинается показ в текущей группе */
$page = end($GLOBALS['URL_ARRAY']);
$page = to_str($page);
$shop_row = $GLOBALS['shops']->GetShop($current_shop_id);
if ($shop_row)
{
$items_on_page = $shop_row['shop_items_on_page'];
}
else
{
$items_on_page = 10;
}
/*
Порядок сортировки ('Asc' - по возрастанию, 'Desc' - по убыванию, 'Rand' - произвольный порядок)
$param['items_order']='Asc';
Поле, по которому сортируем (наименование элемента)
$param['items_field_order']='shop_items_catalog_name';
*/
/* Ограничиваем по производителю */
if (to_int($_GET['producer_id']) > 0)
{
$element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
$element['name'] = 'shop_producers_list_id';
$element['prefix'] = 'AND'; // префикс
$element['if'] = '='; // Условие
$element['value'] = to_int($_GET['producer_id']);
$element['sufix'] = '';
$param['select'][] = $element;
$external_propertys['producer_id'] = to_int($_GET['producer_id']);
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
/* Ограничиваем по продавцу */
if (to_int($_GET['saller_id']) > 0)
{
$element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
$element['name'] = 'shop_sallers_id';
$element['prefix'] = 'AND'; // префикс
$element['if'] = '='; // Условие
$element['value'] = to_int($_GET['saller_id']);
$element['sufix'] = '';
$param['select'][] = $element;
$external_propertys['saller_id'] = to_int($_GET['saller_id']);
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
$price_from = str_replace(',', '.', to_float($_GET['price_from']));
/* Ограничиваем по цене ОТ */
if ($price_from > 0)
{
$element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
$element['name'] = 'shop_items_catalog_price';
$element['prefix'] = 'AND'; // префикс
$element['if'] = '>'; // Условие
$element['value'] = $price_from;
$element['sufix'] = '';
$param['select'][] = $element;
$external_propertys['price_from'] = $price_from;
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
$price_to = str_replace(',', '.', to_float($_GET['price_to']));
/* Ограничиваем по цене ДО */
if ($price_to > 0)
{
$element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
$element['name'] = 'shop_items_catalog_price';
$element['prefix'] = 'AND'; // префикс
$element['if'] = '<'; // Условие
$element['value'] = $price_to;
$element['sufix'] = '';
$param['select'][] = $element;
$external_propertys['price_to'] = $price_to;
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
/* Число элементов на странице */
$on_page = to_int($_GET['on_page']);
if ($on_page > 0 && $on_page < 150)
{
$param['items_on_page'] = $on_page;
$external_propertys['on_page'] = $on_page;
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
// Определяем номер страницы.
if ($on_page)
{
$items_on_page = $on_page;
}
if (ereg("^page-([0-9]*)$", $page, $regs) && to_int($regs[1]) > 1)
{
/* Страница умножается на кол-во элементов, выводимых на страницу */
$items_begin = ($regs[1] - 1) * $items_on_page;
}
else
{
$items_begin = 0;
}
$param['items_begin'] = $items_begin;
/* Направление сортировки, 0 - по-возрастанию, 1 - по-убыванию */
$order_direction = to_int($_GET['order_direction']);
switch ($order_direction)
{
case 1: /* По-возрастанию */
{
$order_direction = 'ASC';
break;
}
case 2: /* По-убыванию */
{
$order_direction = 'DESC';
break;
}
default: /* По-умолчанию */
{
$order_direction = 'ASC';
break;
}
}
/* Поле сортировки */
$sort_field = to_int($_GET['sort_by_field']);
switch ($sort_field)
{
case 1: /* По имени */
{
$param['items_field_order'] = 'shop_items_catalog_name';
$param['items_order'] = $order_direction;
$external_propertys['sort_by_field'] = $sort_field;
$external_propertys['order_direction'] = $order_direction;
break;
}
case 2: /* По цене */
{
$param['items_field_order'] = 'shop_items_catalog_price';
$param['items_order'] = $order_direction;
$external_propertys['sort_by_field'] = $sort_field;
$external_propertys['order_direction'] = $order_direction;
break;
}
}
/* Обработка дополнительных свойств.
Получаем список свойств, разрешенных для отображения в данной группе и в фильтре */
$shop = & singleton('shop');
$resource_properties = $shop->GetPropertiesOfGroupForXml($current_shop_id, $param['current_group_id']);
if ($resource_properties)
{
$element['type'] = 0; /* 0 - основное св-во, 1 - дополнительное */
/* Префикс, если нужен. */
$element['prefix'] = ' and ('; // префикс
/* ОСТАВЛЯЕТЕ БЕЗ ИЗМЕНЕНИЙ, ЭТО НУЖНО ДЛЯ СОРТИРОВКИ */
$element['name'] = ''; // Имя
/* поля для основного св-ва, если тип = 1, то не указывается */
$element['if'] = ''; // Условие
/* Вот здесь передается ID доп. св-ва, по которому производится сортировка.
ID ВАШЕГО ПОЛЯ УКАЗЫВАЕТЕ ЗДЕСЬ */
$element['value'] = ''; /* Значение поля (или параметра) */
$element['sufix']=' ';
/* Добавляем в общий список условий */
$param['select'][] = $element;
$count_condition = 0;
$property_xml = '';
$count_properties = mysql_num_rows($resource_properties);
for ($i = 0; $i < $count_properties; $i++)
{
$row = mysql_fetch_assoc($resource_properties);
$element['value'] = 0;
foreach ($_GET as $key => $value)
{
if (preg_match("/property_id_{$row['shop_list_of_properties_id']}_item_id_(\d*)/", $key, $matches))
{
$get_param = 'property_id_'.$row['shop_list_of_properties_id'].'_item_id_'.$matches[1];
if (isset($_GET[$get_param]) > 0 && to_int($matches[1]) > 0)
{
$element['value'] = to_int($matches[1]);
$external_propertys['property_id_'.to_int($row['shop_list_of_properties_id']).'_item_id_'.$element['value']] = $element['value'];
$property_xml .= '&property_id_'.to_int($row['shop_list_of_properties_id']).'_item_id_'.$element['value'].'='.$element['value'];
}
}
}
/* Выбираем режим отображения */
$get_param = 'property_id_'.$row['shop_list_of_properties_id'];
if (isset($_GET[$get_param]))
{
if ($row['shop_list_of_properties_type'] == 0 || $row['shop_list_of_properties_show_kind'] == 1)
{
if (to_str($_GET[$get_param]) ==! "")
{
$element['value'] = quote_smart(to_str($_GET[$get_param]));
$external_propertys['property_id_'.to_int($row['shop_list_of_properties_id'])] = $element['value'];
$property_xml .= '&property_id_'.to_int($row['shop_list_of_properties_id']).'='.$element['value'];
}
}
// Флажок
elseif($row['shop_list_of_properties_type'] == 7)
{
$element['value'] = 1;
$external_propertys['property_id_'.to_int($row['shop_list_of_properties_id'])] = $element['value'];
$property_xml .= '&property_id_'.to_int($row['shop_list_of_properties_id']).'='.$element['value'];
}
else
{
if (to_int($_GET[$get_param]) > 0)
{
$element['value'] = to_int($_GET[$get_param]);
$external_propertys['property_id_'.to_int($row['shop_list_of_properties_id'])] = $element['value'];
$property_xml .= '&property_id_'.to_int($row['shop_list_of_properties_id']).'='.$element['value'];
}
}
}
if ($element['value'])
{
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
$element['property_id'] = to_int($row['shop_list_of_properties_id']);
$element['type'] = 1; /* 0 - основное св-во, 1 - дополнительное */
//$element['prefix'] = 'AND'; /* префикс */
$element['if'] = '='; /* Условие */
$element['sufix'] = '';
if ($count_condition)
{
$element['prefix'] = ' or '; /* префикс */
}
else
{
$element['prefix'] = ' '; /* префикс */
}
++$count_condition;
$param['select'][] = $element;
}
}
if (!$count_condition)
{
$element['prefix'] = ' 1'; /* префикс */
}
else
{
$element['prefix'] = ''; // префикс
}
/* добавляем конечный элемент, содержащий HAVING */
$element['type'] = 0; /* 0 - основное св-во, 1 - дополнительное */
/* ОСТАВЛЯЕТЕ БЕЗ ИЗМЕНЕНИЙ, ЭТО НУЖНО ДЛЯ СОРТИРОВКИ */
$element['name'] = ''; /* Имя */
/* поля для основного св-ва, если тип = 1, то не указывается */
$element['if'] = ''; /* Условие */
/* Вот здесь передается ID доп. св-ва, по которому производится сортировка.
ID ВАШЕГО ПОЛЯ УКАЗЫВАЕТЕ ЗДЕСЬ */
$element['value'] = ''; // Значение поля (или параметра)
$having_count = '';
if ($count_condition != 0)
{
$having_count = 'GROUP BY shop_items_catalog_table.shop_items_catalog_item_id HAVING COUNT(shop_properties_items_table.shop_properties_items_id)= '.$count_condition.' ';
}
$element['sufix'] = ' ) ' . $having_count;
/* Добавляем в общий список условий */
$param['select'][] = $element;
}
if (!empty($property_xml))
{
$external_propertys['property_xml'] = $property_xml;
}
// Формируем html-код формы добавления объявления
ob_start();
// Идентификатор текущей группы
$current_group_id = $GLOBALS['shop_item_path']['group'];
$shop = & singleton('shop');
?>
<div id="FormAddAdvertisement" style="display: none">
<form method="POST" action="./" enctype="multipart/form-data">
<table>
<tr>
<td>
Заголовок<br />
<input type="text" name="advertisement_title" size="70" />
</td>
</tr>
<tr>
<td>
Цена<br />
<input type="text" name="advertisement_price" size="70" />
</td>
</tr>
<tr>
<td>
Текст объявления<br />
<textarea name="advertisement_text" rows="5" cols="53"></textarea>
</td>
</tr>
<tr>
<td>
Фото<br />
<input type="file" name="advertisement_file" size="59" />
</td>
</tr>
<tr>
<td>
ФИО<br />
<input type="text" name="advertisement_fio" size="70" />
</td>
</tr>
<tr>
<td>
Тел.<br />
<input type="text" name="advertisement_phone" size="70" />
</td>
</tr>
<tr>
<td>
E-mail<br />
<input type="text" name="advertisement_email" size="70" />
</td>
</tr>
<?
// Получаем список дополнительных свойств группы магазина
$group_propertys_result = $shop->GetPropertiesOfGroup($current_group_id);
$count_group_propertys = count($group_propertys_result);
// Для группы существуют доп. свойства
if ($count_group_propertys)
{
// В цикле получаем подробную информацию о дополнительных свойствах группы
for ($i = 0; $i < $count_group_propertys; $i++)
{
$item_property = $shop->GetPropretyOfItems($group_propertys_result[$i]);
if ($item_property)
{
if ($item_property['shop_list_of_properties_id'] !=61 && $item_property['shop_list_of_properties_id'] != 4
&& $item_property['shop_list_of_properties_id'] != 5
&& $item_property['shop_list_of_properties_id'] != 6 &&
($item_property['shop_list_of_properties_type'] != 2 || $item_property['shop_list_of_properties_type'] == 2 && class_exists('lists')))
{
?>
<tr>
<td>
<?
switch ($item_property['shop_list_of_properties_type'])
{
case 0: // Строка
case 3: // Большое текстовое поле
case 4: // Визуальный редактор
case 5: // Дата
case 6: // Дата-время
{
echo $item_property['shop_list_of_properties_name'];
?>
<br />
<input type="text" name="shop_item_property<?=$item_property['shop_list_of_properties_id']?>" size="70" />
<?
break;
}
case 1: // Файл
{
echo $item_property['shop_list_of_properties_name'];
?>
<br />
<input type="file" name="shop_item_property<?=$item_property['shop_list_of_properties_id']?>" size="59" />
<?
break;
}
case 2: // Список
{
if (class_exists('lists'))
{
$list = new lists();
$list_result = $list->SelectListsItems($item_property['lists_id']);
if ($list_result)
{
echo $item_property['shop_list_of_properties_name'];
?>
<br />
<select name="shop_item_property<?=$item_property['shop_list_of_properties_id']?>">
<?
while ($list_row = mysql_fetch_assoc($list_result))
{
?>
<option value="<?=$list_row['lists_items_id']?>"><?=$list_row['lists_items_value']?></option>
<?
}
?>
</select>
<?
}
}
break;
}
case 7: // Флажок
{
?>
<input type="checkbox" name="shop_item_property<?=$item_property['shop_list_of_properties_id']?>" />
<?
echo $item_property['shop_list_of_properties_name'];
break;
}
default:
{
echo $item_property['shop_list_of_properties_name'];
?>
<br />
<input type="text" name="shop_item_property<?=$item_property['shop_list_of_properties_id']?>" size="70" />
<?
break;
}
}
?>
</td>
</tr>
<?
}
}
}
}
?>
<tr>
<td><input type="submit" name="add_advertisement" value="Отправить" /></td>
</tr>
</table>
</form>
</div>
<?
$form_add_advertisement = ob_get_contents();
ob_get_clean();
$external_propertys['ФормаДобавленияОбъявления'] = $form_add_advertisement;
// Begin * Сортировка по типу объявления
$shop = & singleton('shop');
$param = array();
$external_propertys = array();
$param['current_group_id'] = $GLOBALS['shop_item_path']['group']; // Текущая группа
//$param['xml_show_group_type'] = 'none';
$param['items_on_page'] = 20;
// Ограничение по доп. свойству
$element['type'] = 1; // 0 - основное св-во, 1 - дополнительное
$element['property_id'] = 212; // идентификатор доп. св-ва
$element['prefix'] = ' AND '; // префикс
$element['if'] = '!='; // Условие
$element['value'] = "''"; //
$element['sufix'] = '';
$param['select'][] = $element;
// Сортируем как число
$param['items_field_order'] = ' CONVERT(shop_properties_items_table.shop_properties_items_value, UNSIGNED)';
$param['items_order'] = 'DESC';
// End * Сортировка по типу объявления
$GLOBALS['shops']->ShowShop($current_shop_id, $xsl_catalog, $param, $external_propertys);
}
else
{
/* Вывод конкретного элемент */
$GLOBALS['shops']->ShowItem($GLOBALS['shop_item_path']['item'], $xsl_item, $param, $external_propertys);
$Advertisement = new Advertisement();
$banner_group = 14;
$Advertisement->ShowBannerGroup($banner_group);
}
}
?>
$xsl_catalog = to_str($GLOBALS['LA']['xsl_catalog']);
$xsl_item = to_str($GLOBALS['LA']['xsl_item']);
$current_shop_id = to_int($GLOBALS['LA']['shop_id']);
$param = array();
if ($GLOBALS['shop_item_path'] != false)
{
if (class_exists("SiteUsers"))
{
/* Получаем id текущего пользователя сайта */
$SiteUsers = & singleton('SiteUsers');
$param['user_id'] = $SiteUsers->GetCurrentSiteUser();
}
$external_propertys = array();
if (isset($_POST['submit_comment']))
{
// Проверяем CAPCHA
$Captcha = new Captcha();
if (isset($_POST['captcha_key']) && isset($_POST['captcha_keystring']))
{
$cpt = $Captcha->ValidCaptcha($_POST['captcha_key'], $_POST['captcha_keystring']);
}
else
{
$cpt = false;
}
if ($cpt)
{
$param['shop_items_catalog_item_id'] = to_int($_REQUEST['shop_items_catalog_item_id']);
$param['shop_comment_user_name'] = to_str($_REQUEST['shop_comment_user_name']);
$param['shop_comment_subject'] = to_str($_REQUEST['shop_comment_subject']);
$param['shop_comment_text'] = to_str($_REQUEST['shop_comment_text']);
$param['shop_comment_grade'] = to_int($_REQUEST['shop_comment_grade']);
$param['shop_comment_date_time'] = date("Y-m-d H:i:s");
/* Активность/неактивность комментария */
$shop_row = $GLOBALS['shops']->GetShop($current_shop_id);
if ($shop_row)
{
$param['shop_comment_active'] = to_int($shop_row['shop_comment_active']);
}
else
{
$param['shop_comment_active'] = false;
}
$external_propertys['comment_is_active'] = $param['shop_comment_active'];
$GLOBALS['shops']->InsertComment($param);
}
else
{
/* Неправильно введен код изображенный на картинке */
$external_propertys['error'] = 1;
/* Запоминаем значения */
$external_propertys['shop_comment_user_name'] = to_str($_REQUEST['shop_comment_user_name']);
$external_propertys['shop_comment_subject'] = to_str($_REQUEST['shop_comment_subject']);
$external_propertys['shop_comment_text'] = to_str($_REQUEST['shop_comment_text']);
$external_propertys['shop_comment_grade'] = to_int($_REQUEST['shop_comment_grade']);
$external_propertys['shop_comment_date_time'] = date("Y-m-d H:i:s");
}
}
// Обработка добавления объявления
if (isset($_POST['add_advertisement']))
{
$shop = new shop();
$param = array();
$param['shops_id'] = $current_shop_id;
$param['groups_id'] = $GLOBALS['shop_item_path']['group'];
$param['name'] = to_str($_POST['advertisement_title']);
$param['description'] = '';
$param['shop_items_catalog_date_time'] = date('Y-m-d H:i:s');
$param['text'] = to_str($_POST['advertisement_text']);
if (class_exists('typograph'))
{
$typograph = new typograph();
$param['text'] = $typograph->ProcessTypographic($param['text'], true);
}
$param['currency_id'] = 1;
$param['price'] = to_float($_POST['advertisement_price']);
$param['is_active'] = to_int($GLOBALS['LA']['shop_item_is_active']);
$param['order'] = 0;
$param['indexation'] =1;
$param['seo_title'] = $param['name'];
$param['seo_description'] = $param['name'];
$param['seo_keywords'] = $param['name'];
$param['shop_sallers_id'] = 0;
$param['path_source_big_image'] = to_str($_FILES['advertisement_file']['tmp_name']);
//$param['path_source_small_image'] = $param['path_source_big_image'];
$param['original_file_name_big_image'] = to_str($_FILES['advertisement_file']['name']);
//$param['path_target_big_image'] = $item_big_image;
//$param['path_target_small_image'] = $item_small_image;
$param['original_file_name_small_image'] = $param['original_file_name_big_image'];
$param['use_big_image'] = true;
$param['max_width_big_image'] = to_int($GLOBALS['LA']['max_width_big_image']);
$param['max_height_big_image'] = to_int($GLOBALS['LA']['max_height_big_image']);
$param['max_width_small_image'] = to_int($GLOBALS['LA']['max_width_small_image']);
$param['max_height_small_image'] = to_int($GLOBALS['LA']['max_height_small_image']);
$param['used_watermark_big_image'] = false;
$param['used_watermark_small_image'] = false;
$param['isset_big_image'] = false;
$add_advertisement_id = $shop->InsertItem($param);
if ($add_advertisement_id)
{
/*
$param = array();
$item_dir_path = CMS_FOLDER . UPLOADDIR . 'shop_' . $current_shop_id . '/item_catalog_' . $add_advertisement_id ;
// Не существует директории для объявления
if (!is_dir($item_dir_path))
{
mkdir($item_dir_path);
}
$kernel = & singleton('kernel');
$ext = $kernel->GetExtension(to_str($_FILES['advertisement_file']['name']));
if ($ext != '')
{
$ext = '.' . $ext;
}
$item_big_image = $item_dir_path . '/shop_items_catalog_image' . $add_advertisement_id . $ext;
$item_small_image = $item_dir_path . '/small_shop_items_catalog_image' . $add_advertisement_id . $ext;
$param_load_files = array();
$param_load_files['path_source_big_image'] = to_str($_FILES['advertisement_file']['tmp_name']);
$param_load_files['path_source_small_image'] = '';
$param_load_files['original_file_name_big_image'] = to_str($_FILES['advertisement_file']['name']);
$param_load_files['path_target_big_image'] = $item_big_image;
$param_load_files['path_target_small_image'] = $item_small_image;
$param_load_files['original_file_name_small_image'] = $param_load_files['original_file_name_big_image'];
$param_load_files['use_big_image'] = true;
$param_load_files['max_width_big_image'] = to_int($GLOBALS['LA']['max_width_big_image']);
$param_load_files['max_height_big_image'] = to_int($GLOBALS['LA']['max_height_big_image']);
$param_load_files['max_width_small_image'] = to_int($GLOBALS['LA']['max_width_small_image']);
$param_load_files['max_height_small_image'] = to_int($GLOBALS['LA']['max_height_small_image']);
$param_load_files['used_watermark_big_image'] = false;
$param_load_files['used_watermark_small_image'] = false;
$param_load_files['isset_big_image'] = false;
$result = $kernel->AdminLoadFiles($param_load_files);
if ($result['big_image'])
{
$param['image'] = basename($item_big_image);
}
if ($result['small_image'])
{
$param['image_small'] = basename($item_small_image);
}
// Создано малое и/или большое изображение
if ($result['big_image'] || $result['small_image'])
{
$param['item_id'] = $add_advertisement_id;
$shop->InsertItem($param);
}
*/
// Добавляем Дату и время добавления объявления
$param = array();
$param['shop_items_catalog_item_id'] = $add_advertisement_id;
$param['shop_list_of_properties_id'] = 61;
$param['shop_properties_items_value'] = date('d.m.Y H:i:s');
$shop->InsertPropertiesItem($param);
// Добавляем ФИО
$param = array();
$param['shop_items_catalog_item_id'] = $add_advertisement_id;
$param['shop_list_of_properties_id'] = 4;
$param['shop_properties_items_value'] = to_str($_POST['advertisement_fio']);
$shop->InsertPropertiesItem($param);
// Добавляем Телефон
$param = array();
$param['shop_items_catalog_item_id'] = $add_advertisement_id;
$param['shop_list_of_properties_id'] = 5;
$param['shop_properties_items_value'] = to_str($_POST['advertisement_phone']);
$shop->InsertPropertiesItem($param);
// Добавляем E-mail
$param = array();
$param['shop_items_catalog_item_id'] = $add_advertisement_id;
$param['shop_list_of_properties_id'] = 6;
$param['shop_properties_items_value'] = to_str($_POST['advertisement_email']);
$shop->InsertPropertiesItem($param);
// Получаем список дополнительных свойств раздела объявлений
$group_propertys_result = $shop->GetPropertiesOfGroup($GLOBALS['shop_item_path']['group']);
$count_group_propertys = count($group_propertys_result);
// Для группы существуют доп. свойства
if ($count_group_propertys)
{
// В цикле получаем подробную информацию о дополнительных свойствах группы
for ($i = 0; $i < $count_group_propertys; $i++)
{
if (isset($_POST['shop_item_property' . $group_propertys_result[$i]])
|| isset($_FILES['shop_item_property' . $group_propertys_result[$i]]))
{
if (isset($_POST['shop_item_property' . $group_propertys_result[$i]]))
{
$item_property = $shop->GetPropretyOfItems($group_propertys_result[$i]);
// Доп. свойство - нефлажок и нефайл
if ($item_property['shop_list_of_properties_type'] != 7 && $item_property['shop_list_of_properties_type'] != 2)
{
$property_value = to_str($_POST['shop_item_property' . $group_propertys_result[$i]]);
}
// Доп. свойство - флажок
elseif ($item_property['shop_list_of_properties_type'] == 7)
{
$property_value = 1;
}
// Доп. свойство - список
elseif ($item_property['shop_list_of_properties_type'] == 2)
{
$property_value = to_int($_POST['shop_item_property' . $group_propertys_result[$i]]);
}
$shop_properties_items_value_small = '';
$shop_properties_items_file = '';
$shop_properties_items_file_small = '';
}
else // Доп. свойство - файл
{
$item_dir_path = CMS_FOLDER . UPLOADDIR . 'shop_' . $current_shop_id . '/item_catalog_' . $add_advertisement_id;
$kernel = & singleton('kernel');
$ext = $kernel->GetExtension($_FILES['shop_item_property' . $group_propertys_result[$i]]['name']);
if ($ext != '')
{
$ext = '.' . $ext;
}
$property_big_file = $item_dir_path . '/shop_property_file_' . $add_advertisement_id . '_' . $group_propertys_result[$i] . $ext;
$property_small_file = $item_dir_path . '/small_shop_property_file_' . $add_advertisement_id . '_' . $group_propertys_result[$i] . $ext;
$param_load_files = array();
$param_load_files['path_source_big_image'] = $_FILES['shop_item_property' . $group_propertys_result[$i]]['tmp_name'];
$param_load_files['path_source_small_image'] = '';
$param_load_files['original_file_name_big_image'] = to_str($_FILES['shop_item_property' . $group_propertys_result[$i]]['name']);
$param_load_files['path_target_big_image'] = $property_big_file;
$param_load_files['path_target_small_image'] = $property_small_file;
$param_load_files['original_file_name_small_image'] = $param_load_files['original_file_name_big_image'];
$param_load_files['use_big_image'] = true;
$param_load_files['max_width_big_image'] = to_int($GLOBALS['LA']['max_width_big_image']);
$param_load_files['max_height_big_image'] = to_int($GLOBALS['LA']['max_height_big_image']);
$param_load_files['max_width_small_image'] = to_int($GLOBALS['LA']['max_width_small_image']);
$param_load_files['max_height_small_image'] = to_int($GLOBALS['LA']['max_height_small_image']);
$param_load_files['used_watermark_big_image'] = false;
$param_load_files['used_watermark_small_image'] = false;
$param_load_files['isset_big_image'] = false;
$result = $kernel->AdminLoadFiles($param_load_files);
if ($result['big_image'])
{
$shop_properties_items_file = basename($property_big_file);
$property_value = $param_load_files['original_file_name_big_image'];
}
else
{
$property_value = '';
$shop_properties_items_file = '';
}
if ($result['small_image'])
{
$shop_properties_items_value_small = $param_load_files['original_file_name_small_image'];
$shop_properties_items_file_small = basename($property_small_file);
}
else
{
$shop_properties_items_value_small = '';
$shop_properties_items_file_small = '';
}
}
$param = array();
$param['shop_items_catalog_item_id'] = $add_advertisement_id;
$param['shop_list_of_properties_id'] = $group_propertys_result[$i];
$param['shop_properties_items_value'] = $property_value;
$param['shop_properties_items_value_small'] = $shop_properties_items_value_small;
$param['shop_properties_items_file'] = $shop_properties_items_file;
$param['shop_properties_items_file_small'] = $shop_properties_items_file_small;
$shop->InsertPropertiesItem($param);
}
}
}
}
}
/* Вывод списка */
if (!$GLOBALS['shop_item_path']['item'])
{
$param['current_group_id'] = $GLOBALS['shop_item_path']['group']; // корневая группа
/* Определяем номер элемента, с которого начинается показ в текущей группе */
$page = end($GLOBALS['URL_ARRAY']);
$page = to_str($page);
$shop_row = $GLOBALS['shops']->GetShop($current_shop_id);
if ($shop_row)
{
$items_on_page = $shop_row['shop_items_on_page'];
}
else
{
$items_on_page = 10;
}
/*
Порядок сортировки ('Asc' - по возрастанию, 'Desc' - по убыванию, 'Rand' - произвольный порядок)
$param['items_order']='Asc';
Поле, по которому сортируем (наименование элемента)
$param['items_field_order']='shop_items_catalog_name';
*/
/* Ограничиваем по производителю */
if (to_int($_GET['producer_id']) > 0)
{
$element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
$element['name'] = 'shop_producers_list_id';
$element['prefix'] = 'AND'; // префикс
$element['if'] = '='; // Условие
$element['value'] = to_int($_GET['producer_id']);
$element['sufix'] = '';
$param['select'][] = $element;
$external_propertys['producer_id'] = to_int($_GET['producer_id']);
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
/* Ограничиваем по продавцу */
if (to_int($_GET['saller_id']) > 0)
{
$element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
$element['name'] = 'shop_sallers_id';
$element['prefix'] = 'AND'; // префикс
$element['if'] = '='; // Условие
$element['value'] = to_int($_GET['saller_id']);
$element['sufix'] = '';
$param['select'][] = $element;
$external_propertys['saller_id'] = to_int($_GET['saller_id']);
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
$price_from = str_replace(',', '.', to_float($_GET['price_from']));
/* Ограничиваем по цене ОТ */
if ($price_from > 0)
{
$element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
$element['name'] = 'shop_items_catalog_price';
$element['prefix'] = 'AND'; // префикс
$element['if'] = '>'; // Условие
$element['value'] = $price_from;
$element['sufix'] = '';
$param['select'][] = $element;
$external_propertys['price_from'] = $price_from;
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
$price_to = str_replace(',', '.', to_float($_GET['price_to']));
/* Ограничиваем по цене ДО */
if ($price_to > 0)
{
$element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
$element['name'] = 'shop_items_catalog_price';
$element['prefix'] = 'AND'; // префикс
$element['if'] = '<'; // Условие
$element['value'] = $price_to;
$element['sufix'] = '';
$param['select'][] = $element;
$external_propertys['price_to'] = $price_to;
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
/* Число элементов на странице */
$on_page = to_int($_GET['on_page']);
if ($on_page > 0 && $on_page < 150)
{
$param['items_on_page'] = $on_page;
$external_propertys['on_page'] = $on_page;
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
// Определяем номер страницы.
if ($on_page)
{
$items_on_page = $on_page;
}
if (ereg("^page-([0-9]*)$", $page, $regs) && to_int($regs[1]) > 1)
{
/* Страница умножается на кол-во элементов, выводимых на страницу */
$items_begin = ($regs[1] - 1) * $items_on_page;
}
else
{
$items_begin = 0;
}
$param['items_begin'] = $items_begin;
/* Направление сортировки, 0 - по-возрастанию, 1 - по-убыванию */
$order_direction = to_int($_GET['order_direction']);
switch ($order_direction)
{
case 1: /* По-возрастанию */
{
$order_direction = 'ASC';
break;
}
case 2: /* По-убыванию */
{
$order_direction = 'DESC';
break;
}
default: /* По-умолчанию */
{
$order_direction = 'ASC';
break;
}
}
/* Поле сортировки */
$sort_field = to_int($_GET['sort_by_field']);
switch ($sort_field)
{
case 1: /* По имени */
{
$param['items_field_order'] = 'shop_items_catalog_name';
$param['items_order'] = $order_direction;
$external_propertys['sort_by_field'] = $sort_field;
$external_propertys['order_direction'] = $order_direction;
break;
}
case 2: /* По цене */
{
$param['items_field_order'] = 'shop_items_catalog_price';
$param['items_order'] = $order_direction;
$external_propertys['sort_by_field'] = $sort_field;
$external_propertys['order_direction'] = $order_direction;
break;
}
}
/* Обработка дополнительных свойств.
Получаем список свойств, разрешенных для отображения в данной группе и в фильтре */
$shop = & singleton('shop');
$resource_properties = $shop->GetPropertiesOfGroupForXml($current_shop_id, $param['current_group_id']);
if ($resource_properties)
{
$element['type'] = 0; /* 0 - основное св-во, 1 - дополнительное */
/* Префикс, если нужен. */
$element['prefix'] = ' and ('; // префикс
/* ОСТАВЛЯЕТЕ БЕЗ ИЗМЕНЕНИЙ, ЭТО НУЖНО ДЛЯ СОРТИРОВКИ */
$element['name'] = ''; // Имя
/* поля для основного св-ва, если тип = 1, то не указывается */
$element['if'] = ''; // Условие
/* Вот здесь передается ID доп. св-ва, по которому производится сортировка.
ID ВАШЕГО ПОЛЯ УКАЗЫВАЕТЕ ЗДЕСЬ */
$element['value'] = ''; /* Значение поля (или параметра) */
$element['sufix']=' ';
/* Добавляем в общий список условий */
$param['select'][] = $element;
$count_condition = 0;
$property_xml = '';
$count_properties = mysql_num_rows($resource_properties);
for ($i = 0; $i < $count_properties; $i++)
{
$row = mysql_fetch_assoc($resource_properties);
$element['value'] = 0;
foreach ($_GET as $key => $value)
{
if (preg_match("/property_id_{$row['shop_list_of_properties_id']}_item_id_(\d*)/", $key, $matches))
{
$get_param = 'property_id_'.$row['shop_list_of_properties_id'].'_item_id_'.$matches[1];
if (isset($_GET[$get_param]) > 0 && to_int($matches[1]) > 0)
{
$element['value'] = to_int($matches[1]);
$external_propertys['property_id_'.to_int($row['shop_list_of_properties_id']).'_item_id_'.$element['value']] = $element['value'];
$property_xml .= '&property_id_'.to_int($row['shop_list_of_properties_id']).'_item_id_'.$element['value'].'='.$element['value'];
}
}
}
/* Выбираем режим отображения */
$get_param = 'property_id_'.$row['shop_list_of_properties_id'];
if (isset($_GET[$get_param]))
{
if ($row['shop_list_of_properties_type'] == 0 || $row['shop_list_of_properties_show_kind'] == 1)
{
if (to_str($_GET[$get_param]) ==! "")
{
$element['value'] = quote_smart(to_str($_GET[$get_param]));
$external_propertys['property_id_'.to_int($row['shop_list_of_properties_id'])] = $element['value'];
$property_xml .= '&property_id_'.to_int($row['shop_list_of_properties_id']).'='.$element['value'];
}
}
// Флажок
elseif($row['shop_list_of_properties_type'] == 7)
{
$element['value'] = 1;
$external_propertys['property_id_'.to_int($row['shop_list_of_properties_id'])] = $element['value'];
$property_xml .= '&property_id_'.to_int($row['shop_list_of_properties_id']).'='.$element['value'];
}
else
{
if (to_int($_GET[$get_param]) > 0)
{
$element['value'] = to_int($_GET[$get_param]);
$external_propertys['property_id_'.to_int($row['shop_list_of_properties_id'])] = $element['value'];
$property_xml .= '&property_id_'.to_int($row['shop_list_of_properties_id']).'='.$element['value'];
}
}
}
if ($element['value'])
{
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
$element['property_id'] = to_int($row['shop_list_of_properties_id']);
$element['type'] = 1; /* 0 - основное св-во, 1 - дополнительное */
//$element['prefix'] = 'AND'; /* префикс */
$element['if'] = '='; /* Условие */
$element['sufix'] = '';
if ($count_condition)
{
$element['prefix'] = ' or '; /* префикс */
}
else
{
$element['prefix'] = ' '; /* префикс */
}
++$count_condition;
$param['select'][] = $element;
}
}
if (!$count_condition)
{
$element['prefix'] = ' 1'; /* префикс */
}
else
{
$element['prefix'] = ''; // префикс
}
/* добавляем конечный элемент, содержащий HAVING */
$element['type'] = 0; /* 0 - основное св-во, 1 - дополнительное */
/* ОСТАВЛЯЕТЕ БЕЗ ИЗМЕНЕНИЙ, ЭТО НУЖНО ДЛЯ СОРТИРОВКИ */
$element['name'] = ''; /* Имя */
/* поля для основного св-ва, если тип = 1, то не указывается */
$element['if'] = ''; /* Условие */
/* Вот здесь передается ID доп. св-ва, по которому производится сортировка.
ID ВАШЕГО ПОЛЯ УКАЗЫВАЕТЕ ЗДЕСЬ */
$element['value'] = ''; // Значение поля (или параметра)
$having_count = '';
if ($count_condition != 0)
{
$having_count = 'GROUP BY shop_items_catalog_table.shop_items_catalog_item_id HAVING COUNT(shop_properties_items_table.shop_properties_items_id)= '.$count_condition.' ';
}
$element['sufix'] = ' ) ' . $having_count;
/* Добавляем в общий список условий */
$param['select'][] = $element;
}
if (!empty($property_xml))
{
$external_propertys['property_xml'] = $property_xml;
}
// Формируем html-код формы добавления объявления
ob_start();
// Идентификатор текущей группы
$current_group_id = $GLOBALS['shop_item_path']['group'];
$shop = & singleton('shop');
?>
<div id="FormAddAdvertisement" style="display: none">
<form method="POST" action="./" enctype="multipart/form-data">
<table>
<tr>
<td>
Заголовок<br />
<input type="text" name="advertisement_title" size="70" />
</td>
</tr>
<tr>
<td>
Цена<br />
<input type="text" name="advertisement_price" size="70" />
</td>
</tr>
<tr>
<td>
Текст объявления<br />
<textarea name="advertisement_text" rows="5" cols="53"></textarea>
</td>
</tr>
<tr>
<td>
Фото<br />
<input type="file" name="advertisement_file" size="59" />
</td>
</tr>
<tr>
<td>
ФИО<br />
<input type="text" name="advertisement_fio" size="70" />
</td>
</tr>
<tr>
<td>
Тел.<br />
<input type="text" name="advertisement_phone" size="70" />
</td>
</tr>
<tr>
<td>
E-mail<br />
<input type="text" name="advertisement_email" size="70" />
</td>
</tr>
<?
// Получаем список дополнительных свойств группы магазина
$group_propertys_result = $shop->GetPropertiesOfGroup($current_group_id);
$count_group_propertys = count($group_propertys_result);
// Для группы существуют доп. свойства
if ($count_group_propertys)
{
// В цикле получаем подробную информацию о дополнительных свойствах группы
for ($i = 0; $i < $count_group_propertys; $i++)
{
$item_property = $shop->GetPropretyOfItems($group_propertys_result[$i]);
if ($item_property)
{
if ($item_property['shop_list_of_properties_id'] !=61 && $item_property['shop_list_of_properties_id'] != 4
&& $item_property['shop_list_of_properties_id'] != 5
&& $item_property['shop_list_of_properties_id'] != 6 &&
($item_property['shop_list_of_properties_type'] != 2 || $item_property['shop_list_of_properties_type'] == 2 && class_exists('lists')))
{
?>
<tr>
<td>
<?
switch ($item_property['shop_list_of_properties_type'])
{
case 0: // Строка
case 3: // Большое текстовое поле
case 4: // Визуальный редактор
case 5: // Дата
case 6: // Дата-время
{
echo $item_property['shop_list_of_properties_name'];
?>
<br />
<input type="text" name="shop_item_property<?=$item_property['shop_list_of_properties_id']?>" size="70" />
<?
break;
}
case 1: // Файл
{
echo $item_property['shop_list_of_properties_name'];
?>
<br />
<input type="file" name="shop_item_property<?=$item_property['shop_list_of_properties_id']?>" size="59" />
<?
break;
}
case 2: // Список
{
if (class_exists('lists'))
{
$list = new lists();
$list_result = $list->SelectListsItems($item_property['lists_id']);
if ($list_result)
{
echo $item_property['shop_list_of_properties_name'];
?>
<br />
<select name="shop_item_property<?=$item_property['shop_list_of_properties_id']?>">
<?
while ($list_row = mysql_fetch_assoc($list_result))
{
?>
<option value="<?=$list_row['lists_items_id']?>"><?=$list_row['lists_items_value']?></option>
<?
}
?>
</select>
<?
}
}
break;
}
case 7: // Флажок
{
?>
<input type="checkbox" name="shop_item_property<?=$item_property['shop_list_of_properties_id']?>" />
<?
echo $item_property['shop_list_of_properties_name'];
break;
}
default:
{
echo $item_property['shop_list_of_properties_name'];
?>
<br />
<input type="text" name="shop_item_property<?=$item_property['shop_list_of_properties_id']?>" size="70" />
<?
break;
}
}
?>
</td>
</tr>
<?
}
}
}
}
?>
<tr>
<td><input type="submit" name="add_advertisement" value="Отправить" /></td>
</tr>
</table>
</form>
</div>
<?
$form_add_advertisement = ob_get_contents();
ob_get_clean();
$external_propertys['ФормаДобавленияОбъявления'] = $form_add_advertisement;
// Begin * Сортировка по типу объявления
$shop = & singleton('shop');
$param = array();
$external_propertys = array();
$param['current_group_id'] = $GLOBALS['shop_item_path']['group']; // Текущая группа
//$param['xml_show_group_type'] = 'none';
$param['items_on_page'] = 20;
// Ограничение по доп. свойству
$element['type'] = 1; // 0 - основное св-во, 1 - дополнительное
$element['property_id'] = 212; // идентификатор доп. св-ва
$element['prefix'] = ' AND '; // префикс
$element['if'] = '!='; // Условие
$element['value'] = "''"; //
$element['sufix'] = '';
$param['select'][] = $element;
// Сортируем как число
$param['items_field_order'] = ' CONVERT(shop_properties_items_table.shop_properties_items_value, UNSIGNED)';
$param['items_order'] = 'DESC';
// End * Сортировка по типу объявления
$GLOBALS['shops']->ShowShop($current_shop_id, $xsl_catalog, $param, $external_propertys);
}
else
{
/* Вывод конкретного элемент */
$GLOBALS['shops']->ShowItem($GLOBALS['shop_item_path']['item'], $xsl_item, $param, $external_propertys);
$Advertisement = new Advertisement();
$banner_group = 14;
$Advertisement->ShowBannerGroup($banner_group);
}
}
?>
CCron, сообщите адрес страницы с данной проблемой, а также данные доступа к разделу администрирования на адрес службы тех. поддержки.
Авторизация