如何在Drupal 7,Ubercart 3中的模块中使用$ content变量

时间:2012-02-14 19:45:49

标签: drupal variables attributes ubercart

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

重点是为每个产品的每个属性创建一个自定义描述。

似乎uc_attribute.module没有提供$ content变量。使用$ 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;
}

2 个答案:

答案 0 :(得分:0)

你可以打印出$变量,看看你需要的是什么。

答案 1 :(得分:0)

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