Создание собственного модуля (страницы) — различия между версиями
| VITL' (обсуждение | вклад)  (Новая страница: «Официальная информация по созданию модуля описана на сайте api.umi-cms.ru. Здесь представлена о…») | Alexei (обсуждение | вклад)  | ||
| (не показаны 3 промежуточные версии 2 участников) | |||
| Строка 1: | Строка 1: | ||
| − | Официальная информация по созданию модуля описана на сайте api.umi-cms.ru. Здесь | + | Официальная информация по созданию модуля описана на сайте [http://api.umi-cms.ru/ api.umi-cms.ru]. Здесь | 
| представлена обновленная информация по созданию модуля, который позволяет создавать | представлена обновленная информация по созданию модуля, который позволяет создавать | ||
| страницы своего типа и выводить потом содержание этих страниц на сайте. | страницы своего типа и выводить потом содержание этих страниц на сайте. | ||
| − | В директории classes/modules/ создаем папку modulelements, в которой   | + | В директории '''classes/modules/''' создаем папку '''modulelements''', в которой   | 
| создадим шесть файлов следующего содержания,   | создадим шесть файлов следующего содержания,   | ||
| '''class.php:''' | '''class.php:''' | ||
| Строка 312: | Строка 312: | ||
| $INFO['func_perms'] = ""; | $INFO['func_perms'] = ""; | ||
| − | $ | + | $COMPONENTS = array(); | 
| − | $ | + | |
| + | $COMPONENTS[0] = "./classes/modules/news/__admin.php"; | ||
| + | $COMPONENTS[1] = "./classes/modules/news/class.php"; | ||
| + | $COMPONENTS[2] = "./classes/modules/news/i18n.php"; | ||
| + | $COMPONENTS[3] = "./classes/modules/news/lang.php"; | ||
| + | $COMPONENTS[4] = "./classes/modules/news/permissions.php"; | ||
| Строка 323: | Строка 328: | ||
| $permissions = Array( | $permissions = Array( | ||
| 'view' => Array('groupelements', 'item_element', 'group', 'view', 'listGroup', 'listElements'),   | 'view' => Array('groupelements', 'item_element', 'group', 'view', 'listGroup', 'listElements'),   | ||
| − | 'lists' => Array('lists', ' | + | 'lists' => Array('lists', 'add', 'edit', 'del', 'groupelements.edit', 'item_element.edit', 'activity', 'publish') | 
| ); | ); | ||
| ?> | ?> | ||
| </source> | </source> | ||
| + | |||
| + | Обратите особое внимание на строки: | ||
| + | <pre> | ||
| + | 'groupelements.edit', 'item_element.edit', 'activity', 'publish' | ||
| + | </pre> | ||
| + | |||
| + | '''groupelements''' и '''item_element''' это методы из комбинаций модуль-метод: | ||
| + | <pre> | ||
| + | modulelements-groupelements | ||
| + | modulelements-item_element | ||
| + | </pre> | ||
| + | |||
| + | это иерархические типы данных, которые далее будут использоваться в настройках модуля "Шаблоны данных". | ||
| + | Если у какого-либо Пользователя или Группы пользователй, в настройках, будет стоять чекбокс | ||
| + | напротив группы прав ''''lists'''' ('Управление страницами'), то при создании страницы с иерархическим  | ||
| + | типом '''groupelements''' (Группа страниц) или '''item_element''' (Страница из группы), автоматически для создаваемой страницы проставятся полные права на данную страницу: Просмотр, Редактирование, Создание подстраницы, Удаление, Перемещение. | ||
| + | |||
| + | Данная запись: | ||
| + | <pre> | ||
| + | 'activity', 'publish' | ||
| + | </pre> | ||
| + | дает право на публикацию страниц, т.е. возможность сделать страницу активной. 'activity' необходим, чтобы менять активность страниц при их табличном отображении. | ||
| + | |||
| Файл '''i18n.php''': | Файл '''i18n.php''': | ||
| <source lang="php"> | <source lang="php"> | ||
| Строка 367: | Строка 395: | ||
| − | В папке /styles/skins/mac/data/modules/ создим папку modulelements, а в ней xsl шаблон list.view.xsl: | + | В папке '''/styles/skins/mac/data/modules/''' создим папку '''modulelements''', а в ней xsl шаблон '''list.view.xsl''': | 
| − | <source lang=" | + | <source lang="xml"> | 
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||
| <!DOCTYPE xsl:stylesheet SYSTEM "ulang://common/modulelements"> | <!DOCTYPE xsl:stylesheet SYSTEM "ulang://common/modulelements"> | ||
| − | + |   <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | |
| − | <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | + |     <xsl:template match="data" priority="1"> | 
| − | <xsl:template match="data" priority="1"> | + |       <div class="imgButtonWrapper" xmlns:umi="http://www.umi-cms.ru/TR/umi"> | 
| − | <div class="imgButtonWrapper" xmlns:umi="http://www.umi-cms.ru/TR/umi"> | + |         <a id="addCategory" href="{$lang-prefix}/admin/modulelements/add/{$param0}/groupelements/" class="type_select_gray"   | 
| − | <a id="addCategory" href="{$lang-prefix}/admin/modulelements/add/{$param0}/groupelements/" class="type_select_gray" umi:type="modulelements::groupelements"> | + |           umi:type="modulelements::groupelements"> | 
| − | <xsl:text>&label-add-list;</xsl:text> | + |           <xsl:text>&label-add-list;</xsl:text> | 
| − | </a> | + |         </a> | 
| − | + |         <a id="addObject" href="{$lang-prefix}/admin/modulelements/add/{$param0}/item_element/" class="type_select_gray"   | |
| − | <a id="addObject" href="{$lang-prefix}/admin/modulelements/add/{$param0}/item_element/" class="type_select_gray" umi:type="modulelements::item_element"> | + |           umi:type="modulelements::item_element"> | 
| − | <xsl:text>&label-add-item;</xsl:text> | + |           <xsl:text>&label-add-item;</xsl:text> | 
| − | </a> | + |         </a> | 
| − | </div> | + |       </div> | 
| − | + |       <xsl:call-template name="ui-smc-table"> | |
| − | <xsl:call-template name="ui-smc-table"> | + |         <xsl:with-param name="js-add-buttons"> | 
| − | <xsl:with-param name="js-add-buttons"><![CDATA[ | + |           <![CDATA[ createAddButton($('#addCategory')[0], oTable, '{$pre_lang}/admin/modulelements/add/{id}/groupelements/',   | 
| − | createAddButton($('#addCategory')[0], oTable, '{$pre_lang}/admin/modulelements/add/{id}/groupelements/', ['groupelements', true]); | + |           ['groupelements', true]); createAddButton($('#addObject')[0], oTable, '{$pre_lang}/admin/modulelements/add/{id}/item_element/', ['groupelements']); ]]> | 
| − | createAddButton($('#addObject')[0], oTable, '{$pre_lang}/admin/modulelements/add/{id}/item_element/', ['groupelements']); | + |         </xsl:with-param> | 
| − | ]]></xsl:with-param> | + |       </xsl:call-template> | 
| − | </xsl:call-template> | + |     </xsl:template> | 
| − | </xsl:template> | + |   </xsl:stylesheet> | 
| − | </xsl:stylesheet> | ||
| </source> | </source> | ||
| − | В папке clsses/modules/ создадим копию файла i18n.php и переименуем в i18n.ru.php. В файл i18n.ru.php необходимо добавить строку: | + | В папке '''clsses/modules/''' создадим копию файла '''i18n.php''' и переименуем в '''i18n.ru.php'''. В файл '''i18n.ru.php''' необходимо добавить строку: | 
| <source lang="php"> | <source lang="php"> | ||
| "module-modulelements" => "Модуль elements",   | "module-modulelements" => "Модуль elements",   | ||
| </source> | </source> | ||
| − | В папке /images/cms/admin/mac/icons/, в каждую из папок big, medium, small, необходимо добавить иконки нашего модуля | + | В папке '''/images/cms/admin/mac/icons/''', в каждую из папок '''big''', '''medium''', '''small''', необходимо добавить иконки нашего модуля | 
| − | с названием modulelements.png, можно использовать  | + | с названием modulelements.png, можно использовать иконку модуля content, т.е. content.png. | 
| − | В папку /images/cms/admin/mac/tree/ необходимо добавить иконки для каждого типа страниц, в данном случае: | + | В папку '''/images/cms/admin/mac/tree/''' необходимо добавить иконки для каждого типа страниц, в данном случае: | 
| ico_modulelements_groupelements.png и | ico_modulelements_groupelements.png и | ||
| ico_modulelements_item_element.png. | ico_modulelements_item_element.png. | ||
| Строка 408: | Строка 435: | ||
| Можно использовать иконки модулей контент (ico_content_.png) и каталог (ico_catalog_category.png). | Можно использовать иконки модулей контент (ico_content_.png) и каталог (ico_catalog_category.png). | ||
| − | Проинсталлируем наш модуль, для  | + | Проинсталлируем наш модуль, для этого зайдем в модуль Конфигурация, вкладка Модули. Пропишем путь к инсталляционному файлу: | 
| − | classes/modules/modulelements/install.php и нажмем кнопку "Установить". | + | |
| + | '''classes/modules/modulelements/install.php''' и нажмем кнопку "Установить". | ||
| − | После инсталляции модуля необходимо зайти в настройки пользователя Гость | + | После инсталляции модуля необходимо зайти в настройки пользователя "Гость" и в группе прав модуля "Модуль elements" поставить чебкос для поля "Просмотр страниц". | 
| − | |||
| − | и в группе прав модуля "Модуль elements" поставить чебкос для поля "Просмотр страниц". | ||
| Даллее заходим в настройки модуля "Шаблоны данных": | Даллее заходим в настройки модуля "Шаблоны данных": | ||
| /admin/data/config/ | /admin/data/config/ | ||
| − | и добавляем два новых типа: | + | и добавляем два новых иерархических типа: | 
| <pre> | <pre> | ||
| Название - Группа страниц | Название - Группа страниц | ||
| Строка 433: | Строка 459: | ||
| выбираем в одном случае "Группа страниц", а в другом "Страница из группы". | выбираем в одном случае "Группа страниц", а в другом "Страница из группы". | ||
| − | Если используются tpl шаблоны, то в папке tpls/modulelements/ создаем шаблон default.tpl c подобным содержанием: | + | Если используются tpl шаблоны, то в папке '''tpls/modulelements/''' создаем шаблон default.tpl c подобным содержанием: | 
| <pre> | <pre> | ||
| <?php | <?php | ||
| Строка 450: | Строка 476: | ||
| </pre> | </pre> | ||
| − | В клиентской части сайта, при переходе на страницу с типом groupelements, в файле classes/modules/modulelements/class.php будет отрабатываться метод groupelements(), при типе item_element - метод item_element(). | + | В клиентской части сайта, при переходе на страницу с типом groupelements, в файле '''classes/modules/modulelements/class.php''' будет отрабатываться метод '''groupelements()''', при типе item_element - метод '''item_element()'''. | 
| + | [[Категория:API]] | ||
Текущая версия на 11:45, 10 апреля 2015
Официальная информация по созданию модуля описана на сайте api.umi-cms.ru. Здесь представлена обновленная информация по созданию модуля, который позволяет создавать страницы своего типа и выводить потом содержание этих страниц на сайте.
В директории classes/modules/ создаем папку modulelements, в которой создадим шесть файлов следующего содержания, class.php:
<?php
class modulelements extends def_module {
public $per_page;
public function __construct() {
parent::__construct();
if(cmsController::getInstance()->getCurrentMode() == "admin") {
$configTabs = $this->getConfigTabs();
if ($configTabs) {
$configTabs->add("config");
}
$this->__loadLib("__admin.php");
$this->__implement("__modulelements");
} else {
$this->per_page = regedit::getInstance()->getVal("//modules/modulelements/per_page");
}
}
public function groupelements($path = "", $template = "default") {
if($this->breakMe()) return;
$element_id = cmsController::getInstance()->getCurrentElementId();
templater::pushEditable("modulelements", "groupelements", $element_id);
return $this->group($element_id, $template) . $this->listElements($element_id, $template);
}
public function item_element() {
if($this->breakMe()) return;
$element_id = (int) cmsController::getInstance()->getCurrentElementId();
return $this->view($element_id);
}
public function group($elementPath = "", $template = "default", $per_page = false) {
if($this->breakMe()) return;
$hierarchy = umiHierarchy::getInstance();
list($template_block) = def_module::loadTemplates("tpls/modulelements/{$template}.tpl", "group");
$elementId = $this->analyzeRequiredPath($elementPath);
$element = $hierarchy->getElement($elementId);
templater::pushEditable("modulelements", "groupelements", $element->id);
return self::parseTemplate($template_block, array('id' => $element->id), $element->id);
}
public function view($elementPath = "", $template = "default") {
if($this->breakMe()) return;
$hierarchy = umiHierarchy::getInstance();
list($template_block) = def_module::loadTemplates("tpls/modulelements/{$template}.tpl", "view");
$elementId = $this->analyzeRequiredPath($elementPath);
$element = $hierarchy->getElement($elementId);
templater::pushEditable("modulelements", "item_element", $element->id);
return self::parseTemplate($template_block, array('id' => $element->id), $element->id);
}
public function listGroup($elementPath, $template = "default", $per_page = false, $ignore_paging = false) {
// Код метода
}
public function listElements($elementPath, $template = "default", $per_page = false, $ignore_paging = false) {
// Код метода
}
public function config() {
return __modulelements::config();
}
public function getEditLink($element_id, $element_type) {
$element = umiHierarchy::getInstance()->getElement($element_id);
$parent_id = $element->getParentId();
switch($element_type) {
case "groupelements": {
$link_add = $this->pre_lang . "/admin/modulelements/add/{$element_id}/item_element/";
$link_edit = $this->pre_lang . "/admin/modulelements/edit/{$element_id}/";
return Array($link_add, $link_edit);
break;
}
case "item_element": {
$link_edit = $this->pre_lang . "/admin/modulelements/edit/{$element_id}/";
return Array(false, $link_edit);
break;
}
default: {
return false;
}
}
}
};
?>
Файл __admin.php:
<?php
abstract class __modulelements extends baseModuleAdmin {
public function config() {
$regedit = regedit::getInstance();
$params = array('config' => array('int:per_page' => NULL));
$mode = getRequest("param0");
if($mode == "do") {
$params = $this->expectParams($params);
$regedit->setVar("//modules/modulelements/per_page", $params['config']['int:per_page']);
$this->chooseRedirect();
}
$params['config']['int:per_page'] = (int) $regedit->getVal("//modules/modulelements/per_page");
$this->setDataType("settings");
$this->setActionType("modify");
$data = $this->prepareData($params, "settings");
$this->setData($data);
return $this->doData();
}
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('modulelements', 'groupelements');
$sel->types('hierarchy-type')->name('modulelements', 'item_element');
$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 add() {
$parent = $this->expectElement("param0");
$type = (string) getRequest("param1");
$mode = (string) getRequest("param2");
$this->setHeaderLabel("header-modulelements-add-" . $type);
$inputData = Array(	"type" => $type,
"parent" => $parent,
'type-id' => getRequest('type-id'),
"allowed-element-types" => Array('groupelements', 'item_element'));
if($mode == "do") {
$element_id = $this->saveAddedElementData($inputData);
if($type == "item") {
umiHierarchy::getInstance()->moveFirst($element_id, ($parent instanceof umiHierarchyElement)?$parent->getId():0);
}
$this->chooseRedirect();
}
$this->setDataType("form");
$this->setActionType("create");
$data = $this->prepareData($inputData, "page");
$this->setData($data);
return $this->doData();
}
public function edit() {
$element = $this->expectElement('param0', true);
$mode = (string) getRequest('param1');
$this->setHeaderLabel("header-modulelements-edit-" . $this->getObjectTypeMethod($element->getObject()));
$inputData = array(
'element'				=> $element,
'allowed-element-types'	=> array('groupelements', 'item_element')
);
if($mode == "do") {
$this->saveEditedElementData($inputData);
$this->chooseRedirect();
}
$this->setDataType("form");
$this->setActionType("modify");
$data = $this->prepareData($inputData, "page");
$this->setData($data);
return $this->doData();
}
public function del() {
$elements = getRequest('element');
if(!is_array($elements)) {
$elements = array($elements);
}
foreach($elements as $elementId) {
$element = $this->expectElement($elementId, false, true);
$params = array(
"element" => $element,
"allowed-element-types" => Array('groupelements', 'item_element')
);
$this->deleteElement($params);
}
$this->setDataType("list");
$this->setActionType("view");
$data = $this->prepareData($elements, "pages");
$this->setData($data);
return $this->doData();
}
public function activity() {
$elements = getRequest('element');
if(!is_array($elements)) {
$elements = array($elements);
}
$is_active = getRequest('active');
foreach($elements as $elementId) {
$element = $this->expectElement($elementId, false, true);
$params = array(
"element" => $element,
"allowed-element-types" => Array('groupelements', 'item_element'),
"activity" => $is_active
);
$this->switchActivity($params);
$element->commit();
}
$this->setDataType("list");
$this->setActionType("view");
$data = $this->prepareData($elements, "pages");
$this->setData($data);
return $this->doData();
}
public function getDatasetConfiguration($param = '') {
return array(
'methods' => array(
array('title'=>getLabel('smc-load'), 'forload'=>true, 'module'=>'modulelements', '#__name'=>'lists'),
array('title'=>getLabel('smc-delete'),'module'=>'modulelements', '#__name'=>'del', 'aliases' => 'tree_delete_element,delete,del'),
array('title'=>getLabel('smc-activity'),'module'=>'modulelements', '#__name'=>'activity', 'aliases' => 'tree_set_activity,activity'),
array('title'=>getLabel('smc-copy'), 'module'=>'content', '#__name'=>'tree_copy_element'),
array('title'=>getLabel('smc-move'),'module'=>'content', '#__name'=>'tree_move_element'),
array('title'=>getLabel('smc-change-template'), 'module'=>'content', '#__name'=>'change_template'),
array('title'=>getLabel('smc-change-lang'), 'module'=>'content', '#__name'=>'move_to_lang')),
'types' => array(
array('common' => 'true', 'id' => 'item_element')
),
'stoplist' => array(),
'default' => 'h1[140px]'
);
}
};
?>
Файл install.php:
<?php
$INFO = Array();
$INFO['name'] = "modulelements";
$INFO['filename'] = "modules/modulelements/class.php";
$INFO['config'] = "1";
$INFO['ico'] = "ico_modulelements";
$INFO['default_method'] = "show";
$INFO['default_method_admin'] = "lists";
$INFO['is_indexed'] = "1";
$INFO['per_page'] = "10";
$INFO['func_perms'] = "";
$COMPONENTS = array();
$COMPONENTS[0] = "./classes/modules/news/__admin.php";
$COMPONENTS[1] = "./classes/modules/news/class.php";
$COMPONENTS[2] = "./classes/modules/news/i18n.php";
$COMPONENTS[3] = "./classes/modules/news/lang.php";
$COMPONENTS[4] = "./classes/modules/news/permissions.php";
?>
Файл permissions.php:
<?php
$permissions = Array(
'view' => Array('groupelements', 'item_element', 'group', 'view', 'listGroup', 'listElements'), 
'lists' => Array('lists', 'add', 'edit', 'del', 'groupelements.edit', 'item_element.edit', 'activity', 'publish')
);
?>
Обратите особое внимание на строки:
'groupelements.edit', 'item_element.edit', 'activity', 'publish'
groupelements и item_element это методы из комбинаций модуль-метод:
modulelements-groupelements modulelements-item_element
это иерархические типы данных, которые далее будут использоваться в настройках модуля "Шаблоны данных". Если у какого-либо Пользователя или Группы пользователй, в настройках, будет стоять чекбокс напротив группы прав 'lists' ('Управление страницами'), то при создании страницы с иерархическим типом groupelements (Группа страниц) или item_element (Страница из группы), автоматически для создаваемой страницы проставятся полные права на данную страницу: Просмотр, Редактирование, Создание подстраницы, Удаление, Перемещение.
Данная запись:
'activity', 'publish'
дает право на публикацию страниц, т.е. возможность сделать страницу активной. 'activity' необходим, чтобы менять активность страниц при их табличном отображении.
Файл i18n.php:
<?php
$i18n = Array(
"label-add-list" => "Добавить группу",
"label-add-item" => "Добавить страницу",
"header-modulelements-lists" => "Группы и страницы",
"header-modulelements-config" => "Настройки модуля",
"header-modulelements-add" => "Добавление",
"header-modulelements-edit" => "Редактирование",
"header-modulelements-add-groupelements"   => "Добавление группы",
"header-modulelements-add-item_element"     => "Добавление страницы",
"header-modulelements-edit-groupelements"   => "Редактирование группы",
"header-modulelements-edit-item_element"     => "Редактирование страницы",
"header-modulelements-activity" => "Изменение активности",
'perms-modulelements-view' => 'Просмотр страниц',
'perms-modulelements-lists' => 'Управление страницами',
);
?>
Файл lang.php:
<?php
$C_LANG = Array();
$C_LANG['module_name'] = "Модуль elements";
$LANG_EXPORT = Array();
?>
В папке /styles/skins/mac/data/modules/ создим папку modulelements, а в ней xsl шаблон list.view.xsl:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet SYSTEM "ulang://common/modulelements">
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="data" priority="1">
      <div class="imgButtonWrapper" xmlns:umi="http://www.umi-cms.ru/TR/umi">
        <a id="addCategory" href="{$lang-prefix}/admin/modulelements/add/{$param0}/groupelements/" class="type_select_gray" 
          umi:type="modulelements::groupelements">
          <xsl:text>&label-add-list;</xsl:text>
        </a>
        <a id="addObject" href="{$lang-prefix}/admin/modulelements/add/{$param0}/item_element/" class="type_select_gray" 
          umi:type="modulelements::item_element">
          <xsl:text>&label-add-item;</xsl:text>
        </a>
      </div>
      <xsl:call-template name="ui-smc-table">
        <xsl:with-param name="js-add-buttons">
          <![CDATA[ createAddButton($('#addCategory')[0], oTable, '{$pre_lang}/admin/modulelements/add/{id}/groupelements/', 
          ['groupelements', true]); createAddButton($('#addObject')[0], oTable, '{$pre_lang}/admin/modulelements/add/{id}/item_element/', ['groupelements']); ]]>
        </xsl:with-param>
      </xsl:call-template>
    </xsl:template>
  </xsl:stylesheet>
В папке clsses/modules/ создадим копию файла i18n.php и переименуем в i18n.ru.php. В файл i18n.ru.php необходимо добавить строку:
"module-modulelements" => "Модуль elements",
В папке /images/cms/admin/mac/icons/, в каждую из папок big, medium, small, необходимо добавить иконки нашего модуля с названием modulelements.png, можно использовать иконку модуля content, т.е. content.png.
В папку /images/cms/admin/mac/tree/ необходимо добавить иконки для каждого типа страниц, в данном случае: ico_modulelements_groupelements.png и ico_modulelements_item_element.png.
Можно использовать иконки модулей контент (ico_content_.png) и каталог (ico_catalog_category.png).
Проинсталлируем наш модуль, для этого зайдем в модуль Конфигурация, вкладка Модули. Пропишем путь к инсталляционному файлу:
classes/modules/modulelements/install.php и нажмем кнопку "Установить".
После инсталляции модуля необходимо зайти в настройки пользователя "Гость" и в группе прав модуля "Модуль elements" поставить чебкос для поля "Просмотр страниц".
Даллее заходим в настройки модуля "Шаблоны данных": /admin/data/config/ и добавляем два новых иерархических типа:
Название - Группа страниц Модуль - modulelements Метод - groupelements
и
Название - Страница из группы Модуль - modulelements Метод - item_element
Во вкладке "Типы данных", в разделе "Раздел сайта" создаем два новых типа страниц и в "Назначение типа" выбираем в одном случае "Группа страниц", а в другом "Страница из группы".
Если используются tpl шаблоны, то в папке tpls/modulelements/ создаем шаблон default.tpl c подобным содержанием:
<?php $FORMS = Array(); $FORMS['view'] = <<<END %content% END; $FORMS['group'] = <<<END %content% END; ?>
В клиентской части сайта, при переходе на страницу с типом groupelements, в файле classes/modules/modulelements/class.php будет отрабатываться метод groupelements(), при типе item_element - метод item_element().
