Здравствуйте. Прошу помощи. Пишу модуль, который изменяет данные на страницу корзины:
<?phpfunction MYMODULE_form_alter(&$form, $form_state, $form_id){
$i = 0;
if($form_id =='uc_cart_view_form'){
for($i = 0;isset($form['items'][$i]['nid']) ;$i++)
{
$form['items'][$i]['total']['#value'] = 0;
$form['items'][$i]['price_item']['#value'] = 0;
}
}
}?>
Вопос №1: сделал через цикл for, а не foreach, потому что $form пишет , что это не массив. Хотя через devil показывает, что массив. Почему так?
Вопрос №2: Как можно использовать функцию с другого модуля в этом хуке:
<?phpfunction uc_multiple_currency_nodeapi(&$node, $op) {
if ($op == 'load') {
$from = variable_get('uc_currency_code',1);
if(!isset($_SESSION['currency_type'])){
$_SESSION['currency_type'] = variable_get('uc_currency_code',1);
$currency_type=$_SESSION['cu=rrency_type'];
}
else{
$currency_type = $_SESSION['currency_type'];
}
$to = $currency_type;
$amt = $node->sell_price;
$ret = currency_api_convert($from, $to, $amt);
if ($ret['status'] == FALSE) {
}
else {
$rusd = $ret['value'];
}
$node->content['display_usd_price'] = array(
'#value' => '<div class="uc-display-usd-price">'. t("!price", array('!price' =>$rusd)) .'</div>',
'#value2' => '<div class="uc-display-usd-price">'. t("!price", array('!price' =>$currency_type)) .'</div>',
'#access' => $enabled['display_usd_price'],
'#weight' => $weight['sell_price'],
);
}
}?>
а конкретно вот эту <?php $ret = currency_api_convert($from, $to, $amt);?>
которая идет с модуля currency_api:
<?phpfunction currency_api_convert($currency_from, $currency_to, $amount = 1, $decimals = NULL) {
$currency_array = array(
's' => 'Currencies',
'l1' => 'Last',
'd1' => 'Date',
't1' => 'Time'
);
$result = array();
$result['status'] = FALSE;
$result['message'] = NULL;
$result['value'] = 0;
$result['rate'] = 1.0;
$result['timestamp'] = NULL;
$result['date'] = NULL;
$result['time'] = NULL;
$from = drupal_strtoupper($currency_from);
$to = drupal_strtoupper($currency_to);
if ($from == $to) {
return array(
'status' => TRUE,
'message' => 'success',
'value' => $amount,
'rate' => 1.0,
'timestamp' => time(),
'date' => date('n/j/Y'),
'time' => date('g:ia'),
);
}
?>
Комментарии
Вопос №1: сделал через цикл for, а не foreach, потому что $form пишет , что это не массив.
именно масив, как раз сечас этим и занимаюсь
пример,установить для элементов вес
<?php
$i = 0;
foreach (element_children($form) as $element) {
if (isset($form[$element]['#type']) && $form[$element]['#type'] == 'value') {
continue; // пропускаем невидимые элементы формы
}
$form[$element]['#weight'] = $i; // ставим вес
$i = $i + 5; // шаг 5, чтобы была возможность вклинить элементы между
}
?>
Обыкновенно функцию вызываем
$ret = currency_api_convert($from, $to, $amt);
Возможно у вас она в не в файле .module, тогда нужно перед ней сделать инклуд соответствующего файла. Ну и естественно - смотрим наличие аргументов для данной функции, если их нет - берём
Спасибо огромное . Сейчас буду пробывать