Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Libraries > Virtuemart


Автор: SergV 1.8.2008, 11:27
Привет! Знаю что эта тема возможно не в тему, но вопрос для спецов пхп и тех кто знаком с этим магазином.

Ситуация такая, что стандартного варианта ниспадающего меню свойств товара и простого текстового дополнительного поля нехватает, а других вариантов нет. Мне нужно сделать 3 варианта выбора свойств в виде радио батонов, с мини эскизами, с возможностью увеличения эскизов для просмотра. Я пытался сам разобраться что к чему, но моих поверхностных знаний php просто не хватает, а английского я не знаю чтобы задать вопрос на оф-сайте.

Поэтому прошу помощи тут, так как больше не знаю где спросить.
 
Что я сделал пока, так это переписал файл addtocart_advanced_attribute.tpl.php таким образом:
Код

foreach($attributes as $attribute) { 
echo '<div class="vmAttribChildDetail" style="margin:3px; border: 1px solid #ccc;">';
echo '<div align="left" class="vmAttribChildDetail" style="margin:3px; border-bottom: 1px solid #ccc;">';
echo '<label for="'.$attribute['titlevar'].'_field">'.$attribute['title'].'</label>';
echo '</div>';    
$radio=(($attribute['title']=='Color')||($attribute['title']=='Lamelen')||($attribute['title']=='Stoerung'))?'1':'0';
        
echo '<div class="vmAttribChildDetail" style="margin:3px; border: 0px solid #cc0000;">';
if ($radio!=1) echo '<select style="width: 100%;" name="'.$attribute["title"].$attribute["product_id"].'">';
            
foreach ( $attribute['options_list'] as $options_item ) {
if( isset( $options_item['display_price']) ) {
if ($radio==1) { 
echo '<input type="radio" name="'.$attribute["title"].$attribute["product_id"].' value="'.$options_item["base_var"].'">'.$options_item["base_value"].' ('.$options_item["sign"].$options_item["display_price"].')';
} else {
echo '<option value="'.$options_item["base_var"].'">'.$options_item["base_value"].' ('.$options_item["sign"].$options_item["display_price"].')</option>';
}
} else {
if ($radio==1) {            
echo '<input type="radio" name="'.$attribute["title"].$attribute["product_id"].' value="'.$options_item["base_var"].'">'.$options_item['base_value'];
} else {
echo '<option value="'.$options_item["base_var"].'">'.$options_item["base_value"].'</option>';
}
}
}
if ($radio!=1) echo '</select>';
echo '</div>'; 
echo '</div>';
}

это позволило вывести отдельные свойства в виде радио батонов, с проверкой по титлу. Но столкнулся с тем, что параметры не передаются в карзину, и по той причине, что обработчик связан только со списком. Пытался химичить методом тыка, но не чего не вышло. Насколько разобрался, функция list_attribute_drop отвечает за получение параметров по выделенным пунктам, и передачу их. Вот только как там что поправить, чтобы работало для обоих вариантов, выпадающего списка и радио кнопок?

Может кто подскажет, как побороть эту проблему?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)