Основной курс по Joomla
0 Пользователей и 1 Гость просматривают эту тему.
  • 13 Ответов
  • 1504 Просмотров
*

bgg87

  • Осваиваюсь на форуме
  • ***
  • 149
  • 2
  • Истина где-то рядом...
Всем привет!
Уже сутки пытаюсь вывести кнопку "Купить" (добавить в корзину) в "Сопутствующие товары" (похожие товары), но ничего не выходит, где только не искал и что только не делал.
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 я ноль! :)
Бен, ай нид хелп!
Информационный портал
*

neogeek

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

neogeek

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

bgg87

  • Осваиваюсь на форуме
  • ***
  • 149
  • 2
  • Истина где-то рядом...
Огромное человеческое спасибо!
Ваша помощь неоценима - вопрос решен!  :D

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

  • Осваиваюсь на форуме
  • ***
  • 140
  • 0
Должно помочь -
Код
<?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

  • Осваиваюсь на форуме
  • ***
  • 140
  • 0
Извиняюсь. все выводит, не доглядел.
Может знаете как вывести еще настраиваемые поля у сопутствующих, т.к. они на цену влияют.
« Последнее редактирование: 01.03.2016, 01:33:33 от stydent »
*

gartes

  • Живу я здесь
  • ******
  • 951
  • 71
  • Е = mс²
Цитировать
Может знаете как вывести еще настраиваемые поля у сопутствующих, т.к. они на цену влияют.

Ну так так и выводите...
Код: php
<?= 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
И для того что бы выбор этого поля влиял на цену товара то вы должны выводить его в форме в которой находится кнопка КУПИТЬ.

В итоге получаем
Код: php
<?= 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

  • Осваиваюсь на форуме
  • ***
  • 140
  • 0
Ну так так и выводите...
Код: php
<?= 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

  • Живу я здесь
  • ******
  • 951
  • 71
  • Е = mс²
Цитировать
но почему то $related их не имеет
по тому наверное что в $related не подключена модель кастомарных полей..

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

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

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

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

stydent

  • Осваиваюсь на форуме
  • ***
  • 140
  • 0

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

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

gartes

  • Живу я здесь
  • ******
  • 951
  • 71
  • Е = mс²
*

stydent

  • Осваиваюсь на форуме
  • ***
  • 140
  • 0
Если так то нечего голову морочить плагин есть такой
Пакетной продажи.
Вот так выглядит...


а тут в работе

спасибо
*

gartes

  • Живу я здесь
  • ******
  • 951
  • 71
  • Е = mс²
*

stydent

  • Осваиваюсь на форуме
  • ***
  • 140
  • 0
так может и плагин дать )))) тоже не вопрос..
уже нашел catproduct