Ubercart price és ubercart attribute price módosítása

etyike képe

Amit szeretnék:
termékeknek meg van adva - nem forintban - ár, és szeretném azt átváltani forintba. Ezt az új számított ár jelenjen meg a termék oldalon - mind a termék áránál és a tulajdonságnál.
Amit megoldottam:
'template.php' fájlba írtam

function theme_uc_price($variables) {
  // variable_get('exchange_value', 1) - egy beállítható váltója a forintnak
  return $variables['price'] = $variables['price'] * variable_get('exchange_value', 1);
}

viszont a tulajdonságnál csak a tulajdonság eredeti módosító ára jelenik meg.
A 'uc_attribute.module' fájl 735-ödik sora után illesztettem be ezt:
$option->price = $option->price * variable_get('exchange_value',1 );,
így a továbbiakban jól működik. Viszont látom ez nem 'hook_' függvény - és ezt nem illik babrálni.
A 'uc_cart_item' már 'hook_', de abban az értékek már 'render'-elve - nem tudom jól mondom-e - vannak; és azokat nem tudom hogyan lehet módosítani.

Válaszotok előre is köszönöm

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Fórum: 
etyike képe

Próbáltam 'form_alter'-t használni, de az eredmény nem látszik.

function my_form_alter(&$form, &$form_state, $form_id) {
  if (strpos($form_id, 'add_to_cart_form') || strpos($form_id, 'add_product_form')) {
    $my_form = $form['node']['#value'];
    $my_attributes = $my_form->attributes;
    foreach ($my_attributes as $my_attribute => $my_akey) {
      foreach ($my_attributes[$my_attribute]->options as $my_option => $my_okey) {
        if ($my_attributes[$my_attribute]->options[$my_option]->price > 0) {
          // ha 'valtozoba mentem' sem adja meg az értéket; a '->price'  miatt lehet, 'dsm'-mel lehet látni az új értéket
          $form['node']['#value']->attributes[$my_attribute]->options[$my_option]->price = $form['node']['#value']->attributes[$my_attribute]->options[$my_option]->price * variable_get('exchange_value', 1);
        }
      }
    }
  }
}
0
0

Kellemes és szép napot a továbbiakban
etyike

fox mulder képe

Nem az van, hogy a strpos() egyezés esetén 0-t (nulla) ad vissza ami az if (...)-ben FALSE?

0
0

Fox Mulder

etyike képe

A hiba nem tudom mi (ebben tudtok-e segíteni), de miután ki-, és bekapcsoltam a modult és szuperül működik. Attól még elgondolkodtam a feltétek cseréjén.

0
0

Kellemes és szép napot a továbbiakban
etyike

etyike képe

Szomorúan kellett észrevennem, hogy egy javascript-et hagytam bennt és az módosítja az árat. A form_alter nem működik most sem.

0
0

Kellemes és szép napot a továbbiakban
etyike

etyike képe

Nem tudom szabad-e megosszam.

/* hook.module fájl tartalma */
/* a termék tulajdonságainál megjelenő ár módosítása */
function hook_form_alter(&$form, &$form_state, $form_id) {
  if (strpos($form_id, 'add_to_cart_form')) {
    $price = array();
    $name = array();
    $nid = $form['node']['#value']->nid;
    $formid = 'uc_product_add_to_cart_form_' . $nid;
    if ($form_id == $formid) {
      $my_form = $form['node']['#value'];
      $my_attributes = $my_form->attributes;
      foreach ($my_attributes as $my_attribute => $my_akey) {
        foreach ($my_attributes[$my_attribute]->options as $my_option => $my_okey) {
          if ($my_attributes[$my_attribute]->options[$my_option]->price > 0) {
            $price[$my_option] = '+' . round($form['node']['#value']->attributes[$my_attribute]->options[$my_option]->price * variable_get('exchange_value', 100)) . 'HUF'; // HUF is lehet változó
            $name[$my_option] = $form['node']['#value']->attributes[$my_attribute]->options[$my_option]->name . ', ';
          } else {
            $price[$my_option] = '';
            $name[$my_option] = $form['node']['#value']->attributes[$my_attribute]->options[$my_option]->name;
          }
        }
      }
      foreach ($form['attributes'] as $attribute => $key0) {
        if (is_numeric($attribute)) {
          foreach ($form['attributes'][$attribute] as $options) {
            if (is_array($options)) {
              foreach ($options as $option => $key1) {
                $form['attributes'][$attribute]['#options'][$option] = $name[$option] . $price[$option];
              }
            }
          }
        }
      }
    }
  }
}
/* kosárnál megjelenő ár módosítása */
function hook_uc_cart_item($op, $item) {
  switch ($op) {
    case 'load':
      $newprice = NULL;
      if (!isset($item->data['attributes'])) {
        return;
      }
      $options = _uc_cart_product_get_options($item);
      foreach ($options as $option) {
        $newprice += $option['price'];
      }
      $item->price += $newprice;
      break;
  }
}
/* template.php tartalma */
function theme_uc_price($variables) {
  return $variables['price'] = round($variables['price'] * variable_get('exchange_value', 100)) . 'HUF'; // HUF is lehet változó
}

Végiglépked a tömbökön és osztálytulajdonságokon és a megfelelő helyen hozzáadja az árat.
0
0

Kellemes és szép napot a továbbiakban
etyike

etyike képe

Ez esetben 'admin/store/settings/products' itt az attributes settings tab beállításai nem adnak eredményt, valahol be kell álltani.

0
0

Kellemes és szép napot a továbbiakban
etyike