izica / bitrix-migrations

Bitrix CMS 迁移

3.6.1 2023-04-09 00:56 UTC

This package is auto-updated.

Last update: 2024-09-09 04:10:52 UTC


README

1C Bitrix CMS 迁移。迁移还支持标准 Bitrix CMS API

方法根据需求出现,如需添加方法,请创建问题

安装

composer require izica/bitrix-migrations

配置

运行 init 脚本,在脚本所在的文件夹中,将创建 migrations 文件夹和所有必要的文件。脚本参数

  • --root - 相对于 DOCUMENT_ROOT 的相对路径(必填参数)
  • --directory - 迁移将创建的目录名称(默认 'migrations')
  • --file - 迁移将创建的文件名称(默认 'bxm')

创建的文件夹结构如下

  • migrations
    • bxm
    • migration - 这里将存放迁移
    • template - 这里存放模板

从 local 文件夹启动示例

php php_interface/vendor/izica/bitrix-migrations/bxm.php init --root=../

从 local/php_interface 文件夹启动示例

php vendor/izica/bitrix-migrations/bxm.php init --root=../../

迁移

命令

要查看所有可用的命令,请输入

php bxm
List of available commands:
migrate -- start migrations
migration -- create migration
create -- create migration(same thing as migration)
rollback -- rollback last migration
reset -- reset migrations

创建迁移

php bxm create create-news-iblock

也提供模板

php bxm create create-iblock-news --template={templateName}
php bxm create create-iblock-news --template=iblock

模板

库具有内置模板列表。

* default - пустой шаблон
* iblocktype - создание типа инфоблока
* iblock - создание инфоблока
* iblock-property - создание свойства инфоблока
* iblock-catalog - создание каталога(инфоблока типа Торговый каталог)

要创建自己的模板,可以将它们放在与迁移相邻的 "template" 文件夹中。

迁移示例

<?php

use Izica\Migration;
use CModule;

class CreateIblockNews_1550830432 extends Migration {
    public function up() {
        CModule::IncludeModule('iblock');

        $obIblock = new CIBlock;
        $arFields = [
            "ACTIVE"           => 'Y',
            "NAME"             => 'Новости',
            "CODE"             => 'news',
            "IBLOCK_TYPE_ID"   => 'info',
            "SITE_ID"          => ["s1"],
            "GROUP_ID"         => ["2" => "D", "3" => "R"]
        ];

        $nId = $obIblock->Add($arFields);
        
        $this->log('CIBlock news created');
    }

    public function down() {
        CModule::IncludeModule('iblock');

        CIBlock::Delete($this->getIblockIdByCode('news'));

        $this->log('CIBlock news deleted');
    }
}

Migration 类的额外功能

  • log($message, $code) - 在迁移过程中在控制台输出消息
  • set($key, $value) - 将数据保存到迁移缓冲区,例如在创建信息块属性时很有用。
  • get($key) - 从缓冲区获取数据。
  • getIblockIdByCode($code) - 通过代码获取信息块 ID
<?
class Example extends Migration {
    public function up() {
        /*
         * тут создается свойсво
         */
        $nPropertyId = $obProperty->Add($arFields);
        $this->set('PROPERTY_CODE', $nPropertyId);
        $this->log('CIBlock news created');
    }

    public function down() {
        CModule::IncludeModule('iblock');
        
        $nPropertyId = $this->get('PROPERTY_CODE');
        CIBlockProperty::Delete($nPropertyId);

        $this->log('Property PROPERTY_CODE deleted');
    }
}