Разные формы добаления объявления в доске объявлений, как сделать?

#
Разные формы добаления объявления в доске объявлений, как сделать?
Задача следующая:
Например есть магазин/доска объявлений Недвижимость - в ней/нем есть разделы:

Недвижимость Москвы
подразделы:
Агентства недвижимости Москвы
Квартиры в Москве

Недвижимость Петровска
Агентства недвижимости Петровска
Квартиры в Петровска

Так вот, для Квартир в москве и петровске должна быть одна форма для добавления объявления, а для агентства другая..

В динамической странице пробовал указать условие которое определяло бы в какой группе/подгруппе находимся и выдавало бы ту форму которая требуется, но застрял с определением группы и выводом нужной формы.



<?php
if(to_int($GLOBALS['shop_item_path']['group']) == 1 ||
to_int($GLOBALS['shop_item_path']['group']) == 2)
{
print("Форма для Агентств");
   ?>
<?php
      }
      ?>


<?php
if(to_int($GLOBALS['shop_item_path']['group']) == 3 ||
to_int($GLOBALS['shop_item_path']['group']) == 4)
{
print("Форма для Квартир");
   ?>
<?php
      }
      ?>



Если вставить сей код в "шаблон" то определение группы/подгруппы и вывод нужного кода работает, но мне необходимо, что бы это работало в "динамической странице". Вставляю в динамическую страницу "Доска объявлений", ничего не работает.

Прошу помочь с этим моментом....
#
Re: Разные формы добаления объявления в доске объявлений, как сделать?
Вопрос остается открытым...
Модератор
#
Re: Разные формы добаления объявления в доске объявлений, как сделать?
А Вы в поддержку такой же запрос не направляли? Я точно вчера на аналогичный отвечал

Перед этим кодом добавьте
print_r($GLOBALS['shop_item_path']);
и посмотрите через Firebug что выведется.
#
Re: Разные формы добаления объявления в доске объявлений, как сделать?
Добавил, выдает:
Array (     [group] =&gt; 0     [item] =&gt;  )
Модератор
#
Re: Разные формы добаления объявления в доске объявлений, как сделать?
ipsus,
значит Вы в корне. Это верно?
#
Re: Re: Разные формы добаления объявления в доске объявлений, как сделать?
Нет, в том то и дело, я нахожусь:
Недвижимость
- Недвижимость Анапы
  -- Агентства недвижимости Анапы
#
Re: Разные формы добаления объявления в доске объявлений, как сделать?
ipsus, такого быть не должно. Если вы распечатали массив $GLOBALS['shop_item_path'] в коде типовой динамической страницы, которая используются у вас для магазина "Недвижимость" и при этом находитесь в одной из групп этого магазина(например, "Агентства недвижимости Анапы", то в нем в качестве значения элемента $GLOBALS['shop_item_path']['group'] должен содержаться идентификатор текущей группы, а не 0. Поэтому сообщите адрес страницы сайта, соответствующей группе "Агентства недвижимости Анапы", а также данные доступа к разделу администрирования на адрес службы тех. поддержки.
#
Re: Разные формы добаления объявления в доске объявлений, как сделать?
День добрый.
Версия Версия HostCMS: 5.9.25
Доска объявлений на базе магазина.
Пытаюсь:
В настройках типовой дин страницы Доска объявлений, сделать вывод ЗАГОЛОВОК в виде формы с несколькими вариантами-Куплю, Продам, Меняю, чтобы пользователь мог выбрать.
Делаю так как код ниже, объявление добавляется, но после добавления постоянно крутится значек аякса.
Подскажите пожалуйста начинающему, где я ошибся?

<?php

/* Создаем экземпляр класса магазина (при создании устанавливаем флаг необходимости очистки cookie) */
$shop = & singleton('shop');

$kernel = & singleton('kernel');

$current_shop_id = to_int($GLOBALS['LA']['shop_id']);

// получаем для пути ассоциативный массив с id группы и id/url элемента
$GLOBALS['shop_item_path'] = $shop->GetItemPath($current_shop_id);

$shop_row = $shop->GetShop($current_shop_id);

// Массив разрешенных расширений при загрузке файла
$allow_ext = array('JPG', 'JPEG');

// Обработка AJAX-запроса при формирвоании формы для добавления объявления
if (isset ($_REQUEST['action']) && $_REQUEST['action'] == 'show_form_add_item' && isset ($_REQUEST['group_id']))
{
   // Формируем html-код формы добавления объявления
   ob_start();

   // Идентификатор текущей группы
   $current_group_id = to_int($_REQUEST['group_id']);

   $Captcha = new Captcha();
   $captcha_key = $Captcha->GetCaptchaID();

   $advertisement_title = '';
   $advertisement_price = '';
   $advertisement_text = '';
   $advertisement_email = '';
   $advertisement_fio = '';
   $advertisement_phone = '';
   $advertisement_elmail = '';
   $advertisement_title = '';
   
   ?><div class="comment">
<div class="tl"></div>
<div class="tr"></div>
<div class="bl"></div>
<div class="br"></div>


<form method="POST" action="./" enctype="multipart/form-data">
<table>
   <tr>
      <td>Заголовок<br />
            <FORM>
<SELECT NAME=advertisement_title>
<OPTION> Куплю
<OPTION> Продам
<OPTION> Меняю
</SELECT>
</FORM>

   </tr>
   
   <tr>
      <td>Цена<br />
      <input type="text" name="advertisement_price" size="70"
         value="<?php echo $advertisement_price;?>" /></td>
   </tr>
   <tr>
      <td>Текст объявления<br />
      <textarea name="advertisement_text" rows="5" cols="53"><?php echo $advertisement_text;?></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"
         value="<?php echo $advertisement_fio;?>" /></td>
   </tr>

   <tr>
      <td>Тел.<br />
      <input type="text" name="advertisement_phone" size="70"
         value="<?php echo $advertisement_phone;?>" /></td>
   </tr>

   

   <?php

   // Получаем список валют, используемых в доске объявлений
   $result_currency = $shop->GetAllCurrency();
   ?>
   <tr>
      <td>Валюта<br />
      <select name="advertisement_currency">
      <?php

      while ($row_currency = mysql_fetch_assoc($result_currency))
      {
         ?>
         <option value="<?php echo $row_currency['shop_currency_id'];?>"><?php echo $row_currency['shop_currency_international_name'];?></option>
         <?php
      }
      ?>
      </select></td>
   </tr>
   <?php

   // Получаем список дополнительных свойств группы магазина
   $group_propertys_result = $shop->GetPropertiesOfGroup($current_group_id, false, $current_shop_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_type'] != 2
            || $item_property['shop_list_of_properties_type'] == 2 && class_exists('lists')))
            {
               ?><tr><td><?php
               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<?php echo $item_property['shop_list_of_properties_id']?>" size="70" value="<?php echo htmlspecialchars(to_str($_REQUEST['shop_item_property'.$item_property['shop_list_of_properties_id']]))?>" />
                           <?php

                           break;
                     }

                  case 1 : // Файл
                     {
                        echo $item_property['shop_list_of_properties_name'];
                        ?> <br />
                        <input type="file" name="shop_item_property<?php echo $item_property['shop_list_of_properties_id']?>" size="59" /> <?php
                        break;
                     }
                  case 2 : // Список
                     {
                        if (class_exists('lists'))
                        {
                           $list = & singleton('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<?php echo $item_property['shop_list_of_properties_id']?>"><?php

                              while ($list_row = mysql_fetch_assoc($list_result))
                              {
                                 $selected = '';
                                 if ($list_row['lists_items_id'] == to_int($_REQUEST['shop_item_property'.$item_property['shop_list_of_properties_id']]))
                                 {
                                    $selected = ' selected="" ';
                                 }
                                 ?><option value="<?php echo $list_row['lists_items_id']?>" <?php echo $selected?>><?php echo $list_row['lists_items_value']?></option>
                              <?php
                              }
                           ?></select> <?php
                           }
                        }

                        break;
                     }
                  case 7 : // Флажок
                     {
                        if (isset ($_REQUEST['shop_item_property'.$item_property['shop_list_of_properties_id']]))
                        {
                           $checked = ' checked="" ';
                        }
                        else
                        {
                           $checked = '';
                        }
                        ?> <input type="checkbox" name="shop_item_property<?php echo $item_property['shop_list_of_properties_id']?>" <?php echo $checked?> /> <?php
                           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<?php echo $item_property['shop_list_of_properties_id']?>" size="70" /> <?php
                           break;
                     }
               }
               ?></td></tr><?php
            }
         }
      }
   }
   ?>
   <tr>
      <td>
      <div style="clear: both; padding-top: 3px;">Контрольные цифры:</div>
      <div style="float: left"><img style="border: 1px solid #000000"
         src="/captcha.php?get_captcha=<?php echo $captcha_key?>&amp;height=30&amp;width=100"
         title="Код подтверждения" name="captcha" /></div>
      <div id="captcha" style="clear: both;"><img style="border: 0px"
         src="/hostcmsfiles/images/refresh.gif" /> <a
         href="javascript:void(0);"
         onclick="ReNewCaptcha(<?php echo $captcha_key?>, 30);return false;">Показать
      другое число</a></div>
      <div style="float: left; margin-left: 5px;"><input type="text"
         name="captcha_keystring" /> <input type="hidden" name="captcha_key"
         value="<?php echo $captcha_key?>" size="15" /></div>
      <div id="captcha" style="clear: both;">Введите число, которое указано
      выше.</div>
      </td>
   </tr>
   <tr>
      <td><input type="submit" name="add_advertisement" value="Отправить"
         onclick="return AjaxSendForm(callbackfunction_SendFormItem, '', this)" /></td>
   </tr>
</table>
</form>
</div>
   <?php

   $form_add_advertisement = ob_get_clean();

   $JsHttpRequest = new JsHttpRequest('UTF-8');

   $GLOBALS['_RESULT'] = array (
      'result' => $form_add_advertisement
   );

   echo $JsHttpRequest->LOADER;
   exit ();
}

// Обработка добавления объявления
if (isset ($_REQUEST['add_advertisement']))
{
   ob_start();

   $Captcha = new Captcha();

   if (isset ($_REQUEST['captcha_key']) && isset ($_REQUEST['captcha_keystring']) && $Captcha->ValidCaptcha($_REQUEST['captcha_key'], $_REQUEST['captcha_keystring']))
   {
      $param = array ();

      $param['shops_id'] = $current_shop_id;
      $param['groups_id'] = $GLOBALS['shop_item_path']['group'];
      $param['name'] = htmlspecialchars(strip_tags(to_str($_POST['advertisement_title'])));
      $param['description'] = '';
      $param['shop_items_catalog_date_time'] = date('Y-m-d H:i:s');

      $param['text'] = nl2br(htmlspecialchars(strip_tags(to_str($_POST['advertisement_text']))));

      if (class_exists('typograph'))
      {
         $typograph = new typograph();
         $param['text'] = $typograph->ProcessTypographic($param['text'], true);
      }

      $price_val = str_replace(" ", "", to_str($_POST['advertisement_price']));

      $param['currency_id'] = intval($_POST['advertisement_currency']);
      $param['price'] = to_float($price_val);
      $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;

      if (class_exists("SiteUsers"))
      {
         /* Получаем id текущего пользователя сайта */
         $SiteUsers = & singleton('SiteUsers');
         $param['site_users_id'] = $SiteUsers->GetCurrentSiteUser();
      }
      else
      {
         $param['site_users_id'] = 0;
      }

      if (isset ($_FILES['advertisement_file']['name']))
      {
         $ext = $kernel->GetExtension($_FILES['advertisement_file']['name']);

         // Если расширение файла разрешено
         if (in_array(mb_strtoupper($ext), $allow_ext))
         {
            $param['path_source_big_image'] = to_str($_FILES['advertisement_file']['tmp_name']);
            $param['original_file_name_big_image'] = to_str($_FILES['advertisement_file']['name']);
            $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 ();
         $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'] = htmlspecialchars(strip_tags(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'] = htmlspecialchars(strip_tags(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'] = 385;
         $param['shop_properties_items_value'] = htmlspecialchars(strip_tags(to_str($_POST['advertisement_email'])));

         $shop->InsertPropertiesItem($param);

         // Получаем список дополнительных свойств раздела объявлений
         $group_propertys_result = $shop->GetPropertiesOfGroup($GLOBALS['shop_item_path']['group'], false, $current_shop_id);

         $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 = htmlspecialchars(strip_tags(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 // Доп. свойство - файл
                  {

               if (to_int($_FILES['shop_item_property'.$group_propertys_result[$i]]['size']) > 0)
               {
                  // Создаем директорию для хранения файла
                  $item_dir_path = CMS_FOLDER . $shop->GetItemDir($add_advertisement_id);
               
                     $ext = $kernel->GetExtension($_FILES['shop_item_property'.$group_propertys_result[$i]]['name']);

                     // Если расширение файла разрешено
                     if (in_array(mb_strtoupper($ext), $allow_ext))
                     {
                        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;

                        if(strlen($item_dir_path) > 0)
                        {
                           $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
                        {
                           $shop_properties_items_file = '';
                           $property_value = '';
                        }

                        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 = '';
                        }
                        }
                     }
                     else
                     {
                        $shop_properties_items_file = '';
                        $property_value = '';
                        $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);
               }
            }
         }

         // Отправка письма администратору
         $message = "Доброе время суток, уважаемый Администратор!\n\nНа доску объявлений была добавлена запись:\n";
         $message .= "Автор: ".strip_tags(to_str($_POST['advertisement_fio']))."\n";
         $message .= "E-mail: ".strip_tags(to_str($_POST['advertisement_email']))."\n";
         $message .= "Доска объявлений: ".to_str($shop_row['shop_shops_name'])."\n";

         $shop_group_row = $shop->GetGroup($GLOBALS['shop_item_path']['group']);
         $message .= "Раздел доски объявлений: ".to_str($shop_group_row['shop_groups_name'])."\n";

         $DateClass = new DateClass();
         $date = date('Y-m-d H:i:s');
         $message .= "Дата: ".$DateClass->datetime_format($date)."\n";
         $message .= "IP-адрес: ".to_str($_SERVER['REMOTE_ADDR'])."\n";
         $message .= "Заголовок: ".htmlspecialchars(strip_tags(to_str($_POST['advertisement_title'])))."\n";
         $message .= "Текст объявления: ".htmlspecialchars(strip_tags(to_str($_POST['advertisement_text'])));

         $subject = 'Новое объявление';

         $kernel->SendMailWithFile(EMAIL_TO, EMAIL_TO, $subject, $message, array (), 'text/plain');
            
         ?>
<div id="message"><tr>Спасибо, объявление добавлено!</tr></div>

<script type="text/javascript" language="JavaScript">
         var AddItemForm = document.getElementById('AddItemForm');
   
         if (AddItemForm)
         {
            // удаляем использованную форму добавления объявления
            AddItemForm.innerHTML = '';
         }
         </script>

         <?php
      }
   }
   else // Ввели неправильный код подтверждения
   {
      ?><div id="error">Вы ввели неправильный код подтверждения!</div>
      <script type="text/javascript" language="JavaScript">
      var captcha_key_input = document.getElementsByName('captcha_key');
      if (captcha_key_input[0])
      {
         ReNewCaptcha(captcha_key_input[0].value, 30);
      }
      </script>
      <?php
   }

   $message = ob_get_clean();

   $JsHttpRequest = new JsHttpRequest('UTF-8');

   $GLOBALS['_RESULT'] = array (
      'message' => $message
   );

   echo $JsHttpRequest->LOADER;
   exit();
}

/* Если путь существует */
if ($GLOBALS['shop_item_path'])
{
   $group_path = '';

   // получаем массив с деревом от текущей группы до корня
   $mas_groups_to_root = $shop->GetShopGroupsToRoot($GLOBALS['shop_item_path']['group'], $current_shop_id);

   // получаем данные о группе
   $row_group = $shop->GetGroup($GLOBALS['shop_item_path']['group']);

   // получаем данные из seo - полей для групп
   $seo_title = trim($row_group['shop_groups_seo_title']);
   $seo_description = trim($row_group['shop_groups_seo_description']);
   $seo_keywords = trim($row_group['shop_groups_seo_keywords']);

   // цикл по массиву с деревом для формирования пути по группам
   $count_groups = count($mas_groups_to_root);

   for ($i = $count_groups -1; $i >= 0; $i--)
   {

      if ($i < $count_groups -1)
      {
         $group_path .= ' - ';
      }

      if (trim($mas_groups_to_root[$i]['shop_groups_seo_title']) == '')
      {
         $group_path .= $mas_groups_to_root[$i]['shop_groups_name'];
      }
      else
      {
         $group_path .= $mas_groups_to_root[$i]['shop_groups_seo_title'];
      }
   }

   $item_name = '';

   /* Если вывод информационного элемента */

   if ($GLOBALS['shop_item_path']['item'])
   {
      // получаем данные о товаре
      $row_item = $shop->GetItem($GLOBALS['shop_item_path']['item']);

      // имя элемента
      $item_name = $row_item['shop_items_catalog_name'];

      // проверяем если seo_title непустой, то в заголовок страницы подставляем его

      if (trim($row_item['shop_items_catalog_seo_title']) != '')
      {
         $item_name = trim($row_item['shop_items_catalog_seo_title']);
      }

      if ($group_path != '')
      {
         $item_name = ' - '.$item_name;
      }
   }

   /* формируем заголовок страницы */
   $new_title = $group_path.$item_name;
}
else
{
   // Элемент/группа не найдены, возвращаем 404 ошибку.
   ShowHeader404();

   // Запрещаем отдавать 200-й заголовок
   if (!defined('IS_ERROR_404'))
   {
      define('IS_ERROR_404', true);
   }
   
   $site = & singleton('site');
   $site_row = $site->GetSite(CURRENT_SITE);

   if ($site_row['site_error404'])
   {
      $structure = & singleton('Structure');

      $structure_id = intval($site_row['site_error404']);
      $structure_row = $structure->GetStructureItem($structure_id);

      // Если тип - страница
      if ($structure_row['structure_type'] == 0)
      {
         $documents = & singleton('documents');
         $documents_version_row = $documents->GetCurrentDocumentVersion($structure_row['documents_id']);
         $documents_version_id = $documents_version_row['documents_version_id'];

         // Текущая страница
         $kernel->set_current_page($documents->GetDocumentVersionPath($documents_version_id));
      }
      elseif ($structure_row['structure_type'] == 1)
      {
         // Текущая страница - модуль
         $kernel->set_current_page($structure->GetStructureFilesPath() . "/Structure{$structure_id}.php");
      }
      else
      {
         // Типовая динамическая страница
         $lib_id = intval($structure_row['lib_id']);

         // Получаем параметры типовой динамической страницы
         $lib = new lib();
         $GLOBALS['LA'] = $lib->LoadLibPropertiesValue($lib_id, $structure_id);

         $kernel->set_current_page($lib->GetLibPath($lib_id) . "/lib_{$lib_id}.php");
      }

      // Шаблон вывода для страницы
      $kernel->set_current_page_data_template($structure_row['data_templates_id']);
   }
   elseif (to_str($_SERVER['REQUEST_URI']) != '/')
   {
      header('Location: /');

      // Прекращаем выполнение
      exit();
   }
}

if (!empty ($new_title))
{
   // отображаем группу

   if (!isset ($row_item))
   {
      // Заголовок для группы задан

      if (!empty ($seo_title))
      {
         $kernel->set_title($seo_title);
      }
      else // Описание для группы не задано
      {
         $kernel->set_title($new_title);
      }

      // Описание для группы задано

      if (!empty ($seo_description))
      {
         $kernel->set_description($seo_description);
      }
      else // Описание для группы не задано
      {
         $kernel->set_description($new_title);
      }
      // Ключевые слова для группы заданы

      if (!empty ($seo_keywords))
      {
         $kernel->set_keywords($seo_keywords);
      }
      else // Ключевые слова для группы не заданы
      {
         $kernel->set_keywords($new_title);
      }
   }
   else // отображаем элемент
   {
      // Описание для элемента задано

      if (!empty ($row_item['shop_items_catalog_seo_title']))
      {
         $kernel->set_title(trim($row_item['shop_items_catalog_seo_title']));
      }
      else // Описание для элемента не задано
      {
         $kernel->set_title($new_title);
      }

      // Описание для элемента задано

      if (!empty ($row_item['shop_items_catalog_seo_description']))
      {
         $kernel->set_description(trim($row_item['shop_items_catalog_seo_description']));
      }
      else // Описание для элемента не задано
      {
         $kernel->set_description($new_title);
      }

      // Ключевые слова для элемента заданы

      if (!empty ($row_item['shop_items_catalog_seo_keywords']))
      {
         $kernel->set_keywords(trim($row_item['shop_items_catalog_seo_keywords']));
      }
      else // Ключевые слова для элемента не заданы
      {
         $kernel->set_keywords($new_title);
      }
   }
}
?>

Авторизация