Как использовать переменную $ content в модуле в Drupal 7, Ubercart 3 - PullRequest
0 голосов
/ 14 февраля 2012

Я использую последние версии 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;
}

Ответы [ 2 ]

0 голосов
/ 04 июля 2012

Я думаю, это потому, что вы не объявили свою функцию, используя ссылку на переменные $. Я считаю, что это должно называться function theme_uc_attribute_option(&$variables) {}. Это говорит PHP отправлять ссылку на переменную вместо значения переменной. Когда значение отправляется, любые изменения в нем являются только локальными. Если используется ссылка, изменения возвращаются к переменной. См. Руководство по PHP для подробностей. Я только заметил, сколько ему лет.

0 голосов
/ 14 февраля 2012

Вы можете распечатать переменные $ и посмотреть, что вам нужно где-то там.

...