Drupal - 以编程方式为某些迁移的术语更改 url 别名
Drupal - changing url alias programmatically for some migrated terms
我正在尝试在 Drupal 中执行 SQL 查询,以编辑几个站点中的一些分类术语 url_aliases。
// Query to get aliases which contain event-category in alias.
$aliases = db_select('url_alias', 'ua')
->fields('ua', array('alias'))
->condition('alias', '%event-category/%', 'LIKE')
->execute()
->fetchCol();
foreach ($aliases as &$ua) {
// Strip out event-category and replace with category
$new_alias = str_replace("event-category/", "category/", $ua);
// Update url_alias table
$update_db = db_update('url_alias')
->fields(array('alias' => $new_alias))
->condition('alias', '%event-category/%', 'LIKE')
->execute();
}
每次我运行此代码正确的术语别名都会更改,但它们都更改为第一个术语别名。示例:
- event-category/abc123 => category/abc123
- event-category/def456 => category/abc123
- event-category/ghi789 => category/abc123
据我所知,str_replace 在 dpm 处理 $new_alias 变量时有效。
修改更新查询条件为
->condition('alias', '%'.$ua.'%', 'LIKE')
我正在尝试在 Drupal 中执行 SQL 查询,以编辑几个站点中的一些分类术语 url_aliases。
// Query to get aliases which contain event-category in alias.
$aliases = db_select('url_alias', 'ua')
->fields('ua', array('alias'))
->condition('alias', '%event-category/%', 'LIKE')
->execute()
->fetchCol();
foreach ($aliases as &$ua) {
// Strip out event-category and replace with category
$new_alias = str_replace("event-category/", "category/", $ua);
// Update url_alias table
$update_db = db_update('url_alias')
->fields(array('alias' => $new_alias))
->condition('alias', '%event-category/%', 'LIKE')
->execute();
}
每次我运行此代码正确的术语别名都会更改,但它们都更改为第一个术语别名。示例:
- event-category/abc123 => category/abc123
- event-category/def456 => category/abc123
- event-category/ghi789 => category/abc123
据我所知,str_replace 在 dpm 处理 $new_alias 变量时有效。
修改更新查询条件为
->condition('alias', '%'.$ua.'%', 'LIKE')