О meta у ИС, ИЭ

#
О meta у ИС, ИЭ
Задал META у структуры, в корне ИС'мы в этой структуре выводится то что указано, но стоит зайти на страницу ИЭ то все три META становяться вида:
НазваниеИС - НазваниеИЭ


Что хотелось бы:
Хлебные крошки можно чтобы везде в TITLE были по всему сайту? а Description и Keywords брались из настроек соответственно раздела (структуры)

Чтобы получали вида:
TITLE стуктуры - НазваниеИС - НазваниеИЭ (или НазваниеИнфгруппы - НазваниеИС соответственно)

Даже скорей опустить НазваниеИС тк это прописывается в Структуре, то есть "Мой персональный сайт - Фото"


Имею Тип Дин Страницу:

Код

<?php

// Получаем информацию о текущем пользователе
if (class_exists('SiteUsers'))
{
   $SiteUsers = & singleton('SiteUsers');
   $site_user_id = $SiteUsers->GetCurrentSiteUser();
}
else
{
   $site_user_id = 0;
}

/* Массив внешних параметров, передаваемых в XML */
$external_propertys = array();

/* Добавление комментария */
// ShowAddComment == 1 - только авторизированные
// ShowAddComment == 2 - все
if (isset($_POST['add_comment'])
&& (($GLOBALS['LA']['ShowAddComment'] == 1 && $site_user_id > 0) || $GLOBALS['LA']['ShowAddComment'] == 2))
{
   $param['information_items_id'] = to_int($GLOBALS['InformationResult']['item_id']);

   /* XSL шаблон для отправки уведомления администратору о добавлении комментария */
   $param['admin_email_xsl'] = to_str($GLOBALS['LA']['xsl_admin_email']);

   $xsl_add_comment = to_str($GLOBALS['LA']['xsl_add_comment']);

   /* Режим добавления комментария:
   1 - публиковать сразу,
   0 - публиковать после проверки.*/
   if (to_bool($GLOBALS['LA']['TypeAddComment'])/* || $site_user_id > 0*/)
   {
      $param['status'] = 1;
   }
   else
   {
      $param['status'] = 0;
   }

   // Текст комментария
   $_POST['comment_text'] = nl2br(to_str($_POST['comment_text']));

   // Типографируем текст, если доступен модуль типографирования
   if (class_exists('typograph'))
   {
      $typograph = new typograph();
      $_POST['comment_text'] = $typograph->ProcessTypographic($_POST['comment_text']);
   }

   $param['comment_mail_type'] = to_int($GLOBALS['LA']['comment_mail_type']);

   // ID родительского комментария
   $param['comment_parent_id'] = to_int($_POST['comment_parent_id']);

   $param['comment_autor'] = to_str($_POST['comment_autor']);
   $param['comment_email'] = to_str($_POST['comment_email']);
   $param['comment_subject'] = to_str($_POST['comment_subject']);
   $param['comment_text'] = to_str($_POST['comment_text']);
   $param['comment_grade'] = to_int($_POST['comment_grade']);
   $param['allowable_tags'] = '<b><strong><i><u><strike><ul><ol><li>';

   ob_start();
   $GLOBALS['LA_InformationSystem']->ShowAddComment('УведомлениеДобавлениеКомментария', $param);
   $external_propertys[0]['xml_name'] = 'message';
   $external_propertys[0]['value'] = ob_get_clean();
}

$InformationSystem_id = to_int($GLOBALS['InformationSystem_id']);

// XSL шаблон для отображения списка элементов информационной системы
$xsl_list = to_str($GLOBALS['LA']['xsl_information_system_list']);

// XSL шаблон для отображения элемента информационной системы
$xsl_item = to_str($GLOBALS['LA']['xsl_information_item']);

$InformationResult = $GLOBALS['InformationResult'];

$count_external_propertys = count($external_propertys);

$external_propertys[$count_external_propertys]['xml_name'] = 'ОтображатьСсылкуНаАрхив';
$external_propertys[$count_external_propertys]['value'] = 0;


$external_propertys[++$count_external_propertys]['xml_name'] = 'ОтображатьСсылкиНаСледующиеСтраницы';
$external_propertys[$count_external_propertys]['value'] = 1;

// Массив дополнительных параметров
$property = array();

// Число элементов на страницу
if (isset($InformationResult['items_on_page']))
{
   if ($InformationResult['items_on_page'] !== true)
   {
      $InformationResult['items_on_page'] = to_int($InformationResult['items_on_page']);
   }
}
else
{
   $InformationResult['items_on_page'] = 10;
}

/* Номер, с которого начинается показ */
if (isset($InformationResult['items_begin']))
{
   $InformationResult['items_begin'] = to_int($InformationResult['items_begin']);
}
else
{
   $InformationResult['items_begin'] = 0;
}

/* Метод определения идентификатора информационной группы и идентификатора информационного элемента по значению URI */
//$result = $GLOBALS['LA_InformationSystem']->GetInformationFromPath($InformationSystem_id);

if ($GLOBALS['INFSYS_result'] != false)
{
   /* Вывод списка */
   if ($GLOBALS['INFSYS_result']['item'] == false)
   {
      // Если передано имя тэга - фильтруем
      if (isset($GLOBALS['INFSYS_result']['tag_name']))
      {
         $oTag = & singleton('Tag');

         $tag_row = $oTag->GetTagByName($GLOBALS['INFSYS_result']['tag_name']);

         $property['tags'] = array($tag_row['tag_id']);

         // При выводе тэгов вывод элементов ведется из всех групп
         $GLOBALS['INFSYS_result']['group'] = false;
      }



      // $property['xml_show_group_type'] = 'all';

      // Запрещаем передачу в XML свойств групп
      $property['xml_show_group_property'] = true;

      // Получаем список годов, для которых есть новости
      $query = "SELECT DISTINCT DATE_FORMAT(information_items_date, '%Y') as news_date FROM information_items_table
               WHERE information_systems_id = '1' AND information_items_status = '1'
               ORDER BY news_date DESC";

      $DataBase = & singleton ('DataBase');

      $result = $DataBase->select($query);
      $ExternalXml = new ExternalXml();

      $param_ext_xml = array();

      $year_ext_xml = array();
      $i = 0;

      while($row_date = mysql_fetch_assoc($result))
      {
         $year_ext_xml[$i]['xml_name'] = 'Год';
         $year_ext_xml[$i++]['value'] = intval($row_date['news_date']);
      }


      //$xmlData = $ExternalXml->GenXml($year_ext_xml, 1);

      $external_propertys[++$count_external_propertys]['xml_name'] = 'Годы';//$xmlData;
      $external_propertys[$count_external_propertys]['value'] = $year_ext_xml;


      // Передан год
      if (isset($GLOBALS['year']))
      {
         $element['type'] = 0;
         $element['prefix'] = ' AND ';
         $element['name'] = 'information_items_date';
         $element['if'] = '>=';
         $element['value'] = $GLOBALS['year'] . '-01-01 00:00:00';
         $element['sufix']='';
         $property['select'][] = $element;

         $element['type'] = 0;
         $element['prefix'] = ' AND ';
         $element['name'] = 'information_items_date';
         $element['if'] = '<=';
         $element['value'] = $GLOBALS['year'] . '-12-31 23:59:59';
         $element['sufix']='';
         $property['select'][] = $element;

         $external_propertys[++$count_external_propertys]['xml_name'] = 'ТекущийГод';
         $external_propertys[$count_external_propertys]['value'] = $GLOBALS['year'];


         $group_id = false;
      }
      else // Год не передан - отображаем по умолчанию
      {
         $group_id = $GLOBALS['INFSYS_result']['group'];
      }

      $property['GenXml_type'] = 1;

      /* Отображаем информационную систему */
      $GLOBALS['LA_InformationSystem']->ShowInformationSystem($InformationSystem_id, $group_id, $xsl_list, $InformationResult['items_on_page'], $InformationResult['items_begin'], $external_propertys, $property);
   }
   else
   {
      /* Определяем идентификатор информационного элемента */
      $item_id = $GLOBALS['LA_InformationSystem']->GetIdInformationItem($GLOBALS['INFSYS_result']['item'], $GLOBALS['INFSYS_result']['group'], $InformationSystem_id);

     $external_propertys = array();
$external_propertys[0]['xml_name'] = 'show_comments';

      if (to_bool($GLOBALS['LA']['ShowComments']))
      {
         $external_propertys[0]['value'] = '1';
      }
      else
      {
         $external_propertys[0]['value'] = '0';
      }

      // Кому разрешено добавление комментария
      $external_propertys['show_add_comments'] = to_int($GLOBALS['LA']['ShowAddComment']);

      $property['part'] = $GLOBALS['part_ii'];

      // Запрещаем передачу в XML свойств групп
      $property['xml_show_group_property'] = false;

      // Выводим элемент информационной системы
      // Для тех, кто поленился в структуре отредактировать и указать
      if (!isset($GLOBALS['LA']['CommentsOnPage']))
      {
         $GLOBALS['LA']['CommentsOnPage'] = 10;
      }

      $begin = to_int($GLOBALS['comment-page']);

      if ($begin <= 0)
      {
         $begin = 0;
         $param['begin'] = 0;
      }
      else
      {
         $begin--;
         $param['begin'] = $begin * to_int($GLOBALS['LA']['CommentsOnPage']);
      }

      $external_propertys['CommentsCurrentPage'] = $begin;

      $param['count'] = to_int($GLOBALS['LA']['CommentsOnPage']);
      $external_propertys['CommentsOnPage'] = $param['count'];

      // Выводим элемент информационной системы
      $GLOBALS['LA_InformationSystem']->ShowInformationSystemItem($item_id, $xsl_item, $external_propertys,
      $param);
   }
}
?>



Настройки

<?php

$kernel = & singleton('kernel');

/* ID Информационной системы */
$InformationSystem_id = to_int($GLOBALS['LA']['InformationSystemID']);

/* Количество записей на страницу */
$items_on_page = to_int($GLOBALS['LA']['ItemsOnPage']);

$GLOBALS['LA_InformationSystem'] = & singleton('InformationSystem');

if ($items_on_page !== true)
{
   $items_on_page = to_int($items_on_page);
}

$property = to_array($property);

/* Текстовая информация для указания номера страницы, например "страница" */
if (isset($GLOBALS['LA']['page']))
{
   $property['page'] = to_str($GLOBALS['LA']['page']);
}
else
{
   $property['page'] = 'страница';
}

/* Разделитель в заголовке страницы */
if (isset($GLOBALS['LA']['separator']))
{
   $property['separator'] = to_str($GLOBALS['LA']['separator']);
}
else
{
   $property['separator'] = ' / ';
}

$GLOBALS['InformationResult'] = array();

$break_if_path_not_found = false;

// Если указание на страницу - не прерываем определение

if (ereg ("^part-([0-9]*)$", end($GLOBALS['URL_ARRAY']), $regs) && to_int($regs[1]) > 0)
{
   $GLOBALS['part_ii'] = $regs[1];
}
else
{  
   $GLOBALS['part_ii'] = 1;
}

// Нумерация для комментариев
if (ereg ("^comment-page-([0-9]*)$", end($GLOBALS['URL_ARRAY']), $regs) && to_int($regs[1]) > 0)
{
   /* Страница умножается на кол-во элементов, выводимых на страницу */
   $break_if_path_not_found = false;
   $GLOBALS['comment-page'] = $regs[1];
}

/* получаем для пути ассоциативный массив с id группы и id/url элемента для данной инфосистемы */

$GLOBALS['INFSYS_result'] = $GLOBALS['LA_InformationSystem']->GetInformationFromPath($InformationSystem_id, '', $break_if_path_not_found);

/* Если путь существует */
if ($GLOBALS['INFSYS_result'])
{
   /* получаем массив с деревом от текущей группы до корня */
   $GLOBALS['LA_InformationSystem']->GetInformationGroupsForXml($GLOBALS['INFSYS_result']['group'], $InformationSystem_id);

   $group_path='';

   $mas_information_groups_for_xml=$GLOBALS['LA_InformationSystem']->get_mas_information_groups_for_xml();

   /* получаем данные о группе */
   $group_result=$GLOBALS['LA_InformationSystem']->SelectInformationGroups($GLOBALS['INFSYS_result']['group'], $InformationSystem_id);

   $row_group=mysql_fetch_assoc($group_result);

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

   /* цикл по массиву с деревом для формирования пути по группам */
   for($i = count($mas_information_groups_for_xml)-1; $i >= 0; $i--)
   {
      /* seo_title для группы пустое, то в заголовок подставляем название */

      if (trim($mas_information_groups_for_xml[$i]['information_groups_seo_title'])=='')
      {
         $group_path.=$property['separator'].$mas_information_groups_for_xml[$i]['information_groups_name'];
      }
      else
      {
         $group_path.=$property['separator'].$mas_information_groups_for_xml[$i]['information_groups_seo_title'];
      }
   }

   /* определяем название информационной системы */
   $row = $GLOBALS['LA_InformationSystem']->GetInformationSystem($InformationSystem_id);

   /* имя информационной системы */
   $InformationSystem_name = $row['information_systems_name'];

   /* Если вывод информационного элемента */
   if ($GLOBALS['INFSYS_result']['item'])
   {
      /* определяем id информационного элемента */
      $item_id = $GLOBALS['LA_InformationSystem']->GetIdInformationItem($GLOBALS['INFSYS_result']['item'], $GLOBALS['INFSYS_result']['group'], $InformationSystem_id);

      $GLOBALS['InformationResult']['item_id'] = $item_id;

      /* получаем данные об элементе */
      $row_item = $GLOBALS['LA_InformationSystem']->GetInformationSystemItem($item_id);

      if (class_exists('SiteUsers'))
      {
         $SiteUsers = & singleton('SiteUsers');
         $site_user_id = $SiteUsers->GetCurrentSiteUser();
      }
      else
      {
         $site_user_id = 0;
      }

      if ($GLOBALS['LA_InformationSystem']->GetAccessItem($site_user_id, $row_item['information_items_id'], $row_item))
      {
         /* проверяем если seo_title непустой, то в заголовок страницы подставляем его */
         if (trim($row_item['information_items_seo_title']) != '')
         {
            $item_name = $property['separator'].trim($row_item['information_items_seo_title']);
         }
         else
         {
            /* имя элемента */
            $item_name = $property['separator'].$row_item['information_items_name'];
         }
      }
   }
   else
   {
      /* Вывод информационной группы */

      /* Определяем номер страницы для показа */
      $end_array_item = end($GLOBALS['URL_ARRAY']);

      $page = to_str($end_array_item);

      if (ereg ("^page-([0-9]*)$", $page, $regs) && to_int($regs[1]) > 0)
      {
         /* Страница умножается на кол-во элементов, выводимых на страницу */
         $items_begin = ($regs[1] - 1) * $items_on_page;

         /* Если показываем группу, а не элемент, то указываем страницу (страница N), если она не первая */
         $page_number = "{$property['separator']}{$property['page']} {$regs[1]}";
        
         $pre_end_array_item = prev($GLOBALS['URL_ARRAY']);
        
         // Переданный в строке год
         if (to_int($pre_end_array_item) > 0)
         {
            $GLOBALS['year'] =  $pre_end_array_item;
         }
/*
         else // Текущий год
         {
            $GLOBALS['year'] = date('Y');
         }
*/
        
      }
      else
      {
         $items_begin = 0;
        
         $end_array_item = end($GLOBALS['URL_ARRAY']);
        
         // Переданный в строке год
         if (to_int($end_array_item) > 0)
         {
            $GLOBALS['year'] =  $end_array_item;
         }
         /*else // Текущий год
         {
            $GLOBALS['year'] = date('Y');
         }
*/
      }

      /* Массив, возвращаемый методом */
      $GLOBALS['InformationResult']['items_begin'] = $items_begin;
   }

   if (isset($GLOBALS['INFSYS_result']['tag_name']))
   {
      $tag_name = "Метка: {$GLOBALS['INFSYS_result']['tag_name']} {$property['separator']}";
   }

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

   $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)
      {
         $document = & singleton('documents');
         $documents_version_row = $document->GetCurrentDocumentVersion($structure_row['documents_id']);
         $documents_version_id = $documents_version_row['documents_version_id'];

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

         $kernel->set_current_page(CMS_FOLDER . "lib/lib_$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) && $GLOBALS['INFSYS_result']['group'] != 0 || !empty($tag_name) || !empty($page_number))
   {
      /* Заголовок для группы задан */
      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);
      }
   }
   elseif (isset($row_item)) /* отображаем элемент */
   {

      if (!empty($row_item['information_items_seo_description']))
      {
         $kernel->set_title(trim($row_item['information_items_seo_title']));
      }
      else
      {
         $kernel->set_title($new_title);
      }

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

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

$GLOBALS['InformationResult']['items_on_page'] = $items_on_page;
?>
ку
Модератор
#
Re: О meta у ИС, ИЭ
compaq писал(а):
Хлебные крошки можно чтобы везде в TITLE были по всему сайту?



Вам необходимо в приведенном выше коде настроек строку

$new_title = to_str($tag_name) . $InformationSystem_name . $group_path . to_str($item_name) . to_str($page_number);

заменить на

$structure = & singleton('Structure');
  
   $structure_name = $structure->GetStructureItem(CURRENT_STRUCTURE_ID);
      
   $new_title = $structure_name['structure_title'] . $property['separator'] . to_str($tag_name) .  $group_path . to_str($item_name) . to_str($page_number);

Авторизация