Migration 如何使用Drupal 8迁移设置节点的url_别名
我使用Drupal8附带的迁移工具从专有CMS创建文章。为了将遗留数据库与Drupal分离,我首先将遗留CMS中的文章导出到Yaml文件中。我的文章有一个类似Migration 如何使用Drupal 8迁移设置节点的url_别名,migration,drupal-8,Migration,Drupal 8,我使用Drupal8附带的迁移工具从专有CMS创建文章。为了将遗留数据库与Drupal分离,我首先将遗留CMS中的文章导出到Yaml文件中。我的文章有一个类似http://example.com/article/123/some-slug.html 如何将通过迁移创建的文章的url_别名设置为/article/123/some slug.html 更多的上下文。我的迁移模块modules/custom/My_migration如下所示: 文件../config/install/migrate.
http://example.com/article/123/some-slug.html
如何将通过迁移创建的文章的url_别名设置为/article/123/some slug.html
更多的上下文。我的迁移模块
modules/custom/My_migration
如下所示:
文件../config/install/migrate.migration.my_article.yml
文件../src/Plugin/migrate/source/Article.php
您可以使用此代码设置url别名 $system_path='/node/'.$node->id()//内部节点路径 $path_alias='/article/'.$alias_slug;//别名路径 $langcode='en'
\Drupal::service('path.alias\u storage')->save($system\u path,$path\u alias,$langcode) 您可以使用此代码设置url别名 $system_path='/node/'.$node->id()//内部节点路径 $path_alias='/article/'.$alias_slug;//别名路径 $langcode='en' \Drupal::service('path.alias\u storage')->save($system\u path,$path\u alias,$langcode)
id: my_article
label: Migrates my articles
migration_group: my_migration
source:
plugin: my_article
destination:
plugin: entity:node
process:
type:
plugin: default_value
default_value: article
title: legacy_title
# ... some more field mappings
<?php namespace Drupal\my_migration\Plugin\migrate\source;
use Drupal\migrate\Plugin\migrate\source\SourcePluginBase;
use Symfony\Component\Yaml\Yaml;
/**
* Class Article
*
* @MigrateSource(
* id = "my_article"
* )
*/
class Article extends SourcePluginBase {
protected function initializeIterator() {
$articles = Yaml::parse(file_get_contents('migration-data/articles.yaml'));
foreach ($articles as $article) {
$article['id'] = 'article-' . $article['legacy_id'];
}
return $articles;
}
public function fields() {
return [
'legacy_title' => $this->t('Article title'),
'legacy_url' => $this->t('Article URL'),
];
}
}
- legacy_id: 123
legacy_title: 'Article #123'
legacy_url: '/article/123/article-123.html'
- legacy_id: 456
legacy_title: 'Article #456'
legacy_url: '/article/456/article-456.html'