Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
МОДУЛЬ БЛОГИ. Картинка поста.

Автор alexРаздел Шаблоны XSLT

Ответов: 1
Просмотров: 2904
Последний ответ 11 Мая 2011, 19:46:44
от admin

0 Пользователей и 2 Гостей просматривают эту тему.

*

Byte

  • *
  • 32
  • +0/-0
    • Просмотр профиля
Продолжаю разрабатывать свой модуль, застопорился на выводе данных в xml виде, опять же делаю по примеру из доков, но почему-то макрос не выводит самих страниц, количество выводит, а итемы нет, вот код макроса:

public function allpages($template = "default") {
$sel = new selector('pages');
 if(!$template) $template = "default";

list($template_block, $template_line) = $this->loadTemplates("./tpls/MyPages/{$template}.tpl", "pages_block", "pages_block_line");

            $oHierarchy = umiHierarchy::getInstance();

            $per_page = 20;
            $curr_page = (int) getRequest('p');

            $block_arr = Array();
           
            $sel = new selector('pages');
            $sel->types('hierarchy-type')->name('MyPages', 'MyPage');
            $sel->limit($per_page, $curr_page);

            $result = $sel->result();
            $total = $sel->length();

            $lines = Array();
            foreach($result as $element_id) {
             
                $line_arr = Array();

                $element = $oHierarchy->getElement($element_id);
               
                $line_arr['attribute:id'] = $element_id;
                $line_arr['node:content'] = "This is item";
               
                templater::pushEditable("MyPages", "MyPage", $element_id);

                $lines[] = self::parseTemplate($template_line, $line_arr, $element_id);
            }
            $block_arr['subnodes:items'] = $lines;

            $block_arr['per_page'] = $per_page;
            $block_arr['total'] = $total;

            return self::parseTemplate($template_block, $block_arr);         
}

если это важно, то шаблон /tpls/MyPages/default.tpl существует, но он пуст

Буду всем благодарен за помощь =)

*

Byte

  • *
  • 32
  • +0/-0
    • Просмотр профиля
Re:В продолжение предыдущего поста
« Ответ #1 : 18 Мая 2013, 13:06:20 »
подозреваю, что $result = $sel->result(); почему-то возвращает пустой массив, а почему не знаю, ведь страницы есть и их количество макрос видит, ответ макрос дает такой:
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="MyPages" method="allpages" generation-time="0.001256">
  <items></items>
  <per_page>20</per_page>
  <total>3</total>
</udata>

*

Byte

  • *
  • 32
  • +0/-0
    • Просмотр профиля
Re:В продолжение предыдущего поста
« Ответ #2 : 18 Мая 2013, 14:39:05 »
Нашел причину выдачи пустого массива, непонятно почему, но мешала строка $sel->limit($per_page, $curr_page); когда ее убрал, итемы начали выводиться, но полезли ошибки, говорящие о том, что объект класса umiHierarhiElement не может быть преобразован в int, пока нашел только одно решение, получил id объекта , который служит источником данных для страницы (getObjectId()), функция выдала значение на 334 единицы больше, чем id страницы, соответственно я вычел эти 334 единицы и получил id объекта, таким образом это чудовище у меня заработало, но мое решение- костыль, если кто знает где я накривокосячил, ткните плиз носом.