gpt4 book ai didi

drupal - 使用 token 作为数据选择器

转载 作者:行者123 更新时间:2023-12-01 11:50:09 24 4
gpt4 key购买 nike

我创建了以下 token ;但是,当我尝试在循环操作中使用 site:coupons 作为数据选择器时它不会出现在数据选择浏览器中。请注意,当我使用例如“在网站上显示消息”操作时,它确实显示为替换模式。

我花了很多时间在互联网和规则的 token 问题队列中搜索,我也尝试阅读核心 token 、 token 和规则的源代码。我还发现了一些信息,比如数据选择器没有标记!或规则仅适用于实体!到目前为止,无论我多么努力,我都无法让它发挥作用。我的数据不是实体。有没有办法将它与规则结合起来?我找不到关于此的任何官方文档,所以我创建了一个问题,希望该规则的一些专家可以帮助我。

注意:如果我在下面的代码中用优惠券链接替换网站,它甚至不会作为替换模式出现在规则中。但它在其他任何地方都可以作为 token 正常工作,但在规则中

提前致谢

<?php
/**
* Implements hook_token_info().
*/
function coupon_link_token_info() {
$types['coupon-link'] = array(
'name' => t("Coupon link coupon info"),
'description' => t("Info about linked coupon via url."),
);

// Andy Pangus specific tokens.
$tokens['site']['coupon-code'] = array(
'name' => t("Coupon Link Coupon Code"),
'description' => t("The code of the coupon entered via url."),
);
$tokens['site']['coupon'] = array(
'name' => t("Coupon Link Coupon"),
'description' => t("The coupon entered via url."),
'type' => 'commerce_coupon'
);
$tokens['site']['coupons'] = array(
'name' => t("Coupon Link List Coupons"),
'description' => t("The coupons entered via url."),
'type' => 'array'
);

return array(
'types' => $types,
'tokens' => $tokens,
);
}

/**
* Implements hook_tokens().
*
* @ingroup token_example
*/
function coupon_link_tokens($type, $tokens, array $data = array(), array $options = array()) {
$replacements = array();
$sanitize = !empty($options['sanitize']);

// Text format tokens.
if ($type == 'site' && __coupon_link_get_coupon_code()) {
//$format = $data['format'];

foreach ($tokens as $name => $original) {
switch ($name) {
case 'coupon-code':
// Since {filter_format}.format is an integer and not user-entered
// text, it does not need to ever be sanitized.
$replacements[$original] = $sanitize ? filter_xss(__coupon_link_get_coupon_code()) : __coupon_link_get_coupon_code();
break;
case 'coupon':
// Since the format name is user-entered text, santize when requested.
$replacements[$original] = __coupon_link_get_coupon(__coupon_link_get_coupon_code());
break;
case 'coupons':
// Since the format name is user-entered text, santize when requested.
$replacements[$original] = array(__coupon_link_get_coupon(__coupon_link_get_coupon_code()));
break;
}
}
}
return $replacements;
}
?>

最佳答案

一些事情。

  1. token 的格式为 [type:token],如 the hook_token_info api 中所述。页。对于您的示例,它将是 [coupon-link:coupon]。我不确定您为什么要将 token 附加到 site 数组,因为您的自定义优惠券 token 可能与 *site_url* 或 *site_name* 等站点范围的 token 无关。

  2. 因为类型是机器名称,您应该将其更改为 coupon_link,因为带破折号的机器名称不是 Drupal 标准。

  3. 如果你真的迷路了,我建议你也看看 the token example来自示例模块。

关于drupal - 使用 token 作为数据选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12902984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com