Форум русской поддержки Joomla!® CMS
04.12.2016, 14:18:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Как вывести кнопку "Купить" (добавить в корзину) в "Сопутствующие товары" (похожие товары)?

 (Прочитано 1111 раз)
0 Пользователей и 1 Гость смотрят эту тему.
bgg87
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 141



« : 02.05.2015, 01:48:41 »

Всем привет!
Уже сутки пытаюсь вывести кнопку "Купить" (добавить в корзину) в "Сопутствующие товары" (похожие товары), но ничего не выходит, где только не искал и что только не делал.
VirtueMart 3.0.6.4

Методом тыка выяснил что шаблон находится тут:
/components/com_virtuemart/sublayouts/related.php
Код:
<?php defined('_JEXEC') or die('Restricted access');
$related = $viewData['related'];
$customfield = $viewData['customfield'];
$thumb = $viewData['thumb'];
//juri::root() For whatever reason, we used this here, maybe it was for the mails
echo JHtml::link (JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $related->virtuemart_product_id . '&virtuemart_category_id=' . $related->virtuemart_category_id), $thumb   . $related->product_name, array('title' => $related->product_name,'target'=>'_blank'));
if($customfield->wPrice){
$currency = calculationHelper::getInstance()->_currencyDisplay;
echo $currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $related->prices);
}
if($customfield->wDescr){
echo '<p class="product_s_desc">'.$related->product_s_desc.'</p>';
}

очень прошу подскажите пожалуйста что делать.
Да и в PHP я ноль! Azn
Записан
neogeek
Давно я тут
****

Репутация: +18/-2
Offline Offline

Сообщений: 212


« Ответ #1 : 02.05.2015, 10:40:50 »

Должно помочь -
Код:
<?php echo shopFunctionsF::renderVmSubLayout('addtocart',array('product'=>$product,'row'=>0)); ?>
Записан
neogeek
Давно я тут
****

Репутация: +18/-2
Offline Offline

Сообщений: 212


« Ответ #2 : 02.05.2015, 10:43:47 »

Хотя немного не так, там другая переменная же вместо product должно быть related
вот так точно выведет кнопку купить:
Код:
<?php echo shopFunctionsF::renderVmSubLayout('addtocart',array('product'=>$related,'row'=>0)); ?>
Записан
bgg87
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 141



« Ответ #3 : 02.05.2015, 11:37:20 »

Огромное человеческое спасибо!
Ваша помощь неоценима - вопрос решен!  Cheesy

P.S. оказывается в PHP я не полный ноль. При добавлении вашего кода показал белый экран, немного подумав и сравнив с PHP товаров увидел что нет закрывающего тега ?>
В итоге код выглядит так
Код:
<?php defined('_JEXEC') or die('Restricted access');

$related = $viewData['related'];
$customfield = $viewData['customfield'];
$thumb = $viewData['thumb'];

//juri::root() For whatever reason, we used this here, maybe it was for the mails
echo JHtml::link (JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $related->virtuemart_product_id . '&virtuemart_category_id=' . $related->virtuemart_category_id), $thumb   . $related->product_name, array('title' => $related->product_name,'target'=>'_blank'));
if($customfield->wPrice){
$currency = calculationHelper::getInstance()->_currencyDisplay;
echo $currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $related->prices);
}
if($customfield->wDescr){
echo '<p class="product_s_desc">'.$related->product_s_desc.'</p>';

}
?>
<?php echo shopFunctionsF::renderVmSubLayout('addtocart',array('product'=>$related,'row'=>0)); ?>
Записан
stydent
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 133


« Ответ #4 : 01.03.2016, 00:23:09 »

Должно помочь -
Код:
<?php echo shopFunctionsF::renderVmSubLayout('addtocart',array('product'=>$product,'row'=>0)); ?>
А почему сейчас в версии 3.0.13.4 сопутствующие товары выводит customfields.php, при этом шаблон related.php существует.
В шаблоне товара идет такой код
Цитировать
echo shopFunctionsF::renderVmSubLayout('customfields',array('product'=>$this->product,'position'=>'related_products','class'=> 'product-related-products','customTitle' => true ));
Как же тогда заюзать related.php? В вызове функции шаблон менять пробовал, просто переставало выводить.
Записан
stydent
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 133


« Ответ #5 : 01.03.2016, 00:30:09 »

Извиняюсь. все выводит, не доглядел.
Может знаете как вывести еще настраиваемые поля у сопутствующих, т.к. они на цену влияют.
« Последнее редактирование: 01.03.2016, 00:33:33 от stydent » Записан
gartes
Живу я здесь
******

Репутация: +63/-3
Offline Offline

Сообщений: 826


Е = mс²


« Ответ #6 : 01.03.2016, 04:04:21 »

Цитировать
Может знаете как вывести еще настраиваемые поля у сопутствующих, т.к. они на цену влияют.

Ну так так и выводите...
Код
<?= shopFunctionsF::renderVmSubLayout('customfields',array('product'=>$this->product,'position'=>'related_products','class'=> 'product-related-products','customTitle' => true )); ?>
 
Тут есть несколько моментов :
1.  'customfields'= это название шаблона для вывода настраиваемых полей. этот шаблон находится в /components/com_virtuemart/sublayouts/customfields.php

2. 'product'=>$this->product, тет передается объект продукта.. в разных местах VirtueMart он может быть в разных переменных.
к примеру в related он так записан $related.
Соответственно что бы из related вызвать customfields то строка
'product'=>$this->product, -
должна быть записана как
'product'=> $related,

3. 'position'=>'related_products',
Это позиция в которой выводится кастомарное поле. Эту позицию мы указываем при создании самого поля.
Но по скольку Вы говорите что настраиваемые поля влияют на стоимость товара то скорее всего это позиция addtocart
И для того что бы выбор этого поля влиял на цену товара то вы должны выводить его в форме в которой находится кнопка КУПИТЬ.

В итоге получаем
Код
<?= shopFunctionsF::renderVmSubLayout('customfields',array('product'=>$related,'position'=>'addtocart')); ?>
 

но еще раз напомню. Позиция 'addtocart' для того что бы менялась цена в зависимости от выбора этого поля должна быть внутри блока
Код:
<form method="post" class="product js-recalculate" action="#">
...
  <div class="addtocart-bar">
       <input type="submit" name="addtocart" class="addtocart-button" value="Купить" title="Купить">
  </div>
...
<?= shopFunctionsF::renderVmSubLayout('customfields',array('product'=>$related,'position'=>'addtocart')); ?>
</form>


ps Если кого то смущает такой значок то это сокращенное написание функции echo. Срабатывает в начале кода.
т.е. <?= 'текст' ?> и <?php echo 'текст' ?> равнозначны. Очень удобно когда нужно вывести значение только одной переменной.)
 
Записан
stydent
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 133


« Ответ #7 : 01.03.2016, 11:37:23 »

Ну так так и выводите...
Код
<?= shopFunctionsF::renderVmSubLayout('customfields',array('product'=>$this->product,'position'=>'related_products','class'=> 'product-related-products','customTitle' => true )); ?>
 

так то я пробовал.
в
Код:
<?php echo shopFunctionsF::renderVmSubLayout('addtocart',array('product'=>$related,'row'=>0)); ?>
уже есть вывод полей. но почему то $related их не имеет. Хотя если перейти прям в товар, они будут выводиться
Записан
gartes
Живу я здесь
******

Репутация: +63/-3
Offline Offline

Сообщений: 826


Е = mс²


« Ответ #8 : 01.03.2016, 11:48:21 »

Цитировать
но почему то $related их не имеет
по тому наверное что в $related не подключена модель кастомарных полей..

Как подключить модель кастомарных полей можно посмотреть в модели продуктов, в папке admin/components/com_virtuemart/models/product.php

Щас метод не скажу..)))

Но тут вот что может получится ... Что если  у вас полей будет много для каждого запроса... то когда страница категорий сработает или рекомендуемых продуктов.. И там товаров будет много... то может сервак начать краснеть понемногу... )))

Так что лучше все таки  это отделенный файл шаблона за бацать. и там запросом по id товара и названию кастомарного поля как то искать...
 
Записан
stydent
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 133


« Ответ #9 : 01.03.2016, 12:01:03 »


Но тут вот что может получится ... Что если  у вас полей будет много для каждого запроса... то когда страница категорий сработает или рекомендуемых продуктов.. И там товаров будет много... то может сервак начать краснеть понемногу... )))
 

задумано что будет только в карточке товара так.
т.е реализовать хочу вот это https://yadi.sk/i/ehh6d8OmpjdqP
Как это в один товар запихать не знаю. поэтому предложу клиенту на сопутствующих товарах делать, т.е. кнопка купить будет у каждого размера. Один размер - один товар.
Записан
gartes
Живу я здесь
******

Репутация: +63/-3
Offline Offline

Сообщений: 826


Е = mс²


« Ответ #10 : 01.03.2016, 12:17:06 »

Если так то нечего голову морочить плагин есть такой
Пакетной продажи.
Вот так выглядит...


а тут в работе
Записан
stydent
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 133


« Ответ #11 : 01.03.2016, 12:30:47 »

Если так то нечего голову морочить плагин есть такой
Пакетной продажи.
Вот так выглядит...


а тут в работе

спасибо
Записан
gartes
Живу я здесь
******

Репутация: +63/-3
Offline Offline

Сообщений: 826


Е = mс²


« Ответ #12 : 01.03.2016, 21:54:55 »

так может и плагин дать )))) тоже не вопрос..
Записан
stydent
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 133


« Ответ #13 : 01.03.2016, 22:18:09 »

так может и плагин дать )))) тоже не вопрос..
уже нашел catproduct
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet