Andere BlueFoot-inhoud migreren | Handleiding voor Adobe Commerce-ontwikkelaars
Standaard migreert de migratiemodule alleen inhoud uit deze tabellen van de Magento-database:
- CMS-pagina’s
- CMS-blokken
- Catalogus Productkenmerken
- Catalogus Categorie Attributen
Als u BlueFoot-inhoud in andere tabellen hebt, moet u de volgende stappen uitvoeren om die inhoud te migreren.
Vereisten
In dit onderwerp wordt ervan uitgegaan dat je een werkende Magento 2-module hebt. Zo niet, maak dan nu een basisskeletmodule aan en controleer of Magento de module laadt tijdens setup:upgrade
.
Stappen voor het migreren van andere inhoud
Dit zijn de basisstappen voor het migreren van BlueFoot-inhoud uit andere databasetabellen:
- Voeg de volgende directorystructuur toe aan uw module:
Setup/Patch/Data
. - Maak een datapatchklasse voor uw migratie. Voorbeeld:
MigrateBlogToPageBuilder.php
. Magento voert deze klasse uit bij het installeren van uw module. - Implementeer de
Magento\Framework\Setup\Patch\DataPatchInterface
. - Definieer uw migratielogica binnen de
apply()
functie.
Voorbeeld van klasse voor gegevenspatch
In het volgende voorbeeld ziet u hoe u bloginhoud die met BlueFoot is gemaakt, kunt migreren:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
declare(strict_types=1);
namespace VendorName\Blog\Setup\Patch\Data;
use Magento\Framework\Setup\Patch\DataPatchInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\DB\AggregatedFieldDataConverter;
use Magento\Framework\DB\Select\QueryModifierFactory;
use Magento\Framework\DB\FieldToConvert;
use Magento\PageBuilderDataMigration\Setup\DataConverter\Format;
use Magento\PageBuilderDataMigration\Setup\DataConverter\BlueFootToPageBuilder;
class MigrateToBlogPageBuilder implements DataPatchInterface
{
/**
* @var ModuleDataSetupInterface
*/
private $moduleDataSetup;
/**
* @var AggregatedFieldDataConverter
*/
private $aggregatedFieldConverter;
/**
* @var QueryModifierFactory
*/
private $queryModifierFactory;
/**
* @param ModuleDataSetupInterface $moduleDataSetup
* @param AggregatedFieldDataConverter $aggregatedFieldConverter
* @param QueryModifierFactory $queryModifierFactory
*/
public function __construct(
ModuleDataSetupInterface $moduleDataSetup,
AggregatedFieldDataConverter $aggregatedFieldConverter,
QueryModifierFactory $queryModifierFactory
) {
$this->moduleDataSetup = $moduleDataSetup;
$this->aggregatedFieldConverter = $aggregatedFieldConverter;
$this->queryModifierFactory = $queryModifierFactory;
}
/**
* @return DataPatchInterface|void
* @throws \Magento\Framework\DB\FieldDataConversionException
*/
public function apply()
{
$this->aggregatedFieldConverter->convert(
[
new FieldToConvert(
BlueFootToPageBuilder::class,
$this->moduleDataSetup->getTable('blog'),
'blog_id',
'content',
$this->queryModifierFactory->create(
'like',
[
'values' => [
'content' => '%' . Format::BLUEFOOT_KEY . '%'
]
]
)
),
],
$this->moduleDataSetup->getConnection()
);
}
/**
* @inheritdoc
*/
public function getAliases()
{
return [];
}
/**
* @inheritdoc
*/
public static function getDependencies()
{
return [];
}
}
Het belangrijkste onderdeel van deze implementatie is de logica binnen de apply()
functie. De functie gebruikt de aggregatedFieldConverter
om elk te herhalen blog
tafel rij. Voor elke rij voeren we de BlueFootToPageBuilder
data-omzetter. En we optimaliseren het door een querymodifier te gebruiken om alleen de BlueFoot-inhoud op te halen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$this->aggregatedFieldConverter->convert(
[
new FieldToConvert(
BlueFootToPageBuilder::class,
$this->moduleDataSetup->getTable('blog'),
'blog_id',
'content',
$this->queryModifierFactory->create(
'like',
[
'values' => [
'content' => '%' . Format::BLUEFOOT_KEY . '%'
]
]
)
),
],
$this->moduleDataSetup->getConnection()
);
Voer uw migratiemodule uit
De bovenstaande wijzigingen worden niet uitgevoerd bij gebruik van bin/magento pagebuilder:migrate
. Die opdracht wordt alleen uitgevoerd voor de standaardgebieden die aan het begin van dit onderwerp worden genoemd. Als u uw installatiepatch met een vergelijkbare opdracht wilt uitvoeren, moet u een consoleopdracht voor uw module maken. Anders kunt u de setup:upgrade
commando als volgt.
U kunt nu de setup:upgrade
commando om uw andere BlueFoot-inhoud te migreren:
1
bin/magento setup:upgrade
Dat is het. Gebruik hetzelfde patroon om BlueFoot-inhoud uit andere tabellen te migreren.