Контроллеры в клиентском разделе

Модератор
#
Re: Контроллеры в клиентском разделе
dogstudio,
внутри добавить отдельный if-else
#
Re: Контроллеры в клиентском разделе
Шедевральный ответ. Я вообще-то спрашивала, какое условие должно выполняться, если мы находимся в группе, и как получить название группы и инфосистемы. И заодно — когда будет подробное API, как у пятой версии. Или его вообще не будет?
http://superweb.pro/ — сайты на HostCMS под ключ
#
Re: Контроллеры в клиентском разделе
HostCMS писал(а):
я не совсем понимаю Ваш вопрос. limit указывает количество на страницу, offset — смещение (не путать с page) и определяется он в методе parseUrl().


Stepan0v писал(а):
Как изменить значение items_on_page (или itemsOnPage)?

Что именно тут не понятно?

Вероятно не понятно не в вопросе, а в пояснении.
Объясняю про страницы.
1) Элементов много → список разделен на страницы. Например, у меня 100 элементов.
2) В Структуре сайта в соответствующем разделе указан параметр "Число выводимых элементов на страницу" = 10, что соответствует параметру itemsOnPage. Исходя из этого параметра рассчитывается отображение страниц: количество страниц, количество элементов на странице, смещение для каждой страницы.
3) В итоге получаем 10 страниц:
Цитата:
1 страница: 1-10 элементы
2 страница: 11-20 элементы
...
10 страница: 91-100 элементы


4) в ТДС указан параметр limit(10).  Всё хорошо.

5) Я хочу изменить количество выводимых элементов. Для этого на странице у меня есть <select>. Я выбираю значение 20 и передаю его методом Post.
6) При перезагрузке страницы в ТДС я проверю Post-переменную и меняю значение limit(20)
7) После этого у меня становится 5 страниц (что логично при 100 элементах)
8) Элементы на страницах распределяются следующим образом:
Цитата:
1 страница: 1-20 элементы
2 страница: 11-31 элементы
3 страница: 21-41 элементы
...
5 страница: 51-70 элементы.

Т.е. offset рассчитывается не исходя из измененного limit(), а исходя из значения itemsOnPage. Но элементы выводятся исходя из limit(): количество страниц рассчитывается исходя из limit() и количество выводимых элементов на странице исходя из limit(), но смещение остается прежним - исходя из itemsOnPage.

Вы мне предлагаете вручную выставлять offset для каждой страницы вручную? Или я не правильно вас понял?
#
Re: Контроллеры в клиентском разделе
Stepan0v,
ответьте себе на вопрос что есть limit() а что есть offset()

а еще вопрос, вы limit устанавливаете в коде типовой или настройках типовой?
разработка сайтов, фирменных стилей, интерфейсов
#
Re: Контроллеры в клиентском разделе
dogstudio,
Цитата:
А как сюда добавить elseif(группа) — выводим название группы, elseif(корень ИС) — выводим название ИС?


if ($Informationsystem_Controller_Show->group)
{
   // выбрана группа
}
elseif($Informationsystem_Controller_Show->item)
{
   // выбран элемент
}
разработка сайтов, фирменных стилей, интерфейсов
Модератор
#
Re: Контроллеры в клиентском разделе
dogstudio писал(а):
Шедевральный ответ. Я вообще-то спрашивала, какое условие должно выполняться, если мы находимся в группе, и как получить название группы и инфосистемы.

Простите, Вы программист или где? Вы не можете написать элементарное if-else условие?! Тогда зачем Вы беретесь за программирование?!
dogstudio писал(а):
И заодно — когда будет подробное API, как у пятой версии. Или его вообще не будет?

Как Вы могли заметить за год тестирования, логика и API 6-й версии кардинально отличается от пятой. Те простыни методов вставки, обновления, выборки и т.п. заменены ORM, API давно доступно и там не будет того, что Вы ожидаете увидеть "как в пятой версии", т.к. такого кода просто нет.
Модератор
#
Re: Контроллеры в клиентском разделе
Stepan0v, toasterec прав. Расчеты происходят в методе parseUrl(), посмотрите его код, я уже выше писал, что в зависимости от limit и page происходит расчет offset и если после расчета Вы где-то там меняете limit, то пересчет никоим образом не произойдет.
#
Re: Контроллеры в клиентском разделе
если я правильно понял логику, то пересчет произойдет только в одном месте,
в настройках типовой
$Informationsystem_Controller_Show
   ->limit(Core_Array::get(Core_Page::instance()->libParams, 'itemsOnPage'))
   ->parseUrl();
разработка сайтов, фирменных стилей, интерфейсов
#
Re: Контроллеры в клиентском разделе
Помогите, не могу разобраться... На главной вывожу каталог и для категорий вывожу минимальную цену продукта в категории. Вот код из динамической страницы:

<?php
$oShop =Core_Entity::factory('Shop', 4);
$Shop_Controller_Show = new Shop_Controller_Show($oShop);
$Shop_Controller_Show
   ->limit($oShop->items_on_page)
->groupsProperties(TRUE)
->group('0')
   ->parseUrl();

$Shop_Controller_Show
   ->shopGroups()
   ->queryBuilder()
   ->select('shop_groups.*', array('MIN(shop_items.price)', 'price_from'))
   ->leftJoin('shop_items', 'shop_items.shop_group_id', '=', 'shop_groups.id')
   ->groupBy('shop_groups.id');

$Shop_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName("КаталогНаГлавной")
   )
   ->show();


Работает, выводит правильный результат, но потом, когда я в шаблон добавил в хеадер вывод корзины:
               $shop_entity = Core_Entity::factory('Shop', 4);

               $Shop_Cart_Controller_Show = new Shop_Cart_Controller_Show(
                  $shop_entity
               );

               $Shop_Cart_Controller_Show
                  ->xsl(
                     Core_Entity::factory('Xsl')->getByName('МагазинКорзинаКраткая')
                  )
                  ->couponText(isset($_SESSION) ? Core_Array::get($_SESSION, 'coupon_text') : '')
                  ->show();
               

У каталога перестал работать LeftJoin, тоесть он выводит категории но без минимальной цены. Что я не так делаю?
Модератор
#
Re: Контроллеры в клиентском разделе
а если прямо сейчас убрать Shop_Cart_Controller_Show, то снова заработает?
Как Вы проверяете, что "перестал работать LeftJoin".
Авторизация