Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
По поводу модуля "Страница в PDF"

Автор pandusРаздел Настройка системы и модулей

Ответов: 6
Просмотров: 3588
Последний ответ 25 Января 2017, 18:03:01
от pandus
Работа модуля Обратная связь (вставка форм в контент сайта) при XSLT

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

Ответов: 8
Просмотров: 8216
Последний ответ 17 Октября 2012, 15:29:17
от admin
Вывод названия и иконки модуля в панели избранных модулей

Автор SeweryssРаздел Разработка модулей

Ответов: 5
Просмотров: 4961
Последний ответ 21 Февраля 2014, 19:46:41
от e.ioffe
форма создания новой темы для модуля форум

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

Ответов: 4
Просмотров: 4552
Последний ответ 13 Февраля 2013, 22:49:13
от Rodogor
Вопрос по выводу дочерних страниц модуля структура

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

Ответов: 5
Просмотров: 5646
Последний ответ 07 Марта 2014, 17:34:18
от e.ioffe

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

*

atach

  • ***
  • 165
  • +6/-0
    • Просмотр профиля
Вообщем ситуация такая. У меня почему то созданные вкладке не обрабатываются указанным листингом, а идет обработка по коду первой (дофолтной) вкладки ....

/* в class.php  объявляю вкладки в __construct */
$commonTabs = $this->getCommonTabs();
if($commonTabs) {
$commonTabs->add('lists');
$commonTabs->add('arrival');
}


/* Далее в __admin.php прописываю для каждой вкладки свой код */

        public function lists() {
$this->setDataType("list");
$this->setActionType("view");

if($this->ifNotXmlMode()) return $this->doData();

$limit = 20;
$curr_page = getRequest('p');
$offset = $curr_page * $limit;

$sel = new selector('pages');
$sel->types('hierarchy-type')->name('comtrade', 'basestorrage');
$sel->types('hierarchy-type')->name('comtrade', 'ordercat');
$sel->types('hierarchy-type')->name('comtrade', 'orderitem');
$sel->limit($offset, $limit);

selectorHelper::detectFilters($sel);

$data = $this->prepareData($sel->result, "pages");

$this->setData($data, $sel->length);
$this->setDataRangeByPerPage($limit, $curr_page);
return $this->doData();
}

public function arrival() {
$this->setDataType("list");
$this->setActionType("view");

if($this->ifNotXmlMode()) return $this->doData();

$limit = 20;
$curr_page = getRequest('p');
$offset = $curr_page * $limit;

$sel = new selector('pages');
$sel->types('hierarchy-type')->name('comtrade', 'basestorrage');
//$sel->types('hierarchy-type')->name('comtrade', 'ordercat');
//$sel->types('hierarchy-type')->name('comtrade', 'orderitem');
$sel->limit($offset, $limit);

selectorHelper::detectFilters($sel);

$data = $this->prepareData($sel->result, "pages");

$this->setData($data, $sel->length);
$this->setDataRangeByPerPage($limit, $curr_page);
return $this->doData();
}

в итоге всеравно всё обрабатывается как lists, если же удалить там код, то ошибка перехватывается :
"Произошли следующие ошибки: Запрашиваемый ресурс не существует"

Не могу понять почему обрабатывается всё по одному листингу кода

*

Aisamiery

  • **
  • 83
  • +7/-4
    • Просмотр профиля
А можно увидеть код метода?
public function getDatasetConfiguration($param = '')
из админ класса

*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Увидеть можно в любом модуле ЮМИ, например, форум имеет вкладки.
Помимо создания метода в классе нужно еще указать юми, что его следует вызывать. Для этого все их следует перечислить в getDatasetConfiguration. Фрагмент из работающего кастомного модуля:


public function getDatasetConfiguration($param = '') {


if ($param == 'authors') {//параметр передается из xslt-шаблона админки
$loadMethod = "authors";//метод, который надо вызвать
$type = 'author';//тип данных
$default = 'family[99px]|name[81px]|email[96px]|is_activated[100px]';//ширина колонок таблицы

//далее описывается формат отображения
//имя модуля и имя вызываемого метода
//возможные действия (у меня -  удалить и сменить активность)
//перечень свойств, которые не нужно отображать в таблице
return array(
'methods' => array(
array('title'=>getLabel('smc-load'), 'forload'=>true, 'module'=>'faq20', '#__name'=>$loadMethod),
array('title'=>getLabel('smc-delete'), 'module'=>'faq20', 'aliases'=>'tree_delete_element,author_del', '#__name'=>'author_del'),
array('title'=>getLabel('smc-activity'),'module'=>'faq20', '#__name'=>'author_activity', 'aliases' => 'tree_set_activity,author_activity')
),
'types' => array(
array('common' => 'true', 'id' => $type)
),
'stoplist' => array('title', 'h1', 'meta_keywords', 'meta_descriptions', 'menu_pic_ua', 'menu_pic_a', 'header_pic', 'more_params', 'robots_deny', 'is_unindexed', 'store_amounts', 'locktime', 'lockuser', 'anons', 'content', 'answer', 'rate_voters', 'rate_sum'),
'default' => $default
);
}
elseif ($param == 'experts') {
$loadMethod = "experts";
$type = 'author';
$default = 'family[99px]|name[81px]|email[96px]|is_activated[100px]';
..... то же, что и выше
}
elseif ($param == 'messages') {
....
}else {
.....
}
}
experts, authors -  это названия методов, отвечающих за вывод данных в конкртеную вкладку.
Плюс к этому в административных xslt-шаблонах нужно создать блок, отвечающий за отображение вкладки с указанием имени метода, например

<xsl:template match="result[@method = 'authors']/data">
<xsl:call-template name="ui-smc-table">
<xsl:with-param name="control-params">authors</xsl:with-param>
<xsl:with-param name="content-type">objects</xsl:with-param>
<xsl:with-param name="enable-objects-activity">1</xsl:with-param>
</xsl:call-template>
</xsl:template>