【问题标题】:How to use the $content variable within a module in Drupal 7, Ubercart 3如何在 Drupal 7、Ubercart 3 的模块中使用 $content 变量
【发布时间】:2012-03-06 04:40:25
【问题描述】:

我正在运行最新版本的 Drupal 7 和 Ubercart 3。我正在尝试从 $content 变量中捕获日期以在模块中使用。具体来说,我正在尝试从自定义产品字段中捕获数据,并在某些产品属性/选项中显示该数据。

这样做的目的是为每个产品的每个属性创建自定义描述。

似乎 $content 变量在 uc_attribute.module 中不可用。使用 $content['field_original_size'];返回:未定义的变量内容。如果我使用渲染函数,我不会返回任何错误或数据。这是我目前所拥有的:

function theme_uc_attribute_option($variables) {
$original_size = render($content['field_original_size']);

if($variables['option'] == 'Original'){
  $output = $variables['option'];
  $output .= ', ' . $original_size;
  if ($variables['price']) {
    $output .= ', ' . $variables['price'];
  }
}
else{
  $output = $variables['option'];
  if ($variables['price']) {
    $output .= ', ' . $variables['price'];
  }
}
  return $output;
}

似乎最简单的方法是使用 token_replace() 函数,所以这是我现在正在尝试但不起作用的方法。没有错误,但令牌没有被替换。

function theme_uc_attribute_option($variables) {
if($variables['option'] == 'Original'){
  $output = $variables['option'];
  if ($variables['price']) {
    $output .= ', ' . '[node:field-medium]';
    $output .= ', ' . $variables['price'];
    token_replace($output);
  }
}
else{
  $output = $variables['option'];
  if ($variables['price']) {
    $output .= ', ' . $variables['price'];
  }
}
  return $output;
}

【问题讨论】:

    标签: drupal variables attributes ubercart


    【解决方案1】:

    你可以打印出 $variables,看看你需要的东西是否在那里。

    【讨论】:

    • 谢谢!一个好主意,但存储在 $variables 中的唯一数据是选项名称和价格。
    【解决方案2】:

    我认为这是因为您没有使用对 $variables 的引用来声明您的函数。我相信它应该被称为function theme_uc_attribute_option(&$variables) {}。这告诉 PHP 发送对变量的引用,而不是变量的 value。发送该值时,对它的任何更改都是本地的。如果使用引用,则更改会返回到变量。有关详细信息,请参阅PHP Manual。我刚刚注意到这是几岁了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 2012-10-06
      • 2012-04-05
      • 2012-04-21
      • 2012-06-27
      • 1970-01-01
      • 2011-09-24
      相关资源
      最近更新 更多