Как реализовать случайное отображение элементов списка?

#
Как реализовать случайное отображение элементов списка?
Для прошлой версии был такой код, взято отсюда

<?php
$InformationSystem = new InformationSystem();
$property=array();
$property['OrderField'] = 'RAND()';
$InformationSystem-> ShowInformationSystem(1, 0, ‘СписокНовостей’, 10, 0, external_propertys, $property);
?>


А для HostCMS 6 как будет?
#
Re: Как реализовать случайное отображение элементов списка?
julia.tovar писал(а):
А для HostCMS 6 как будет?

if (Core::moduleIsActive('informationsystem'))
{
   // Новости
   $Informationsystem_Controller_Show = new Informationsystem_Controller_Show(
      Core_Entity::factory('Informationsystem', 1)
   );

   $Informationsystem_Controller_Show
      ->informationsystemItems()
      ->queryBuilder()
      ->clearOrderBy()
      ->orderBy('RAND()');

   $Informationsystem_Controller_Show
      ->xsl('СписокНовостей')
      ->groupsMode('none')
      ->itemsForbiddenTags(array('text'))
      ->group(FALSE)
      ->limit(10)
      ->itemsProperties(TRUE)
      ->calculateTotal(FALSE)      
      ->show();
}
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Как реализовать случайное отображение элементов списка?
Большое спасибо за помощь

У меня еще есть вопрос, чтобы не плодить темы, задам его здесь. Картинку меню взяла в этой теме.



На картинке видны вложенные страницы в раздел "Кухни".  Как можно реализовать публикацию ссылок всего второго уровня, на каждой странице второго уровня. Грубо говоря, если зайти на страницу "Мебельные ручки", на самой странице перед текстом должны быть все ссылки всего второго уровня раздела "Кухни" (Фотогалерея кухонь     Фасады из массива дерева       и т.д.) Ссылки должны быть только из раздела "Кухни". Если зайти на страницу другого раздела, там должны быть ссылки только своего раздела. По сути это меню, но в рамках только раздела. Надеюсь я понятно обьяснила   Мне очень сложно с XSLT, поэтому прошу помощи.
#
Re: Как реализовать случайное отображение элементов списка?
julia.tovar писал(а):
Картинку меню взяла в этой теме.

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


К большому сожалению там нет решения. Там решение для двухуровнего меню, которое выводится на всех страницах, всем скопом. А мне нужно, чтобы выводилось в теле самой страницы, то что я описала выше, ссылки только самого раздела и только на страницах данного раздела. Помогите пожалуйста, если возможно.
#
Re: Как реализовать случайное отображение элементов списка?
julia.tovar,
Структура зависит от того какие именно записи туда попадают. Также их необходимо обработать для показа в XSL шаблоне.
https://www.hostcms.ru/api6/class-Structure_Controller_Show.html есть доступные  методы:

  • showInformationsystemGroups(TRUE|FALSE) выводить связанные с узлом структуры группы информационной системы, по умолчанию FALSE
  • showInformationsystemItems(TRUE|FALSE) выводить связанные с узлом структуры информационные элементы, по умолчанию FALSE
  • showShopGroups(TRUE|FALSE) выводить связанные с узлом структуры группы магазина, по умолчанию FALSE
  • showShopItems(TRUE|FALSE) выводить связанные с узлом структуры товары, по умолчанию FALSE

Если это ИС то в XML попадают informationsystem_group,  informationsystem_item
Если это ИМ то в XML попадают shop_group, shop_item
Обратите внимание к примеру на использование шаблона в теме:
<ul class="dropdown-menu">
                  <xsl:apply-templates select="informationsystem_group[show=1]" mode="InfoSystem" />
               </ul>

Вы также можете использовать шаблон для 2,3,...N уровней.
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
$Structure_Controller_Show = new Structure_Controller_Show(
    Core_Entity::factory('Site', CURRENT_SITE));

$Structure_Controller_Show
    ->showInformationsystemGroups(TRUE)
    ->showInformationsystemItems(TRUE)
    ->menu(3)
    ->xsl(
        Core_Entity::factory('Xsl')->getByName('МенюРаздела')
    )
    ->show();
?>


С шаблоном XSLT у меня ничего не вышло. Не работает.
#
Re: Как реализовать случайное отображение элементов списка?
Решение в грубой форме вот такое:


<?php

$Structure_Controller_Show = new Structure_Controller_Show(
Core_Entity::factory('Site', CURRENT_SITE));

$Structure_Controller_Show->xsl(
Core_Entity::factory('Xsl')->getByName('СсылкиВПодгруппах')
)
   ->showInformationsystemGroups(TRUE)
   ->menu('3');
  
// Текущий узел структуры сайта
$oStructure = Core_Entity::factory('Structure', CURRENT_STRUCTURE_ID);

while ($oStructure->parent_id)
{
    $oStructure = $oStructure->getParent();
}

// Передадим контроллеру показа структуру ID верхнего корневого родительского узла
$Structure_Controller_Show
    ->parentId($oStructure->id)
    ->show();
?>
#
Re: Как реализовать случайное отображение элементов списка?
Милая девушка, ваше грубое решение выведет всю структуру узлов, а то что вы просили, если я правильно понял, выглядеть будет примерно так:


<?php
   $zapros = "SELECT parent_id FROM structures WHERE id=".CURRENT_STRUCTURE_ID;
   $core_db = Core_DataBase::instance()
       ->setQueryType(0)
       ->query($zapros);
   $new_row = $core_db->asAssoc()->result();
   
    $Structure_Controller_Show = new Structure_Controller_Show(
      Core_Entity::factory('Site', CURRENT_SITE)
   );
    $Structure_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName('ПравоеМеню')
   )
   ->parentId($new_row[0]['parent_id'])
   // Показывать группы информационных систем в карте сайта
   ->showInformationsystemGroups(TRUE)
   // Показывать элементы информационных систем в карте сайта
   ->showInformationsystemItems(TRUE)
   ->show();
?>


P.S> И на будущее учтите, здесь спрашивать бесполезно, если вы не уровень "HostCMS Корпорация" ! Разработчики не заинтересованы в продвижении своего продукта. Самое простое не реализовано, по сей день "Хлебные крошки" работают только на первом уровне, на втором, третьем и четвертом полная тишина, зато документация есть для ботанов На сегодняшний день на данном ресурсе слово "помощь" - это презренное слово, оно становится благородным только тогда, когда вы заплатите "бабки". Я наблюдал за вашим вопросом,  ждал, проснется у админа совесть помочь девушке или нет. Совесть у него так и не проснулась, а очень жаль. Выше опубликованное мое решение может и не корректное, зато будет работать, удачи вам !!!
Авторизация