БЛОГОДЖУМЛА - БЛОГ О ДЖУМЛА

Как вывести свойство товара "Цвет" не select-ом, а radiobutton

  • Категория: Virtuemart 1
  • Автор:
  • Просмотров: 9841

 

 

  Заказчик попросил вывести в карточке товара свойство "Цвет" не select-ом, а radiobuttons.

Как создать товару свойство "Цвет" описывать не буду - это элементарно делается в админке virtuemart и много раз описывалось.

Открываем файл
/components/com_virtuemart/themes/default/templates/product_details/includes/addtocart_advanced_attribute.tpl.php

>

Изменение будет заключаться в том, что для свойства "Цвет" будем выводить свойства радиокнопками, а во всех остальных случаях - стандартным выпадающим списком. А теперь интрига :) - название класса радиокнопки будет  названием цвета в транслите. Как Вы думаете, зачем? Догадки прошу в комменты.

Вот такой файл мы в итоге получим. Как всегда сохраняем в UTF-8 без ВОМ (например, в замечательном редакторе notepad++)



<?php
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
if (!function_exists('vm_translate')) {
function vm_translate($title)
 {
 $tbl= array(
 'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'e', 'ж'=>'g', 'з'=>'z',
 'и'=>'i', 'й'=>'y', 'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o', 'п'=>'p',
 'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u', 'ф'=>'f', 'ы'=>'i', 'э'=>'e', 'А'=>'A',
 'Б'=>'B', 'В'=>'V', 'Г'=>'G', 'Д'=>'D', 'Е'=>'E', 'Ж'=>'G', 'З'=>'Z', 'И'=>'I',
 'Й'=>'Y', 'К'=>'K', 'Л'=>'L', 'М'=>'M', 'Н'=>'N', 'О'=>'O', 'П'=>'P', 'Р'=>'R',
 'С'=>'S', 'Т'=>'T', 'У'=>'U', 'Ф'=>'F', 'Ы'=>'I', 'Э'=>'E', 'ё'=>"yo", 'х'=>"h",
 'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>"", 'ь'=>"", 'ю'=>"yu", 'я'=>"ya",
 'Ё'=>"YO", 'Х'=>"H", 'Ц'=>"TS", 'Ч'=>"CH", 'Ш'=>"SH", 'Щ'=>"SHCH", 'Ъ'=>"", 'Ь'=>"",
 'Ю'=>"YU", 'Я'=>"YA", ' '=>"-", '('=>'', ')'=>'', ','=>'', '.'=>''
 );

 $translate = mb_strtolower(strtr($title, $tbl));
 return $translate;
 } 
}
foreach($attributes as $attribute) {
 ?>
 <div class="clearfix vmattribute">
 <?php if ($attribute['title']=='Цвет') {
 $i=1;
 foreach($attribute['options_list'] as $attrValue) {
 if($i==1) { $checked='checked';} else { $checked='';}
 echo '<input type="radio" class="'.vm_translate($attrValue['base_value']).'" name="'.$attribute['titlevar'].$attribute['product_id'].'" id="'.vm_translate($attribute['titlevar']).$attribute['product_id'].$i.'" value="'.$attrValue['base_var'].'" '.$checked.' tabindex="'.$i.'" title="'.$attrValue['base_value'].'">'.$attrValue['base_value'];
 $i++;
 }
 } else { ?>
 <label for="<?php echo vm_translate($attribute['titlevar']) ?>_field" class="vmAttribChildDetail"><?php echo $attribute['title'] ?>:</label>
 <select class="inputboxattrib" id="<?php echo $attribute['titlevar'] ?>_field" name="<?php echo $attribute['titlevar'].$attribute['product_id'] ?>">
 <?php foreach ( $attribute['options_list'] as $options_item ) : ?>
 <?php if( isset( $options_item['display_price']) ) : ?>
 <option value="<?php echo $options_item['base_var'] ?>"><?php echo $options_item['base_value'] ?> (<?php echo $options_item['sign'].$options_item['display_price'] ?>)</option>
 <?php else : ?>
 <option value="<?php echo $options_item['base_var'] ?>"><?php echo $options_item['base_value'] ?></option>
 <?php endif; ?>
 <?php endforeach; ?>
 </select>
 <?php } ?>
 </div>
<?php } ?>

 

 
Back to top