Drupal9下list分类文章的中文路径转换成英文网址

  在白龙网看来,在Drupal9环境下,构建网站目录结构的方法有两种,一是list字段,二是Taxonomy词汇,具体可以参考之前的文章《Drupal9的list字段与Taxonomy词汇开发相同类型的不同栏目》。因此,提前规划好网站目录结构与实现的方法,开发过程中做到心中有数,才能避免因返工延误开发进度的尴尬局面。基于网站目录的两种构建方法,相应的,把中文网址转换成英文网址也有两种方法。
 
  鉴于《Drupal9下Taxonomy分类文章的中文路径转换成英文网址》的案例,我们借助pathauto模块已经把使用Taxonomy词汇术语分类文章内容产生的中文网址转换成了英文网址。接下来,我们仍然通过案例来梳理下如何用pathauto模块把使用list字段分类文章内容产生的中文网址转换成英文网址。
 
  开发案例:新闻中心(news)栏目下有两个子栏目:公司新闻(company)、企业新闻(industry);在公司新闻(company)、企业新闻(industry)栏目下分别上传一篇文章;默认情况下,每篇文章的网址显示的是drupal9系统内部路径,如/node/28、/node/29。需求是把drupal9系统文章的内部路径如(/node/28、/node/29)分别转换成英文网址:/company/28.html、/industry/29.html,分别显示到/company/、/industry/目录下,并且确保后续上传的文章会自动生成类似/company/28.html、/industry/29.html的网址。
 
  这个需求分两种情况,一是已上传文章的中文网址转换成英文网址,例如分别把“/node/28、/node/29”网址转换成“/company/28.html、/industry/29.html”,比较简单。以“/node/28->/company/28.html”为例,在“管理->配置->别名->添加别名”界面,把“System_path”设置成“/node/28”,把URL_alias设置成“/company/28.html”,保存后重建缓存,即可实现。二是将来上传的文章自动从“/node/29”这种形式的网址转换成目标格式的网址“/industry/29.html”,稍微复杂些,下面从两个关键点展开说明。
 
  1.list分类字段的配置
 
  (1)在新建的内容类型中添加一个list类型的分类字段news,默认情况下,机器名为“field_news”;
 
  (2)逐个点“下一步”填写相应参数,在字段设置中分两行输入“company|公司新闻”、“industry|企业新闻”等内容,表示每行一个分类,类似于术语,但是又不同于术语;
 
  (3)英文(company、industry)表示“key”,与导航菜单中的公司新闻(/company/)、企业新闻(/industry/)网址保持一致,可以被pathauto模块读取;
 
  (4)中文(公司新闻、企业新闻)表示“label”,可以在内容类型中显示。
 
  2.pathauto模块的配置
 
  (1)下载、安装、启用、配置好pathauto模块;
 
  (2)在“管理->配置->别名->模式->添加模式->content”中按照目标网址的格式如“/industry/29.html”添加一条规则(Path_pattern):/[node:field_news:value]/[node:nid].html;其中,[node:field_news:value]表示分类字段的key值“company、industry”,[node:nid]表示文章的ID号;另外,内容类型中定义的分类字段field_news会自动出现在Browse_available_tokens中,因此,不需要刻意去记忆规则的书写方式,只需要根据需求,知道在哪儿取哪个变量,然后按照目标网址的形式组合起来即可;
 
  (3)在Content_type选项下勾选规则Path_pattern要应用于的内容类型,剩下的其它信息可根据实际情况填写即可;
 
  (4)保存之后,重建缓存,再次发布文章时,文章的中文网址会自动从“/node/29”形式变成“/industry/29.html”形式。