【问题标题】:Drupal: assign block to a specific content typeDrupal:将块分配给特定的内容类型
【发布时间】:2010-04-20 19:52:48
【问题描述】:

我制作了一个名为 node-mynode.tpl.php 的自定义模板 每当请求类型为 mynode 的节点时,node-mynode.tpl.php 被自动使用。

但是,现在用户希望在这种情况下查看特定的菜单块。

问题: 如何将块分配给特定的内容类型?

提示:我已经开始使用 Pathauto 查看 URL 别名。 我怀疑这个方向可能有一个解决方案。

【问题讨论】:

    标签: drupal drupal-blocks pathauto


    【解决方案1】:

    在 Drupal 6 中,您可以配置块的可见性设置。单击管理员后端中您的块旁边的“配置”链接,然后按照以下步骤操作 -

    1) 在“页面特定可见性设置”选项卡下选择“显示以下 PHP 代码是否返回 TRUE(PHP 模式,仅限专家)”选项。

    2) 输入以下 PHP 代码,检查当前节点的节点类型并相应返回 TRUE -

    <?php 
       if( arg(0) != 'node' || !is_numeric(arg(1)) )
       { return FALSE;
       }
    
       //load a fully-populated Drupal node object
       $temp_node = node_load(arg(1));
    
       if( $temp_node->type == 'mynode' )       //check the node type
       {   return TRUE;    //display block
       }
    ?>
    

    这应该可以工作....

    【讨论】:

    • 旁注:自 Drupal 4.7 以来,这已成为可能。有关使用 PHP 实现块可见性和大量代码示例的更多信息,请参阅drupal.org/node/60317
    【解决方案2】:

    你可以使用上下文模块

    【讨论】:

      【解决方案3】:

      为您的所有mynode 类型节点提供一个以/mynode 开头的自动别名,并为该块使用页面特定的可见性设置,仅在以/mynode/* 开头的页面上显示。

      【讨论】:

      • ...但不实用..我现在有超过 500 个这种类型的节点,还有数百个。还有其他方法吗?
      • 为什么不实用?您可以删除为节点设置的任何 url 别名,然后使用路径替换模式一次为所有节点批量生成别名。通常类似于mynode/[title-raw]
      • 我的错误。这个解决方案确实有效。 Url Alias 模块能够为旧节点重新命名,而新节点被正确别名。我有一个自动批处理 Feed,而且效果也很好!
      • 我不会推荐这种方法。路径别名用于可用性和 SEO,而不是用于站点构建。别名为“mynode/node-title”的节点在“node/123”处仍可用,但该块不会在该页面上呈现。一旦你走上这条路,你就不能再安全地授予用户定义自定义别名的权利,因为它们可能会破坏你的块可见性方法。
      • 有一个模块——全局重定向。它将检查任何节点的其他别名并重定向到用户定义的路径别名。是的,当你走这条路时,你不能让你的用户能够设置自定义别名。但你为什么要这样做呢?您是否希望您的用户创建像 example.com/this/site/really/sucks/so/much/i-hate-it 这样的疯狂网址?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      相关资源
      最近更新 更多