heimrichhannot/contao-subcolumns2grid-migration-bundle

此包使淘汰felixpfeiffer的子列模块及其H&H后续产品变得不那么痛苦。

dev-trunk 2024-07-23 14:18 UTC

This package is auto-updated.

Last update: 2024-09-23 14:40:00 UTC


README

此包简化了从以下任一迁移到您选择的选项:

先决条件

  • Contao 4.13或更高版本
  • PHP 7.4或更高版本
  • 已安装contao-bootstrap/grid v2或v3
  • 更新Contao数据库迁移

注意

您还可以在没有安装任何子列包的情况下运行迁移,例如在Contao 5上。只需确保在迁移之前运行Contao迁移不带删除

技巧

在迁移之前运行修复命令以确保所有子列都处于一致状态。

技巧

错误信息通常会引导您找到问题的根源。如果您遇到本文件未涵盖的问题或您无法自行解决的问题,请在本GitHub问题跟踪器上报告。

安装

通过composer安装

composer require heimrichhannot/contao-subcolumns2grid-migration-bundle:dev-trunk

用法

命令索引

迁移

通过CLI向导运行迁移

vendor/bin/contao-console sub2grid:migrate

迁移必须从环境信息和您的意图中获取一些信息。尝试自动获取可推断的信息。不可推断的细节将由向导交互式查询。

您也可以提供所有不可推断的选项以跳过向导。

最常见选项

  • --from FROM|-f FROM:要迁移的包。对于旧版SubColumns模块使用m,对于SubcolumnsBootstrapBundle使用b
  • --theme THEME_ID|-t THEME_ID:要创建网格定义的主题ID。使用0创建新主题。
  • --grid-version GRID_VERSION|-g GRID_VERSION:要迁移到的网格版本(23)。
  • --dry-run:执行干运行,不提交更改到数据库。

例如

vendor/bin/contao-console sub2grid:migrate -f b -g 3 -t 0 --dry-run

要查看所有可用选项,请使用--help运行命令。

vendor/bin/contao-console sub2grid:migrate --help

回滚

要回滚迁移

vendor/bin/contao-console sub2grid:rollback

此命令会提示重置选项。要跳过提示,请使用

vendor/bin/contao-console sub2grid:rollback -n

修复损坏的子列

此命令将遍历所有子列内容元素和表单字段,并分别修复所有元素的sc_parent ID。

运行以下命令以确保所有子列都处于一致状态

vendor/bin/contao-console sub2grid:fix

您可以使用--dry-run选项执行干运行,不提交更改到数据库。

提供--cleanse|-c选项以删除所有不完整的开始—部分—结束系列且被设置为不可见的子列内容元素和表单字段。这意味着,如果列集的元素不可见,并且它们的开头或结尾缺失,则将删除这些元素。如有疑问,请首先不使用此选项运行命令。

注意

如果命令发现不完整且可见的子列内容元素系列,则会出错。您必须手动调查并修复这些问题。

趣味知识:如果您之前使用的是版本1.11.3之前的SubcolumnsBootstrapBundle或Subcolumns模块,您可能会遇到损坏子列的问题。这些问题可能表现为子列内容元素和表单字段的丢失,或者这些元素未能正确链接到其子列起始元素。

这些问题的出现是由于版本1.11.3之前的SubcolumnsBootstrapBundle和Subcolumns模块中的一个错误,该错误在克隆子列内容元素和表单字段时导致继承了错误的sc_parent ID。

后果

迁移后,请验证受影响的页面和模块。

  • 迁移尝试使用数据库事务,并且只有在没有错误发生时才会提交。
  • 迁移会将全局子列集定义从您的config.php$GLOBALS['TL_SUBCL']分别迁移到您选择的任何主题或可选的新创建的主题的网格定义中。
  • 迁移会将数据库定义的子列定义迁移到您选择的任何主题或新创建的主题的网格定义中。
  • 迁移会将子列内容元素转换为网格内容元素。
  • 迁移不会删除子列模块或子列Bootstrap包。

技巧

您可以多次运行迁移而不会引起问题。

重要

如果网格定义描述中创建的标签(例如,[sub2grid:source.profile.name])保持不变,则多次运行迁移不会重复网格定义。

术语

  • 模块:指代遗留的Subcolumns模块
  • :指代SubcolumnsBootstrapBundle(已停止维护)。
  • :由定义的宽度和偏移量的内容分隔符配置组成的一列集合。
  • 系列:指由列集定义的一系列子列内容元素或表单字段。一个起始元素、任意数量的部分元素和一个结束元素构成一个系列。
  • 子列内容元素:指代在tl_content中构成子列集合的内容元素。
  • 子列表单字段:指代在tl_form_field中构成子列集合的表单字段。
  • 炼金术士:指将子列转换为网格的迁移工具。
  • 集定义:指数据库或全局变量中子列集合的定义。
  • 全局变量:指代在config.php$GLOBALS['TL_SUBCL']中的全局子列集合定义。
  • 数据库定义:指存储在数据库中的子列集合定义。

针对已知问题的热修复

在列上使用容器类

如果您正在使用Bootstrap,并且迁移已向.col添加了.container类,您可能会遇到列未能正确显示的问题。

为了修复此问题,请将以下SCSS片段添加到您的主题中。只需确保它在Bootstrap样式之后级联即可。

.ce_bs_gridStart > .col.container {
    @include make-container-max-widths();
}