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

predator

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
Сопутствующие товары
« : 22.12.2012, 01:12:13 »
Доброго времени суток.

Подскажите, что нужно добавить в карточку товара  template/html/com_virtuemart/productdetails (или в основную карточку товара самого виртумарта), чтобы под основным товаром появились не только сопутствующие товары (они уже добавлены к основному в настройках VirtueMart и отображаются), но и его цена, цена со скидкой и подобное ?

вроде, нашел код, который отвечает за вывод -

Спойлер
[свернуть]

Сейчас так -
Хочу так -

То есть мне нужно добавить основную цену (перечеркнутую), под ней цену со скидкой, под ними —кнопку VirtueMart  "в корзину". я так думаю, что зачеркнутая, перечеркнутая-это все стили, поэтому буду благодарен, если вы просто выведете эти переменные.

P.S на втором скриншоте не влезали пожелания, поэтому затер часть description и линии.

Спасибо всем!
*

Sergey2

  • Давно я тут
  • 652
  • 15 / 1
Re: Сопутствующие товары
« Ответ #1 : 05.01.2013, 00:52:28 »
Я сделал вот так (внутри foreach):

Код
$product = $model->getProductSingle($field->custom_value,false);
$price = $calculator -> getProductPrices($product);

// Show Products
if ($product->published=='1') {
?>
           <td width="204">
<div class="product">
<div class="spacer">
<div class="width100 rigth product-img">
<?php if($product->product_special=='1') {
        echo '<div class="special"></div>';
};?>
<?php /** @todo make image popup */ ?>
<?php
preg_match( '/href=["\']*([\S]+)["\']/', $field->display, $url );
preg_match( '/src=["\']*([\S]+)["\']/', $field->display, $img );
preg_match( '/resized([\S]+)\_\d\d\dx\d\d\d/', $field->display, $img_org );
preg_match( '/title=["\']*(.+?)["\']/', $field->display, $title );
?>


<div class="product-field product-field-type-<?php echo $field->field_type ?>">
    <span class="product-field-display">
<?php
echo '<a title="'.$title[1].'" class="modal" href="/images/stories/virtuemart/product'.$img_org[1].'.jpg">';
echo '<img src="'.$img[1].'"  border="0" title="'.$title[1].'"  />';
echo '<a href="'.$url[1].'">'.$title[1].'</a>';
?>
    </span>
</div>
</div>
<div class="clear"></div>
<div class="width100 product_bottom">
<?php
preg_match( '/href=["\']*([\S]+)["\']/', $field->display, $url );
echo JHTML::link ($url[1], JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => $product->product_name, 'class' => 'product-details'));
?>


<div class="product-price marginbottom12" id="productPrice<?php echo $product->virtuemart_product_id ?>">
<?php
if ($this->show_prices == '1') {
echo '<div class="oldPrice">';
foreach($product->customfields as $customfield) {
if ($customfield->virtuemart_custom_id=='3') {
$l=strlen($customfield->custom_value)-3;
$t=substr($customfield->custom_value,0,$l);
$c=substr($customfield->custom_value,$l,8);
echo JText::_ ('COM_VIRTUEMART_PRODUCT_PRICE').': <span>'.$t.' '.$c.',00 '."руб".'</span>';
}
}
echo '</div>';
echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $price);
} ?>
</div>

<div class="addtocart-area">

<form method="post" class="product" action="index.php" id="addtocartproduct<?php echo $product->virtuemart_product_id ?>">
<div class="addtocart-bar2">
<?php // Display the quantity box ?>
<span class="quantity-box2">
<input style="display:none;" type="text" class="quantity-input" name="quantity[]" value="1" />
</span>
<?php // Display the quantity box END ?>

<?php // Add the button
$button_lbl = JText::_('COM_VIRTUEMART_CART_ADD_TO');
$button_cls = ''; //$button_cls = 'addtocart_button';
if (VmConfig::get('check_stock') == '1' && !$product->product_in_stock) {
$button_lbl = JText::_('COM_VIRTUEMART_CART_NOTIFY');
$button_cls = 'notify-button';
} ?>

<?php // Display the add to cart button ?>
<span class="addtocart-button">
<input type="submit" name="addtocart"  class="addtocart-button" value="<?php echo $button_lbl ?>" title="<?php echo $button_lbl ?>" />
</span>

<div class="clear"></div>
</div>

<?php // Display the add to cart button END ?>
<input type="hidden" class="pname" value="<?php echo $product->product_name ?>">
<input type="hidden" name="option" value="com_virtuemart" />
<input type="hidden" name="view" value="cart" />
<noscript><input type="hidden" name="task" value="add" /></noscript>
<input type="hidden" name="virtuemart_product_id[]" value="<?php echo $product->virtuemart_product_id ?>" />
<?php /** @todo Handle the manufacturer view */ ?>
<input type="hidden" name="virtuemart_manufacturer_id" value="<?php echo $product->virtuemart_manufacturer_id ?>" />
<input type="hidden" name="virtuemart_category_id[]" value="<?php echo $product->virtuemart_category_id ?>" />
</form>
</div>
</div>
<div class="clear"></div>
</div>
<!-- end of spacer -->
</div> <!-- end of product -->
</td>
<?php } ?>


Может не совсем корректно (пришлось распарсивать оригинальный вывод), но если тебе нужна только кнопка добавить и цена, то можно без этого изврата обойтись. Мне ндао было сделать так же как и в каталоге (что бы при нажатии на картинку показывалась увеличенная картинка и была еще кнопка с описанием товара).
*

predator

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
Re: Сопутствующие товары
« Ответ #2 : 05.01.2013, 01:23:18 »
Спасибо за ответ! уже не ожидал услышать...

Но проблема в том, что я совсем-совсем плох в программировании...


Опытным путем точно знаю, что сопутствующие товары в моем шаблоне выводит код
Код
<?php
foreach ($this->product->customfieldsRelatedProducts as $field){
?>
<div class="product-field-type-<?php echo $field->field_type ?>">
<span class="product-field-display"><?php echo $field->display ?></span>
  <span class="product-field-desc"><?php echo jText::_($field->custom_field_desc)?></span>

</div>
<?php
} ?>

При чем выводит картинку товара и его название только строчка <span class="product-field-display"><?php echo $field->display ?></span>

Остальные несут непонятную мне роль,(изменения только визуальные)что с ними, что без них  — других изменений нету...

Повтыкал везде нижеуказанный код(естественно, разнообразнейшими кусками), во всех случаях просто выводятся этот же код под картинками и названиями похожих товаров, а в некоторых случаях никаких изменений не было — ни строчек, ни чего-то нового(что подсказало мне, что код работает, но как-то непонятно))

Код
<?php
if ($this->show_prices == '1') {
echo '<div class="oldPrice">';
foreach($product->customfields as $customfield) {
if ($customfield->virtuemart_custom_id=='3') {
$l=strlen($customfield->custom_value)-3;
$t=substr($customfield->custom_value,0,$l);
$c=substr($customfield->custom_value,$l,8);
echo JText::_ ('COM_VIRTUEMART_PRODUCT_PRICE').': <span>'.$t.' '.$c.',00 '."руб".'</span>';
}
}
echo '</div>';
echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $price);
} ?>

Задача упростилась  — я уже решил забить на кнопку добавить, она мне в принципе не нужна, а мороки Вам будет подсказывать больше. Можете более детально подсказать, как для не совсем программиста, какой код куда воткнуть, чтобы просто вывести цену под названием товара? В любом случае спасибо за ответ еще раз
*

Sergey2

  • Давно я тут
  • 652
  • 15 / 1
Re: Сопутствующие товары
« Ответ #3 : 05.01.2013, 02:00:54 »
вот этот код выводит кнопку "купить"
Код
<div class="addtocart-area">

<form method="post" class="product" action="index.php" id="addtocartproduct<?php echo $product->virtuemart_product_id ?>">
<div class="addtocart-bar2">
<?php // Display the quantity box ?>
<span class="quantity-box2">
<input style="display:none;" type="text" class="quantity-input" name="quantity[]" value="1" />
</span>
<?php // Display the quantity box END ?>

<?php // Add the button
$button_lbl = JText::_('COM_VIRTUEMART_CART_ADD_TO');
$button_cls = ''; //$button_cls = 'addtocart_button';
if (VmConfig::get('check_stock') == '1' && !$product->product_in_stock) {
$button_lbl = JText::_('COM_VIRTUEMART_CART_NOTIFY');
$button_cls = 'notify-button';
} ?>

<?php // Display the add to cart button ?>
<input type="hidden" class="pname" value="<?php echo $product->product_name ?>">
<input type="hidden" name="option" value="com_virtuemart" />
<input type="hidden" name="view" value="cart" />
<noscript><input type="hidden" name="task" value="add" /></noscript>
<input type="hidden" name="virtuemart_product_id[]" value="<?php echo $product->virtuemart_product_id ?>" />
<?php /** @todo Handle the manufacturer view */ ?>
<input type="hidden" name="virtuemart_manufacturer_id" value="<?php echo $product->virtuemart_manufacturer_id ?>" />
<input type="hidden" name="virtuemart_category_id[]" value="<?php echo $product->virtuemart_category_id ?>" />
</form>

а вот этот: цену
Код
echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $price);

Для того что бы эти два кода работали вставь первой стракой после foreach вот такой кусок:
Код
$price = $calculator -> getProductPrices($product);
$product = $model->getProductSingle($field->custom_value,false);
*

predator

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
Re: Сопутствующие товары
« Ответ #4 : 05.01.2013, 03:39:37 »
Спасибо, но я в чем-то ошибся... Стало -

Код
<?php
foreach ($this->product->customfieldsRelatedProducts as $field){
?>
$price = $calculator -> getProductPrices($product);
$product = $model->getProductSingle($field->custom_value,false);
<div class="product-field-type-<?php echo $field->field_type ?>">
<span class="product-field-display"><?php echo $field->display ?></span>
<span class="product-field-desc"><?php echo jText::_($field->custom_field_desc)?></span>
<?php echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $price); ?>
</div>
<?php
} ?>

и как я не изощрялся в какое именно место запихнуть
Код
$price = $calculator -> getProductPrices($product);
$product = $model->getProductSingle($field->custom_value,false);
— либо слетает верстка и ничего не появляется, либо сайт выглядит и функционирует как обычно(цена все равно не показывается), но эти 2 строчки появляются над картинками товаров/под ними.

Спасибо!
*

Sergey2

  • Давно я тут
  • 652
  • 15 / 1
Re: Сопутствующие товары
« Ответ #5 : 05.01.2013, 03:48:59 »
знак вопроса со скобкой перемести на две строки вниз :)
Код
foreach ($this->product->customfieldsRelatedProducts as $field){
$price = $calculator -> getProductPrices($product);
$product = $model->getProductSingle($field->custom_value,false);
?>
<div class="product-field-type-<?php echo $field->field_type ?>">
тогда этот код будет выполняться а не отображаться :)
*

Sergey2

  • Давно я тут
  • 652
  • 15 / 1
Re: Сопутствующие товары
« Ответ #6 : 05.01.2013, 03:54:10 »
и сорри, что-то я как то протупил. Во втором моем пиьсме не хватает кода для отображения кнопки "купить" :)

после
Код
<?php // Display the add to cart button ?>
добавь
Код
			<span class="addtocart-button">
<input type="submit" name="addtocart"  class="addtocart-button" value="<?php echo $button_lbl ?>" title="<?php echo $button_lbl ?>" />
</span>

<div class="clear"></div>
</div>

<?php // Display the add to cart button END ?>
поэтому и дизайн слетает, там одного закрываюшего тэга не хватает :)
*

predator

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
Re: Сопутствующие товары
« Ответ #7 : 05.01.2013, 03:56:25 »
О! Значит я не совсем потерян)так я сразу и решил сделать, ну в PHP раздел засунуть)

К сожалению, верстка слетает, и ничего не появляется...

Может быть у меня используются другие переменные в шаблоне?

UPD.     А насчет кнопки купить — я её попробую сделать сам, а то полгода буду распрашивать. Мне бы только цены прикрутить... Т.е я и не пробовал вставлять код от кнопки, слетает от цены.
*

Sergey2

  • Давно я тут
  • 652
  • 15 / 1
Re: Сопутствующие товары
« Ответ #8 : 05.01.2013, 04:07:21 »
Кнопка "купить" не сложнее цен :)
У тебя цены какие? Ну там с налогами, без налогов.... может быть в этом ньюанс.

ставь вот такой кусок для вывода цен
Код
	echo '!'.$this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $price).'!';
потом открывай исходный код полученной страницы в HTML. Там где отображается цена должен быть кусок кода в восклицательных знаках, вот его сюда и копируй, посомтрим.
*

predator

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
Re: Сопутствующие товары
« Ответ #9 : 05.01.2013, 04:24:54 »
В таком варианте

Код
<?php
foreach ($this->product->customfieldsRelatedProducts as $field){
?>
<div class="product-field-type-<?php echo $field->field_type ?>">
<span class="product-field-display"><?php echo $field->display ?></span>
<span class="product-field-desc"><?php echo jText::_($field->custom_field_desc)?></span><?php echo '!'.$this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $price).'!'; ?>
</div>
<?php
} ?>

видно в коде страницы
Код
 <div class="product-related-products">
<h4 class="title">Related Products</h4>
!! <div class="product-field-type-R">
<span class="product-field-display"><a href="/index.php/virtuemart/vm-category/sodales-varius-detail" title="Sodales varius"><img src="/images/stories/virtuemart/product/resized/img_demo_leotheme250x2807_155x175.jpg" alt="img_demo_leotheme250x2807"  /> Sodales varius</a></span>
<span class="product-field-desc"> </span>
</div>
!! <div class="product-field-type-R">
<span class="product-field-display"><a href="/index.php/virtuemart/default-layout/leo-sport/other-tools/aenean-lacinia-detail" title="Aenean lacinia"><img src="/images/stories/virtuemart/product/resized/img_demo_leotheme250x2806_155x175.jpg" alt="img_demo_leotheme250x2806"  /> Aenean lacinia</a></span>
<span class="product-field-desc"> </span>
</div>
         </div>

а если
Код
<?php
foreach ($this->product->customfieldsRelatedProducts as $field){
$price = $calculator -> getProductPrices($product);
$product = $model->getProductSingle($field->custom_value,false); ?>
<div class="product-field-type-<?php echo $field->field_type ?>">
<span class="product-field-display"><?php echo $field->display ?></span>
<span class="product-field-desc"><?php echo jText::_($field->custom_field_desc)?></span><?php echo '!'.$this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $price).'!'; ?>
</div>
<?php
} ?>

то код страницы обрезается из 1400 строчек в 90, при чем последняя строка именно та, после которой добавляются эти две функции
Код
$price = $calculator -> getProductPrices($product);
$product = $model->getProductSingle($field->custom_value,false);

я оставил первый работающий вариант - http://keyplanet.ru/index.php/virtuemart/vm-category/urna-nulla-et-detail
*

Sergey2

  • Давно я тут
  • 652
  • 15 / 1
Re: Сопутствующие товары
« Ответ #10 : 05.01.2013, 04:27:51 »
в другом порядке их указывай:
Код
$product = $model->getProductSingle($field->custom_value,false);
$price = $calculator -> getProductPrices($product);
*

predator

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
Re: Сопутствующие товары
« Ответ #11 : 05.01.2013, 04:35:04 »
то же самое, изменений нет как визуальных, так и в коде страницы.

Давай я уточню сразу. я редактирую файл шаблон/html/com_virtuemart/productdetails/default.php  Я пробовал и шаблон/html/com_virtuemart/productdetails/default_relatedproducts.php , но даже если я удаляю весь код из этого файла изменений никаких нету
*

Sergey2

  • Давно я тут
  • 652
  • 15 / 1
Re: Сопутствующие товары
« Ответ #12 : 05.01.2013, 04:41:57 »
вообще то сопутсвующие товары выводятся именно в default_relatedproducts.php

прикрепил свой файл. Свой сохрани, мой вставь, попорбуй.

[вложение удалено Администратором]
*

predator

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
Re: Сопутствующие товары
« Ответ #13 : 05.01.2013, 04:46:38 »
Попробовал, а еще вернул default.php к первоначальному виду.все то же самое.
*

Sergey2

  • Давно я тут
  • 652
  • 15 / 1
Re: Сопутствующие товары
« Ответ #14 : 05.01.2013, 04:53:13 »
т.е. у тебя так же выводятся сопутсвующие товары с названием и все? А ты кеш почистил?
*

predator

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
Re: Сопутствующие товары
« Ответ #15 : 05.01.2013, 04:54:37 »
Да, только товары с названием и все. И кэш я чистил...
*

Sergey2

  • Давно я тут
  • 652
  • 15 / 1
Re: Сопутствующие товары
« Ответ #16 : 05.01.2013, 05:37:13 »
странно, конечно.... единственное что могу предложить это попробовать подменить файлы не в шаблоне, а в самом компоненте....
*

predator

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
Re: Сопутствующие товары
« Ответ #17 : 09.01.2013, 22:30:44 »
Спасибо в любом случае! пока не нашел решения, буду искать.
*

Sergey2

  • Давно я тут
  • 652
  • 15 / 1
Re: Сопутствующие товары
« Ответ #18 : 10.01.2013, 05:00:25 »
кстати, ты включи отображение ошибок php скрипта, может поможет.
*

predator

  • Осваиваюсь на форуме
  • 33
  • 0 / 0
Re: Сопутствующие товары
« Ответ #19 : 10.01.2013, 10:05:44 »
это возможности браузера, Joomla или чего-то еще?
*

Sergey2

  • Давно я тут
  • 652
  • 15 / 1
Re: Сопутствующие товары
« Ответ #20 : 10.01.2013, 16:09:25 »
это возможности браузера, Joomla или чего-то еще?
хостинга. Сейчас на работе, на вскидку не подскажу. Но я уверен что в яндексе должно быть полно информации
*

snatch

  • Новичок
  • 2
  • 0 / 0
Re: Сопутствующие товары
« Ответ #21 : 25.01.2013, 18:17:43 »
Sergey2, подскажите пожалуйста, как сделать, чтобы сопутствующих товаров в каждом ряду было по 3, а то сейчас, становясь в один ряд, они вылазят за предел шаблона?
« Последнее редактирование: 25.01.2013, 19:24:27 от snatch »
*

Sergey2

  • Давно я тут
  • 652
  • 15 / 1
Re: Сопутствующие товары
« Ответ #22 : 28.01.2013, 12:09:28 »
Sergey2, подскажите пожалуйста, как сделать, чтобы сопутствующих товаров в каждом ряду было по 3, а то сейчас, становясь в один ряд, они вылазят за предел шаблона?
например каждый товар обернуть в div с float: left; и жестко задать ширину областку куда они выводятся (например в таблице ширину указать), тогда они сами будут "перескакивать" на сле строку.
Или можно сделать в табличке, "самому" считать номер товара и если их три, то ставить </tr><tr>

PS Сейчас не могу посомтреть конкретней, так как на работе, если не разберешься - пиши, посомтрю
*

snatch

  • Новичок
  • 2
  • 0 / 0
Re: Сопутствующие товары
« Ответ #23 : 18.02.2013, 13:27:18 »
например каждый товар обернуть в div с float: left; и жестко задать ширину областку куда они выводятся (например в таблице ширину указать), тогда они сами будут "перескакивать" на сле строку.
Или можно сделать в табличке, "самому" считать номер товара и если их три, то ставить </tr><tr>

PS Сейчас не могу посомтреть конкретней, так как на работе, если не разберешься - пиши, посомтрю
Спасибо, запаковал в div, решил через CSS.
*

KeeperNET

  • Осваиваюсь на форуме
  • 20
  • 1 / 0
Re: Сопутствующие товары
« Ответ #24 : 20.10.2013, 17:23:49 »
Здравствуйте.
При добавление сопутствующих товаров в карточку товара, после сохранения меняется порядок сопутствующих товаров. Добавляю "1,2,3,4,5", а показывает "5,2,4,3,1".
Joomla 2.5.14 VirtueMart 2.0.22c.
Как сделать чтобы сопутствующие товары отображались в той последовательности, в которой были добавлены?
*

otec1klas

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Сопутствующие товары
« Ответ #25 : 04.02.2015, 20:18:22 »
Здравствуйте. Проблема в следующем.
Мне нужно выставить в карточку товара дополнительные товары (напр. товар - ванна; доп.товар - сифон, ножки для ванной, и т.п.). Попробовал вывести это с помощью сопутствующих товаров, но при клике на дополнительный товар выводит карточку доп.товара и под ней главную страницу VirtueMart.
Вопрос: как убрать вывод главной страницы VirtueMart с карточки доптовара?
*

Sergey2

  • Давно я тут
  • 652
  • 15 / 1
Re: Сопутствующие товары
« Ответ #26 : 26.02.2015, 22:09:50 »
Непонятно. Скриншоты нужны
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Сопутствующие товары

Автор Wargoth

Ответов: 2
Просмотров: 69
Последний ответ 25.08.2020, 14:49:06
от Wargoth
Как удалить дочерние товары в карточке товара VM 2?

Автор zeus07

Ответов: 0
Просмотров: 84
Последний ответ 12.05.2020, 14:51:39
от zeus07
Custom Filters pro - не показывает дочерние товары при выборе фильтра

Автор djed9

Ответов: 0
Просмотров: 102
Последний ответ 01.04.2020, 11:41:43
от djed9
Как убрать список всех категорий со страницы "показать все товары производителя"?

Автор borodaTT

Ответов: 15
Просмотров: 3965
Последний ответ 02.09.2019, 11:12:39
от Upps_J
Не видно товары в админке

Автор face2005

Ответов: 10
Просмотров: 287
Последний ответ 23.04.2019, 11:29:16
от face2005