【问题标题】:Drupal Token Examples of UsageDrupal 令牌使用示例
【发布时间】:2010-02-15 08:54:29
【问题描述】:

我需要使用某种占位符在另一个节点中包含一个节点内容,例如:[node-5663] 将被转换为 node-id 与 5663 匹配的节点的内容(正文)。

上面的例子只是一个例子,我需要的实际上是这样的:[table-TABLE-ID] 其中TABLE-ID 将是我在节点中定义的一个字段(使用 CCK)。

搜索和匹配我需要获取的内容没有任何问题,但我缺少的是如何使用令牌。

欢迎任何帮助:)

【问题讨论】:

    标签: php drupal token


    【解决方案1】:

    虽然我对您想要的确切细节有点模糊,但基本前提实际上非常简单。

    您将需要构建一个自定义模块,该模块仅定义一些标记,类似于以下内容:

    /**
     * Implements hook_theme().
     */
    function my_module_theme() {
      return array(
        'my_module' => array(
          'arguments' => array('object' => NULL)
        ),
      );
    }
    
    /**
     * Implements hook_token_list().
     */
    function my_module_token_list($type = 'all') {
      if ($type == 'node' || $type == 'all') {
        $tokens = array();
        $tokens['my_module']['table-TABLE-ID'] = t('description').
        return $tokens;
      }
    }
    
    /**
     * Implements hook_token_values().
     */
    function my_module_token_values($type, $object = NULL) {
      if ($type == 'node') {
        ($table, $id) = explode('-', $object->my_field['value']);
        $tokens['table-' . $object->my_field['value']] = theme('my_module', db_fetch_object(db_query("SELECT * FROM {" . $table . "} WHERE id = %d", $id)));
        return $tokens;
      }
    }
    
    function theme_my_module($object) {
      return '<div>' . $object->content . '</div>';
    }
    

    注意:所有这些代码都是理论上的,我几乎可以说它不会工作。以我在这里的方式执行 db_query 也是非常不安全的(这是我对您想要的内容的解释),相反,您应该为您想要的每种不同类型的查询('table-node-ID',等)。

    希望这有点帮助。

    【讨论】:

    【解决方案2】:

    如果您需要从 php 中的另一个模块访问令牌,一个快速的方法是使用 drupal 函数“token_replace($text)”

    您将可能包含令牌的文本传递给它,它将返回替换令牌的文本。

    Drupal 7 示例

    <?php
    $tokentext = "I'm the ga_tokenizer:ga-term [ga_tokenizer:ga-term]";
    $processedText = token_replace($tokentext);
    print $processedText;
    ?>
    

    这将输出 我是 ga_tokenizer:ga-term 用于查找页面的搜索词

    如果您只想要实际的令牌值,请使用

    <?php
    $tokentext = "[ga_tokenizer:ga-term]";
    $processedText = token_replace($tokentext);
    ?>
    

    【讨论】:

    猜你喜欢
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2011-05-13
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多