Вывод простых данных кастомного модуля в административной части

Материал из Umicms
Версия от 13:02, 5 июня 2013; Mad grant (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

При разработке дополнительного модуля, не обязательно оперировать стандартными элементами данных UMI.CMS, такими как элементы (страницы) или объекты (пользователи, баннеры). Возможно выводить и другую информацию, полученную необходимым для вас способом. Рассмотрим системную страницу кастомного модуля:

/admin/mymodule/info/ ,

где info - метод дополнительного модуля mymodule, в файле classes/modules/mymodule/__admin.php.

Пример метода info():

    public function info() {
      $this->setDataType("list");
      $this->setActionType("view");
      $limit = 20;
      $curr_page = getRequest('p');
      $offset = $curr_page * $limit;
		
      $total = 2;
      //Формирование данных, которые будут в XML
      $items = Array();
      $item_arr_1['node:name'] = "name_1";
      $item_arr_1['attribute:value'] = 111;
      $item_arr_2['node:name'] = "name_2";
      $item_arr_2['attribute:value'] = 222;
      
      $items[] = $item_arr_1;
      $items[] = $item_arr_2;
      $data = array('nodes:element' => $items);
      $this->setData($data, $total);
      $this->setDataRangeByPerPage($limit, $curr_page);
      return $this->doData(); 
  }

XML-данные для данной страницы будут представлены в следующем виде:

<result module="mymodule" method="info" lang="ru" lang-id="1" domain-id="1"  user-id="14" request-uri="/admin/mymodule/info/">
  <data type="list" action="view" total="2" offset="0" limit="20">
    <element value="111">name_1</element>
    <element value="222">name_2</element>
  </data>
</result>

Создав шаблон /styles/skins/mac/data/modules/mymodule/list.view.xsl примерно следующего содержания:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="data" priority="1">
    <table border="1">
      <tr>
        <td>
          <xsl:text>Название элемента</xsl:text>
        </td>
        <td>
          <xsl:text>Значение</xsl:text>
        </td>
      </tr>
      <xsl:apply-templates select="element" mode="form-element"/>
    </table>
  </xsl:template>
  
  <xsl:template match="element" mode="form-element">
    <tr>
      <td>
        <xsl:value-of select="." />
      </td>
      <td>
        <xsl:value-of select="@value" />
      </td>
    </tr>
  </xsl:template>
  
</xsl:stylesheet>

На странице _http://sait.ru/admin/mymodule/info/ мы увидим табличное представление информации о двух элементах.