Получение названия текущей группы или элемента ИС на php

#
Получение названия текущей группы или элемента ИС на php
Всем привет!

На разрабатываем сайте нужно в отдельном месте  вывести название структуры (если это не ИС), и если это ИС - либо группы либо элемента.

Вот код:



if (is_object(Core_Page::instance()->object) && get_class(Core_Page::instance()->object) == 'Informationsystem_Controller_Show') {
          
           if (Core_Page::instance()->object == 'item') {
            // ВЫВОД НАЗВАНИЯ ТЕКУЩЕГО ЭЛЕМЕНТА
           }

         if (Core_Page::instance()->object == 'item') {
            // ВЫВОД НАЗВАНИЯ ТЕКУЩЕЙ ГРУППЫ
         }
          
          }
          
          else {
          echo Core_Entity::factory('Structure', CURRENT_STRUCTURE_ID)->name;
          }
          



Вот и не могу понять как получить данные текущего элемента или группы, чтобы вывести их название

Помогите пожалуйста!
Модератор
#
Re: Получение названия текущей группы или элемента ИС на php
какие-то странные у вас проверки, я бы сказал неработающие
Core_Page::instance()->object == 'item'

проверяйте на Core_Page::instance()->object->item и Core_Page::instance()->object->group
см. http://www.hostcms.ru/documentation/modules/core/controllers/
"Передача контроллеру структуры идентификатора текущего инфоэлемента и группы"
похожая тема: http://www.hostcms.ru/forums/2/11595/

А как получить объект см. [url=/documentation/modules/core/orm/]ORM[/url]
собственно примерно как вы для структуры и получаете.
#
Re: Получение названия текущей группы или элемента ИС на php
Я посмотрел код ИС в демосайте, исправила свой код. Да, ошиблась. Вот итоговый код, работает. Посмотрите пожалуйста на логичность и правильность в рамках HostCMS,  нормально или можно как-то проще сделать? Ну и да, это я вывожу в макете сайта, если что.



<?
          
          // Если ИС
          if (is_object(Core_Page::instance()->object) && get_class(Core_Page::instance()->object) == 'Informationsystem_Controller_Show') {
          
           // Элемент
           if (Core_Page::instance()->object->item) {
            $oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item', Core_Page::instance()->object->item);
            echo $oInformationsystem_Item->name;
           }
          
           // Группа
           else if (Core_Page::instance()->object->group) {
            $oInformationsystem_Group = Core_Entity::factory('Informationsystem_Group', Core_Page::instance()->object->group);
            echo $oInformationsystem_Group->name;
           }
          // Корень ИС
           else {
             echo Core_Entity::factory('Structure', CURRENT_STRUCTURE_ID)->name;
           }
          
          }
          
          // Если обычная страница
          else {
          echo Core_Entity::factory('Structure', CURRENT_STRUCTURE_ID)->name;
          }
          
          ?>






Модератор
#
Re: Получение названия текущей группы или элемента ИС на php
<?php
// Если ИС
if (is_object(Core_Page::instance()->object)
   && get_class(Core_Page::instance()->object) == 'Informationsystem_Controller_Show')
{
   // Элемент
   if (Core_Page::instance()->object->item) {
      $oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item', Core_Page::instance()->object->item);
      echo htmlspecialchars($oInformationsystem_Item->name);
   }
   // Группа
   elseif (Core_Page::instance()->object->group) {
      $oInformationsystem_Group = Core_Entity::factory('Informationsystem_Group', Core_Page::instance()->object->group);
      echo htmlspecialchars($oInformationsystem_Group->name);
   }
   // Корень ИС
   else {
    echo htmlspecialchars(Core_Page::instance()->structure->name);
   }
}
// Если документ
else
{
   echo htmlspecialchars(Core_Page::instance()->structure->name);
}
?>
#
Re: Получение названия текущей группы или элемента ИС на php
Ага, поняла за htmlspecialchars )) Спасибо большое
#
Re: Получение названия текущей группы или элемента ИС на php
А можно к названию групп добавить  страницы(если это не первая), чтобы в результате получилось название группы - Страница
#
Re: Получение названия текущей группы или элемента ИС на php
Можно. Номер страницы должен быть в Core_Page::instance()->object->page  , если на странице инфо системы находитесь.
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Получение названия текущей группы или элемента ИС на php
Результат должен быть таким?
<?php
// Если ИС
if (is_object(Core_Page::instance()->object)
   && get_class(Core_Page::instance()->object) == 'Informationsystem_Controller_Show')
{
   // Элемент
   if (Core_Page::instance()->object->item) {
      $oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item', Core_Page::instance()->object->item);
      echo htmlspecialchars($oInformationsystem_Item->name);
   }
   // Группа
   elseif (Core_Page::instance()->object->group) {
      $oInformationsystem_Group = Core_Entity::factory('Informationsystem_Group', Core_Page::instance()->object->group);
         $pageName = Core_Array::get(Core_Page::instance()->libParams, 'page')
    ? Core_Array::get(Core_Page::instance()->libParams, 'page')
    : 'страница';
     $aTitle=$oInformationsystem_Group->name;
         if (Core_Page::instance()->object->page)
               {
                  array_unshift($aTitle, $pageName . ' ' . (Core_Page::instance()->object->page + 1));
               }
         echo $aTitle;
      }
   // Корень ИС
   else {
    echo htmlspecialchars(Core_Page::instance()->structure->name);
   }
}
// Если документ
else
{
   echo htmlspecialchars(Core_Page::instance()->structure->name);
}
?>
#
Re: Получение названия текущей группы или элемента ИС на php
maria.ats писал(а):
Результат должен быть таким?

Не совсем:
maria.ats писал(а):
$aTitle=$oInformationsystem_Group->name;
         if (Core_Page::instance()->object->page)
               {
                  array_unshift($aTitle, $pageName . ' ' . (Core_Page::instance()->object->page + 1));
               }
         echo $aTitle;

$aTitle - превращается в массив. Если вам так удобнее то правильнее делать так:
$pageName = 'страница';
// Разделитель в заголовке страницы
$pageSeparator = ' / ';
$aTitle[] = $oInformationsystem_Group->name;
if (Core_Page::instance()->object->page)
{
    array_unshift($aTitle, $pageName . ' ' . (Core_Page::instance()->object->pag + 1));
}
if (count($aTitle))
{
    $aTitle = array_reverse($aTitle);
    echo implode($pageSeparator, $aTitle);
}

Или так:
$aTitle = $oInformationsystem_Group->name;
if (Core_Page::instance()->object->page)
{
    echo ($aTitle .' / '. $pageName . ' ' . (Core_Page::instance()->object->pag + 1));
}

E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Получение названия текущей группы или элемента ИС на php
А как получить полный путь для текущей группы или элемента ИС?
Авторизация