Показываю, как работает на примере
На первом шаге заполняем информацию о себе и о новом модуле.
Код партнера должен строго соответствовать тому, что выводится в карточке партнера. Код модуля заполняется латиницей. Название и описание будут выводиться в списке модулей.
Всё это подробно описано в
Скрипты, которые вы загрузите в текущей форме, попадут в папку admin нового модуля. При установке будут созданы ссылки на них в папке /bitrix/admin. Кроме того, они появятся в основном административном меню.
У меня компонентов нет, если вы хотите опубликовать компоненты, они должны быть установлены на текущей установке в папке /bitrix/components (за пределами /bitrix/components/bitrix как описано в документации
Они затем будут скопированы в папку install нового модуля. При установке автоматически скопируются из этой папки в /bitrix/components, и соответственно удалятся при деинсталляции.
Нажимаем "Продолжить", теперь модуль уже есть в списке решений, и можно продолжать его разработку уже в ядре.
Попадаем на второй шаг.
При внешней простоте интерфейса на этом шаге происходит самое интересное. Сканируются все php файлы модуля в поисках кириллических символов, выводится их список.
Система автоматически определяет кодировку. Например, у меня сайт работает в utf8, а скрипт был в cp1251. В дальнейшем скрипты будут автоматически перекодированы в кодировку сайта (а перед архивацией - в cp1251, как требует документация).
Затем скрипт парсится побайтово в поисках языковых фраз, фразы сохраняются в соответствующий lang файл, а вместо них вставляется вызов
Будьте осторожны! В процессе такой работы исходный файл переписывается. При разборе учитывается html, php, js, css, экранирующий слеш. Хоть я тестировал на разных доступных скриптах, есть опасность, что что-нибудь сломается на каком-нибудь хитром коде.
Языковой файл создается автоматически:
Если файл был, то новые фразы дописываются в конец. Если фразы были в исходном файле (или ранее по коду), то они используются повторно. Если ключи совпадают, в конце дописывается цифра. Таким образом, скрипт можно постоянно дорабатывать и применять выделение фраз повторно.
Коме того, для скриптов папки /admin в самое начало скрипта дописывается код подключения ядра, если не был найден. Это необходимо для работы языковых функций.
Далее, скорее всего, потребуется доработка скрипта руками. Например, у меня была строго указана кодировка cp1251, пришлось её убрать:
header("Content-type:text/html; charset=windows-1251"); |
После такой доработки можно попробовать установить решение и убедиться, что оно работает.
Кроме того я добавил подключение визуальной части ядра, и проверку на доступ, получилось так:
На третьем шаге архивируем свое решение и отправляем в marketplace.
После пробуем установить себе и дожидаемся, когда решение будет отмодерировано.
Надеюсь, что функционал будет востребован, буду улучшать через обновления.
Оба решения подготовил для публикации в marketplace и после того, как коллеги из партнерского отдела их отмодерируют, вы сможете попробовать у себя
Обновление от 01.02.2012
Модуль доступен в
Добавил опциональную фишку автоматического увеличения версии при создании архива.
Обновление от 15.02.2012
Добавил четвертый шаг, автоматизирующий сборку обновлений любого модуля (в том числе, собранного руками). Алгоритм тривиальный: все файлы модуля, измененные после даты, которая хранится в install/version.php, попадают в архив обновления. Если включить соответствующую опцию, исходный файл модуля будет переписан.
Обновление от 16.02.2012
Теперь сборка обновлений проверяет дату изменения файлов в установленных компонентах, копирует их в в папку модуля, затем помещает в архив с обновлением. В обновлении лежит updater.php, который обновляет компоненты на сайтах клиентов.
Перекодировка файлов из cp1251 в utf8 и обратно происходит автоматически.
Таким образом, процесс подготовки обновлений для компонентов полностью автоматизирован.
Фото:
Помню, когда я прошлым летом написал мастер создания компонента, то меня в комментариях подкололи, что мол осталось мастер создания мастера сделать
Жду релиза.
PS: Вот жаль что такие посты тонут в море, простите, ерунды давайте уже топ делать что ли наконец.
Как вижу:
- сканируем новые/измененные файлы с даты сбора апдейта последний раз
- тарим их
- дополнительно запрашиваем какой php/sql-код выполнить, какое описание обновлений
Это краткая схема, на деле конечно сложнее. От кого-то из ваших подобное было, но там вручную надо было выбирать файлы для апдейта. Это не то, потому что элементарно можешь все не упомнить, а апдейт может и месяц собираться.
Денис пишет редко, но метко
полезность функционала 1000%
ждем на пробу
Перед конференцией не успеваю доделать, уже на следующей неделе должен быть.
Самое основное у меня - это возможность в автоматическом режиме выделить все языковые фразы и сконвертировать файлы в нужную кодировку.
Генирация проблемы , поле установки захожу по ссылки
/bitrix/admin/partner_modules.php?module=bitrix.mpbuilder
у меня 404 страница.
Вариант решения
сделать редирект на step1
Как удалось поставить?
Вроде, как я понял, они должны быть на транслите?
Пожалуйста, попробуйте обновиться.
вся проблема в том, что если у меня есть уже готовый модуль, который я хочу опубликовать то нормально запаковать не выходит. для публикации всяких там готовых решений, предустановленных шаблонов данный модуль то что надо.. вообще проблема даже в том, что модуль обязательно надо называть с точкой. но это уже проблема самого маркетплэйса. мне абсолютно не нравится генерация названий. очень неудобно сделано..
более того создал на базе этого модуля сборку.. с инсталкой возникли проблемы.. пришлось руками дописывать.. может я конечно какую-то старую версию себе ставил, но мне было реально проще поставить модуль архиватора (из маркетплэйса) и тупо запаковать своё решение предварительно переименовав папку.
кстати очень неудобно сделано по моему мнению в маркетплейсе то, что решения которые через МП ставятся не попадают в список модулей, где их привыкли видеть. неудобно.. почему бы не совместить решения и стандартные модули?
А вообще ваша позиция сродни позиции любого новичка это нормально. СО временем привыкаешь, и все кажется на своих местах.
я только на нём сайты и делаю последние 4 года.
а ещё убивает то, что нет поиска по маркетплейсу.. нужен ну просто каждый раз.. почему вместо того, чтоб найти по ключу модуль нужный я должен перелопатить весь маркетплейс? это тупость!
вот кстати даже этот модуль, о котором пишет автор я так и не смог найти, пришлось руками урл установочный писать
кстати вот генерация обновлений с помощью модуля собирать классно. мне понравилось.. только есть недочёт.. почемуто админ страницы не собирает в обновления.. было бы неплохо сделать возможность выбора админ скриптов которые нужно ложить в архив не только при паковке модуля а и при паковке обновлений
я только на нём сайты и делаю последние 4 года
А под поиск подписываюсь. Это кое-что из того почти.
Вот если бы еще добавить опцию при сборке обновлений:
"Скопировать изменённые файлы скриптов из /bitrix/js/ в ядро модуля"
то было бы вообще супер
Модуль это ж не только компоненты
Пример:
/foldername/file1.php
/foldername/file2.php
...
/foldername/file499.php
/foldername/file500.php
Я попробовал собрать им модуль и так оно и вышло языковые файлы собираются только для того файла который был указан на шаге 3. Остальные игнорируются.
Общался с тех поддержкой битрикса, сказали что проблему можно устранить закомментировав строку "$aModuleMenu[] = $aMenu;" в файле "/bitrix/modules/название модуля/include.php". Но это работает по идее только для обновления, так как этот файл появляется только после сборки модуля.
Небольшой вопрос: при сборке архива модуля с помощью данного решения получается нормально файл архива, но при заливке данного файла в карточке решения в кабинете marketplace выдает ошибку, что не верная структура модуля. захожу в /bitrix/tmp/решение вручную собираю в zip-архив папку ".last_version" - она отлично заливается. Что это может быть?
Сталкнулся с такой проблемой при сборке обновлений в случае когда были внесены изменеия в языковые файлы.
Языковые файлы попадают в архив апдэйта не переконвертированными из UTF в Win 1251.
Может я что то не в той последовательности делаю?
Только что поставил модуль, сайт в UTF-8, застрял на шаге 3 "Редактор ключей языковых фраз", пытаюсь выбрать файл (какой именно не знаю, выбирал уже все), но страница перегружается и я остаюсь на том же шаге без выбранного файла скрипта
влючает файл install/index и templates - нет header.php и footer.php. Особенноо после многочисленных правок модуля....Иногда поврежденный архив... Как решить данную проблему? При необходимости вышлю файлы (укажите email) Плиз, Срочно!