Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 2237 Просмотров
*

My Sun

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Здравствуйте, товарищи !  ^-^

Имеется товар с несколькими свойствами "материал" и "размер" и, соответственно, разными ценами.
В стандартных flypage выбор такого товара с определёнными свойствами осуществляется при помощи выпадающих списков,
а мне хотелось бы сделать так, чтобы все свойства товара были отображены в таблице такого вида :



и чтобы прямо в таблице можно было задать требуемое количество товара с теми или иными свойствами и "оптом" положить их в корзину.
Порыл интернет, готовых решений не нашёл, решил сделать сам, только знаний не хватает.
Планирую во fly.tpl.php получить доступ к перечню свойств товара и соответствующим ценам, в цикле их перебрать, формируя таблицу,
только не знаю, как именно это сделать. crazy!  Здесь очень бы хотелось хоть какие то советы получить.
И вообще, на правильном ли я пути или есть более простые (или даже готовые) варианты решения ?

Буду благодарен за ваши советы.

PS : VirtueMart 1.1.5
« Последнее редактирование: 15.09.2010, 15:07:16 от My Sun »
*

My Sun

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Я сделал.
*

dedalik

  • Захожу иногда
  • 98
  • 0 / 2
поделись как сделал
*

My Sun

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Предупреждаю, таблица моя сильно привязана к данным, т.е. ваши данные наверняка будут отличаться от моих, поэтому наверняка придётся под ваш проект настраивать.
Цены на товары различных размеров я загнал в расширенные(advanced) атрибуты под названием Варианты.
Также пришлось изменить структуру БД добавив к товару ещё один допатрибут - строку с размерами.
Во flypage накрапал такой код :
Код
<?php // СТРОИМ ТАБЛИЦУ
$tablo = array( array("drob","opis","MM","M","Sr","B") );
//Получаем расширенные(advanced) атрибуты - дроби,описания,цены - и загоняем в tablo
$var = array_values( $ps_product_attribute -> getAdvancedAttributes( $product_id ) );
$var = array_values( $var[0] );
$var = array_values( $var[1] );
for ( $i=0; $i<sizeof($var); $i++ ) {
$arg_values = array_values($var[$i]);
$str = explode( "/", $arg_values[0], 3 );
$tablo[$str[1]]["drob"] = $str[1];
$tablo[$str[1]]["opis"] = $str[2];
switch ( $str[0] ) {
case "ММ" :
$tablo[$str[1]]["MM"] = $arg_values[2];
break;
case "М" :
$tablo[$str[1]]["M"] = $arg_values[2];
break;
case "Ср" :
$tablo[$str[1]]["Sr"] = $arg_values[2];
break;
case "Б" :
$tablo[$str[1]]["B"] = $arg_values[2];
break;
}
}
unset($var,$arg_values);

//Получаем пользовательские(custom) атрибуты - размеры - и загоняем в sizes
global $db;
$sizes = array( array( "S","V","T" ), array( "MM","M","Sr","B" ) );
$q = "SELECT product_id, sizes FROM #__{vm}_product WHERE product_id='".$product_id."'";
$db->query( $q );
$db->next_record();
$custom_attribute_list = $db->f( "sizes" );
if( $custom_attribute_list ) {
$fields = explode( ";", $custom_attribute_list );
foreach( $fields as $field ) {
$str = explode( "/", $field );
for ( $i=0; $i<sizeof($str); $i++ ) {
$sizes[$str[1]][$str[0]] = $str[2];
}
}
}
unset($q,$custom_attribute_list,$fields);

echo "<table width='100%' cellpadding='5' cellspacing='0' border='1'>
<tbody>
        <tr class='bodies'>
<td width='200'><strong>".$product_sku."</strong></td>
            <td colspan='2' width='364'><strong>".$product_s_desc."</strong></td>
            <td align='center' width='30'><strong>ММ</strong></td>
            <td align='center' width='30'><strong>М</strong></td>
            <td align='center' width='30'><strong>СР</strong></td>
            <td align='center' width='30'><strong>Б</strong></td>
        </tr>
        <tr>
<td rowspan='".(sizeof($tablo)+2)."' valign='top' align='center' width='200'>".$product_image."<br/>".$this->vmlistAdditionalImages( $product_id, $images ).$size."</td>
            <td valign='top' align='center' width='30'>".$tablo[1]["drob"]."</td>
            <td valign='top' align='left' width='364'>".$tablo[1]["opis"]."</td>";

echo   "<td valign='top' align='center'>";
if ( $tablo[1]["MM"]<>0 ) { echo
"<form action='".$mm_action_url."index.php' method='post' name='addtocart' id='".uniqid('addtocart_')."' class='addtocart_form' onsubmit='handleAddToCart( this.id );return false;''; >
<input type='hidden' name='product_id' value='".$product_id."' />
<input type='hidden' name='prod_id[]' value='".$product_id."' />
<input type='hidden' id='Варианты_field' name='Варианты".$product_id."' value='ММ/".$tablo[1]["drob"]."/".$tablo[1]["opis"]."'>
<input type='hidden'  id='quantity3' name='quantity[]' value='1' />
<input type='hidden' name='flypage' value='shop".$flypage."' />
<input type='hidden' name='page' value='shop.cart' />
<input type='hidden' name='manufacturer_id' value='".$manufacturer_id."' />
<input type='hidden' name='category_id' value='".$category_id."' />
<input type='hidden' name='func' value='cartAdd' />
<input type='hidden' name='option' value='com_virtuemart' />
<input type='submit' value='".$GLOBALS['CURRENCY']->convert( $tablo[1]["MM"], "USD" )."' title='Купить 1 шт по цене ".$GLOBALS['CURRENCY']->convert( $tablo[1]["MM"], "USD" )." ".$GLOBALS['product_currency']."' />
</form>";
}
echo"</td>
            <td valign='top' align='center'>";
if ( $tablo[1]["M"]<>0 ) { echo
"<form action='".$mm_action_url."index.php' method='post' name='addtocart' id='".uniqid('addtocart_')."' class='addtocart_form' onsubmit='handleAddToCart( this.id );return false;''; >
<input type='hidden' name='product_id' value='".$product_id."' />
<input type='hidden' name='prod_id[]' value='".$product_id."' />
<input type='hidden' id='Варианты_field' name='Варианты".$product_id."' value='М/".$tablo[1]["drob"]."/".$tablo[1]["opis"]."'>
<input type='hidden'  id='quantity3' name='quantity[]' value='1' />
<input type='hidden' name='flypage' value='shop".$flypage."' />
<input type='hidden' name='page' value='shop.cart' />
<input type='hidden' name='manufacturer_id' value='".$manufacturer_id."' />
<input type='hidden' name='category_id' value='".$category_id."' />
<input type='hidden' name='func' value='cartAdd' />
<input type='hidden' name='option' value='com_virtuemart' />
<input type='submit' value='".$GLOBALS['CURRENCY']->convert( $tablo[1]["M"], "USD" )."' title='Купить 1 шт по цене ".$GLOBALS['CURRENCY']->convert( $tablo[1]["M"], "USD" )." ".$GLOBALS['product_currency']."' />
</form>";
}
echo "</td>
            <td valign='top' align='center'>";
if ( $tablo[1]["Sr"]<>0 ) { echo
"<form action='".$mm_action_url."index.php' method='post' name='addtocart' id='".uniqid('addtocart_')."' class='addtocart_form' onsubmit='handleAddToCart( this.id );return false;''; >
<input type='hidden' name='product_id' value='".$product_id."' />
<input type='hidden' name='prod_id[]' value='".$product_id."' />
<input type='hidden' id='Варианты_field' name='Варианты".$product_id."' value='Ср/".$tablo[1]["drob"]."/".$tablo[1]["opis"]."'>
<input type='hidden'  id='quantity3' name='quantity[]' value='1' />
<input type='hidden' name='flypage' value='shop".$flypage."' />
<input type='hidden' name='page' value='shop.cart' />
<input type='hidden' name='manufacturer_id' value='".$manufacturer_id."' />
<input type='hidden' name='category_id' value='".$category_id."' />
<input type='hidden' name='func' value='cartAdd' />
<input type='hidden' name='option' value='com_virtuemart' />
<input type='submit' value='".$GLOBALS['CURRENCY']->convert( $tablo[1]["Sr"], "USD" )."' title='Купить 1 шт по цене ".$GLOBALS['CURRENCY']->convert( $tablo[1]["Sr"], "USD" )." ".$GLOBALS['product_currency']."' />
</form>";
}
echo "</td>
            <td valign='top' align='center'>";
if ( $tablo[1]["B"]<>0 ) { echo
"<form action='".$mm_action_url."index.php' method='post' name='addtocart' id='".uniqid('addtocart_')."' class='addtocart_form' onsubmit='handleAddToCart( this.id );return false;''; >
<input type='hidden' name='product_id' value='".$product_id."' />
<input type='hidden' name='prod_id[]' value='".$product_id."' />
<input type='hidden' id='Варианты_field' name='Варианты".$product_id."' value='Б/".$tablo[1]["drob"]."/".$tablo[1]["opis"]."'>
<input type='hidden'  id='quantity3' name='quantity[]' value='1' />
<input type='hidden' name='flypage' value='shop".$flypage."' />
<input type='hidden' name='page' value='shop.cart' />
<input type='hidden' name='manufacturer_id' value='".$manufacturer_id."' />
<input type='hidden' name='category_id' value='".$category_id."' />
<input type='hidden' name='func' value='cartAdd' />
<input type='hidden' name='option' value='com_virtuemart' />
<input type='submit' value='".$GLOBALS['CURRENCY']->convert( $tablo[1]["B"], "USD" )."' title='Купить 1 шт по цене ".$GLOBALS['CURRENCY']->convert( $tablo[1]["B"], "USD" )." ".$GLOBALS['product_currency']."' />
</form>";
}
echo "</td>
        </tr>";

for ( $i=2; $i<sizeof($tablo); $i++ ) {
   echo
"<tr>
           <td valign='top' align='center' width='30'>".$tablo[$i]["drob"]."</td>
           <td valign='top' align='left' width='364'>".$tablo[$i]["opis"]."</td>
           <td valign='top' align='center'>";
if ( $tablo[$i]["MM"]<>0 ) { echo
"<form action='".$mm_action_url."index.php' method='post' name='addtocart' id='".uniqid('addtocart_')."' class='addtocart_form' onsubmit='handleAddToCart( this.id );return false;''; >
<input type='hidden' name='product_id' value='".$product_id."' />
<input type='hidden' name='prod_id[]' value='".$product_id."' />
<input type='hidden' id='Варианты_field' name='Варианты".$product_id."' value='ММ/".$tablo[$i]["drob"]."/".$tablo[$i]["opis"]."'>
<input type='hidden'  id='quantity3' name='quantity[]' value='1' />
<input type='hidden' name='flypage' value='shop".$flypage."' />
<input type='hidden' name='page' value='shop.cart' />
<input type='hidden' name='manufacturer_id' value='".$manufacturer_id."' />
<input type='hidden' name='category_id' value='".$category_id."' />
<input type='hidden' name='func' value='cartAdd' />
<input type='hidden' name='option' value='com_virtuemart' />
<input type='submit' value='".$GLOBALS['CURRENCY']->convert( $tablo[$i]["MM"], "USD" )."' title='Купить 1 шт по цене ".$GLOBALS['CURRENCY']->convert( $tablo[$i]["MM"], "USD" )." ".$GLOBALS['product_currency']."' />
</form>";
}
echo
"</td>
<td valign='top' align='center'>";
if ( $tablo[$i]["M"]<>0 ) { echo
"<form action='".$mm_action_url."index.php' method='post' name='addtocart' id='".uniqid('addtocart_')."' class='addtocart_form' onsubmit='handleAddToCart( this.id );return false;''; >
<input type='hidden' name='product_id' value='".$product_id."' />
<input type='hidden' name='prod_id[]' value='".$product_id."' />
<input type='hidden' id='Варианты_field' name='Варианты".$product_id."' value='М/".$tablo[$i]["drob"]."/".$tablo[$i]["opis"]."'>
<input type='hidden'  id='quantity3' name='quantity[]' value='1' />
<input type='hidden' name='flypage' value='shop".$flypage."' />
<input type='hidden' name='page' value='shop.cart' />
<input type='hidden' name='manufacturer_id' value='".$manufacturer_id."' />
<input type='hidden' name='category_id' value='".$category_id."' />
<input type='hidden' name='func' value='cartAdd' />
<input type='hidden' name='option' value='com_virtuemart' />
<input type='submit' value='".$GLOBALS['CURRENCY']->convert( $tablo[$i]["M"], "USD" )."' title='Купить 1 шт по цене ".$GLOBALS['CURRENCY']->convert( $tablo[$i]["M"], "USD" )." ".$GLOBALS['product_currency']."' />
</form>";
}
echo
"</td>
<td valign='top' align='center'>";
if ( $tablo[$i]["Sr"]<>0 ) { echo
"<form action='".$mm_action_url."index.php' method='post' name='addtocart' id='".uniqid('addtocart_')."' class='addtocart_form' onsubmit='handleAddToCart( this.id );return false;''; >
<input type='hidden' name='product_id' value='".$product_id."' />
<input type='hidden' name='prod_id[]' value='".$product_id."' />
<input type='hidden' id='Варианты_field' name='Варианты".$product_id."' value='Ср/".$tablo[$i]["drob"]."/".$tablo[$i]["opis"]."'>
<input type='hidden'  id='quantity3' name='quantity[]' value='1' />
<input type='hidden' name='flypage' value='shop".$flypage."' />
<input type='hidden' name='page' value='shop.cart' />
<input type='hidden' name='manufacturer_id' value='".$manufacturer_id."' />
<input type='hidden' name='category_id' value='".$category_id."' />
<input type='hidden' name='func' value='cartAdd' />
<input type='hidden' name='option' value='com_virtuemart' />
<input type='submit' value='".$GLOBALS['CURRENCY']->convert( $tablo[$i]["Sr"], "USD" )."' title='Купить 1 шт по цене ".$GLOBALS['CURRENCY']->convert( $tablo[$i]["Sr"], "USD" )." ".$GLOBALS['product_currency']."' />
</form>";
}
echo
"</td>
<td valign='top' align='center'>";
if ( $tablo[$i]["B"]<>0 ) { echo
"<form action='".$mm_action_url."index.php' method='post' name='addtocart' id='".uniqid('addtocart_')."' class='addtocart_form' onsubmit='handleAddToCart( this.id );return false;''; >
<input type='hidden' name='product_id' value='".$product_id."' />
<input type='hidden' name='prod_id[]' value='".$product_id."' />
<input type='hidden' id='Варианты_field' name='Варианты".$product_id."' value='Б/".$tablo[$i]["drob"]."/".$tablo[$i]["opis"]."'>
<input type='hidden'  id='quantity3' name='quantity[]' value='1' />
<input type='hidden' name='flypage' value='shop".$flypage."' />
<input type='hidden' name='page' value='shop.cart' />
<input type='hidden' name='manufacturer_id' value='".$manufacturer_id."' />
<input type='hidden' name='category_id' value='".$category_id."' />
<input type='hidden' name='func' value='cartAdd' />
<input type='hidden' name='option' value='com_virtuemart' />
<input type='submit' value='".$GLOBALS['CURRENCY']->convert( $tablo[$i]["B"], "USD" )."' title='Купить 1 шт по цене ".$GLOBALS['CURRENCY']->convert( $tablo[$i]["B"], "USD" )." ".$GLOBALS['product_currency']."' />
</form>";
}
echo
"</td>
</tr>";
}
    echo //Вывод размеров
"<tr bgcolor='#e6e6fa'>
            <td colspan='2' valign='top' align='right' width='364'>Ширина (см)</td>
            <td valign='top' align='center'>".$sizes["S"]["MM"]."</td>
            <td valign='top' align='center'>".$sizes["S"]["M"]."</td>
            <td valign='top' align='center'>".$sizes["S"]["Sr"]."</td>
            <td valign='top' align='center'>".$sizes["S"]["B"]."</td>
</tr>
<tr bgcolor='#e6e6fa'>
            <td colspan='2' valign='top' align='right' width='364'>Высота (см)</td>
            <td valign='top' align='center'>".$sizes["V"]["MM"]."</td>
            <td valign='top' align='center'>".$sizes["V"]["M"]."</td>
            <td valign='top' align='center'>".$sizes["V"]["Sr"]."</td>
            <td valign='top' align='center'>".$sizes["V"]["B"]."</td>
</tr>
<tr bgcolor='#e6e6fa'>
            <td colspan='2' valign='top' align='right' width='364'>Толщина (см)</td>
            <td valign='top' align='center'>".$sizes["T"]["MM"]."</td>
            <td valign='top' align='center'>".$sizes["T"]["M"]."</td>
            <td valign='top' align='center'>".$sizes["T"]["Sr"]."</td>
            <td valign='top' align='center'>".$sizes["T"]["B"]."</td>
</tr>
</tbody>
</table>";
?>
У меня всё крутится на денвере, когда будет на хостинге смогу продемонстрировать вживую.
А пока смотрите картинку
Нажимая одну из кнопок, кладём в корзину 1 шт товара соответствующего размера, материала и цены.
Цена написана на кнопке.
Когда меняем валюту магазина, меняются и цены на кнопках.

PS : Кто писал в личку - извините, ответить не могу - НЕТ ПРАВ ))))
« Последнее редактирование: 06.10.2010, 14:34:46 от My Sun »
*

dedalik

  • Захожу иногда
  • 98
  • 0 / 2
прикольно получилось, ждём когда на хосте продемонстрируешь
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Настройки отображения товара

Автор wectra

Ответов: 2
Просмотров: 4381
Последний ответ 12.07.2017, 22:12:27
от wectra
Несколько изображений для товара/ Лупа для изображения/ Magic Zoom

Автор antoha333

Ответов: 41
Просмотров: 26889
Последний ответ 13.11.2015, 16:08:16
от sonics
Как реализовать на VirtueMart такую карточку товара?

Автор AdmbVlad

Ответов: 0
Просмотров: 1835
Последний ответ 14.10.2015, 17:01:55
от AdmbVlad
Вставить картинку в карточку товара через URL и создать его миниатюру

Автор sashgera

Ответов: 8
Просмотров: 3164
Последний ответ 14.02.2015, 21:12:46
от sashgera
Как изменить сортировку товара ?

Автор Timer

Ответов: 0
Просмотров: 1730
Последний ответ 21.01.2015, 23:49:28
от Timer