php - Drupal token 使用示例

标签 php drupal token

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

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

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

欢迎任何帮助:)

最佳答案

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

您将需要构建一个自定义模块,它只定义一些 token ,类似于以下内容:

/**
 * 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 也是非常不安全的(这是我对您想要的内容的解释),相反,您应该为您想要的每种不同类型的查询拥有一个 token ('table-node-ID',等)。

希望这对您有所帮助。

关于php - Drupal token 使用示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2264795/

相关文章:

sql - 如何将 SQL Server 作业名称传递给该作业内的存储过程?

c++ - 为什么在将字符串标记与另一个字符串进行比较时会不断出现此错误?

php - 比较大型 MySQL 数据集与 PHP

php - 如果所有产品都有库存显示或隐藏

php - Drupal 8.8.5 上奇怪的文件/文件夹权限错误

php - 如何在 PHP 单元测试中处理对未定义函数的调用

ios - 如何向 AWS Pinpoint 提供 ios 设备 token

php - 显示数据库中的一行并移至下一列

javascript - PHP REST 服务器 - AJAX - JSON

php - 检查用户是否已经存在于drupal中