代码之家  ›  专栏  ›  技术社区  ›  jonstjohn

如何以编程方式为drupal节点链接输出自定义路径(w/o pathauto)?

  •  0
  • jonstjohn  · 技术社区  · 15 年前

    我想能够 以编程方式将输出路径更改为Drupal节点,而不使用PathAuto模块 . 我们目前处理大量在后端添加的内容(每天数千篇文章)。我不想使用pathauto生成路径别名,而是希望drupal输出默认链接,但为了更好的seo,附加了一个部分标题。

    例如:

    /节点/ 123

    将更改为

    /node/123/这是文章标题(此路径当前适用于现有节点)

    我了解如何在主题的基础上通过修改主题/视图模板来实现这一点,但我希望这样做,以便在任何时候节点的链接显示在任何位置,它都会添加标题插头。

    此外,我希望将其限制为特定的内容类型(例如,“文章”)。

    我正在使用 德鲁帕尔5 我愿意 不使用PathAuto (如果不需要,我不想存储数十万个路径别名)

    我正在寻找一个不使用PathAuto的解决方案

    3 回复  |  直到 15 年前
        1
  •  5
  •   Sean McSomething    15 年前

    Drupal有一个内部机制,可以从“/node/1234/”映射到“/blogs/查看我的猫刚刚做了什么”。它是核心系统的一部分,几乎在任何地方都可以使用,在每个请求中,甚至不需要你去问。它足够快,你几乎不会注意到它的发生-在Drupal中还有很多其他的事情-慢得多。

    如果您关心URL在前端的显示方式,那么应该使用url()函数(和对节点内容执行相同操作的过滤器)以另一种方式处理查找。

    PathAuto出现的地方是,当您创建或编辑内容时,它将在Drupal的URL_别名表中生成许多条目(基于您创建的任何PathAuto规则)。这是一次性费用。除非你以天文数字的速度生成内容,否则这样做的成本可以忽略不计。

    您已经在支付通过使用Drupal查找URL别名的费用。没有黑客核心,你就无法真正避免它。在数据库中存储“数十万个路径别名”并不是什么大不了的事情——如果将其分解为实际的存储需求,那么您只需要查看少量的兆字节。由于表索引良好,查找实际上是即时的。这是核心功能,即使您的系统上有PathAuto,也会发生这种情况。

    除非您对要将节点映射到的URL类型有一些非常奇怪的要求,否则您所做的任何操作都只是重新创建PathAuto现有功能的一个子集(并可能引入一系列新的bug)。

        2
  •  0
  •   Niels    15 年前

    尽管PathAuto可能是最好的选择,但您可以使用hook_菜单函数将URL装载到方法。该方法可以根据URL以编程方式查找所需的节点。

        3
  •  0
  •   greggles    15 年前

    您可以尝试使用这两个功能:

    http://api.drupal.org/api/function/custom_url_rewrite_outbound http://api.drupal.org/api/function/custom_url_rewrite_inbound

    但实际上,PathAuto是这样做的“正确”方法。