Я постарался собрать то, что держу в голове по компонентам 2.0 и что не описано или описано мимоходом в документации. Так сказать, личный опыт. Надеюсь, кому-то пригодится. [spoiler] Структура папки компонента Документация
Если надо создать подсказки к параметрам компонента:
для этого в папке языка необходимо создать папку help, в ней - файл с названием .tooltips.php
В файле - массив $MESS, в котором ключами являются параметры компонента c добавлением суффикса _TIP, значениями - подсказки. В качестве примера:
$MESS["IBLOCK_TYPE_TIP"] = "Это подсказка для типа инфоблока";
$MESS["IBLOCK_ID_TIP"] = "Это подсказка для ID инфоблока";
$MESS["SORT_BY1_TIP"] = "Это подсказка для первой сортировки";
Здесь заданы подсказки для параметров компонента IBLOCK_TYPE, IBLOCK_ID и SORT_BY1. Ряд стандартных параметров (типа CACHE_TIME, AJAX_MODE и прочее) имеет несколько подсказок: для CACHE_TIME:
CACHE_TIME_TIP - время кеширования
CACHE_TYPE_TIP - тип кеширования
для страничной адресации:
DISPLAY_TOP_PAGER_TIP - показывать постраничку над списком
DISPLAY_BOTTOM_PAGER_TIP - показывать постраничку под списком
PAGER_TITLE_TIP - название элементов в постраничке
PAGER_SHOW_ALWAYS_TIP - показывать постраничку всегда
PAGER_TEMPLATE_TIP - имя шаблона постранички
PAGER_DESC_NUMBERING_TIP - обратная адресация
PAGER_DESC_NUMBERING_CACHE_TIME_TIP - время кеширования обратной адресации
для AJAX_MODE
AJAX_MODE_TIP
AJAX_OPTION_SHADOW_TIP
AJAX_OPTION_JUMP_TIP
AJAX_OPTION_STYLE_TIP
AJAX_OPTION_HISTORY_TIP
UPD. На текущий момент нет необходимости создавать отдельный lang-файл с подсказками. Их достаточно сохранить в lang-файле .parameters.php (как для компонента, так и для шаблона компонента). Формат подсказок прежний.
В папке images (см. рисунок выше) обычно хранится иконка компонента для визуального редактора.
Файл описания компонента .description.php Документация
Рассмотрим ключ PATH описания компонента. Каждый узел здесь состоит из 3 ключей:
'PATH' => array(
'ID' => "ID узла",
'NAME' => "название узла",
'SORT' => "индекс сортировки",
'CHILD' => array(
// тут подузел, аналогичный по структуре узлу
),
),
1. ID узла должен быть уникальным в пределах ВСЕГО дерева компонент (включая стандартные). Проблема в том, что если у узлов будут два одинаковых ID (к примеру, взяли для узла ID = "news", а такой ID уже есть для стандартных компонент), то оба не будут открываться. 2. Допустим, в узле есть несколько компонент. Не забудьте в каждом из них указать ключ NAME для всех использованных узлов. ТП отвечает, что достаточно указать NAME лишь в одном из компонент. Ага, сейчас. Во-первых, NAME берется из первого попавшегося компонента в узле. Если его не оказалось либо нет нужной языковой константы - в качестве NAME используется ID. Во-вторых, ради проверки можно открыть дерево стандартных компонент, раздел Служебные и увидеть user вместо Пользователь (на 23.03.2010) До этого был такой же косяк с узлом navigation. Так что внимательно.
"GROUPS" - значением этого ключа является массив групп параметров компонента. Параметры в визуальных средствах среды БУС (например, в визуальном редакторе) группируются. Группы в среде БУС располагаются в том порядке, в котором заданы в файле. Массив групп параметров компонента состоит из элементов следующего вида "код группы" => array( "NAME" => "название группы на текущем языке" )
Здесь не указан еще один ключ - SORT, задающий положение групп друг относительно друга. Т.е. правильно так:
"код группы" => array(
"NAME" => "название группы на текущем языке",
"SORT" => "сортировка",
)
Перечень стандартных групп: ADDITIONAL_SETTINGS (сортировка - 700) Эта группа появляется, например, при указании параметра SET_TITLE. CACHE_SETTINGS (сортировка - 600) Появляется при указании параметра CACHE_TIME. SEF_MODE (сортировка 500) Группа для всех параметров, связанных с использованием ЧПУ. URL_TEMPLATES (сортировка 400) Шаблоны ссылок VISUAL (сортировка 300) Редко используемая группа. Сюда предполагается загонять параметры, отвечающие за внешний вид. DATA_SOURCE (сортировка 200) Тип и ID инфоблока и тому подобное. BASE (сортировка 100) Основные параметры. AJAX_SETTINGS (сортировка 550) Все, что касается ajax.
Примечание. Какую бы сортировку Вы не указали для своих групп параметров, они (группы) все равно будут выведены ПОСЛЕ стандартных. С мест поправляют - сортировка своих групп работает. Да, действительно, на 10.0 работает. С какой версии - не отследил.
Структура описания параметра:
"код параметра" => array(
"PARENT" => "код группы", // если нет - ставится ADDITIONAL_SETTINGS
"NAME" => "название параметра на текущем языке",
"TYPE" => "тип элемента управления, в котором будет устанавливаться параметр",
"REFRESH" => "перегружать настройки или нет после выбора (N/Y)",
"MULTIPLE" => "одиночное/множественное значение (N/Y)",
"VALUES" => "массив значений для списка (TYPE = LIST)",
"ADDITIONAL_VALUES" => "показывать поле для значений, вводимых вручную (Y/N)",
"SIZE" => "число строк для списка (если нужен не выпадающий список)",
"DEFAULT" => "значение по умолчанию",
"COLS" => "ширина поля в символах",
),
TYPE - тип элемента управления Значения: LIST - выбор из списка значений STRING - текстовое поле ввода CHECKBOX - да/нет Для типа LIST ключ VALUES содержит массив значений следующего вида:
VALUES => array(
"ID или код, сохраняемый в настройках компонента" => "языкозависимое описание",
),
Внешний вид списка меняется в зависимости от наличия/отсутствия ключей MULTIPLE и ADDITIONAL_VALUES. Итак, MULTIPLE и ADDITIONAL_VALUES отсутствуют или равны "N": Выводится просто список, никаких значений в список не добавляется.
ADDITIONAL_VALUES = "Y", MULTIPLE = "N" В список добавляется значение "другое" и рядом доп.поле для ввода значения ручками.
ADDITIONAL_VALUES = "N", MULTIPLE = "Y" В список ничего не добавляется, просто появляется возможность выбрать несколько элементов.
И, наконец, ADDITIONAL_VALUES = "Y", MULTIPLE = "Y" В список добавляется значение "не выбрано" и рядом множественное доп.поле для ввода значения ручками.
Все тесты проводились с COLS = 8. Если этот ключ не указывать, список будет выпадающим, но общая идея останется та же.
Параметр REFRESH позволяет после выбора значения перегружить всю форму с параметрами. Делается это, например, для выбора инфоблока конкретного типа. То есть имеем два параметра - тип инфоблока и код инфоблока. Исходное положение - в первом список всех типов инфоблоков, во втором - список ВСЕХ инфоблоков данного сайта: а после выбора нужного типа инфоблока параметры компонента перегружаются и мы видим только инфоблоки нужного типа: Внешне этот ключ проявляется как кнопка с надписью ОК возле параметра (см. скриншоты выше), НО! Только для параметров типа LIST. Для параметров типа CHECKBOX ничего не отображается (по-моему, с версии 7.x), хотя отлично работает. Если нужно, чтобы некий параметр появлялся или нет в зависимости от другого, делается это так. Пусть нам необходимо показать список свойств инфоблока. Предположим, что ID инфоблока содержится в параметре компонента IBLOCK_ID, а параметр, где будет список свойств назовем PROP_LIST. У параметра IBLOCK_ID должен быть выставлен ключ REFRESH = 'Y'. Код:
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».