我使用Drupal 8附带的Migration工具从专有CMS创建文章。要将旧数据库与Drupal分离,我首先将文章从旧版CMS导出到Yaml文件中。我的文章有一个像http://example.com/article/123/some-slug.html
这样的网址。
如何将通过迁移创建的文章的url_alias设置为/article/123/some-slug.html
?
更多背景信息。我的迁移模块modules/custom/my_migration
如下所示:
.../config/install/migrate.migration.my_article.yml
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
.../src/Plugin/migrate/source/Article.php
<?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'),
];
}
}
migration-data/articles.yaml
- 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'
答案 0 :(得分:0)
您可以使用此代码设置网址别名
$ system_path ='/ node /'.$ node-&gt; id(); //内部节点路径
$ path_alias ='/ article /'.$alias_slug; //别名路径
$ langcode ='en';
\ Drupal :: service('path.alias_storage') - &gt; save($ system_path,$ path_alias,$ langcode);