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

SFE

  • Захожу иногда
  • 68
  • 0 / 0
На странице ссылка на предыдущий товар, как добавить в нее артикул предыдущего товара?

вот кусок кода отвечающий за вывод ссылки на предыдущий товар, взят отсюда views/productdetails/tmpl/default.php

<?php
if (!empty($this->product->neighbours ['previous'][0])) {
$prev_link = JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $this->product->neighbours ['previous'][0] ['virtuemart_product_id'] . '&virtuemart_category_id=' . $this->product->virtuemart_category_id);



echo JHTML::_('link', $prev_link, $this->product->neighbours ['previous'][0]
['product_name'],
array('class' => 'previous-page'));

}
?>


ну и собственно артикул текущей страницы выглядит так:

<?php echo $this->product->product_sku ?>

помогите советом, не могу разобраться
*

SFE

  • Захожу иногда
  • 68
  • 0 / 0
ни у кого нет идей? до сих пор не могу разобраться.
где присваивается значение элементу массива $this->product->neighbours ['previous'][0]['product_name']?
ну то есть в приведенном мной коде оно просто выводится, без присваивания значений. откуда VirtueMart знает, что в этом элементе хранится имя продукта?

если знать где оно присваивается, то вписать еще один элемент надо, насколько я понимаю по типу $this->product->neighbours ['previous'][0]['product_sku'] и ему присвоить значение переменной $this->product->product_sku.

пожалуйста помогите, кто разбирается, укажите хотя бы примерное направление где копать
*

artserge

  • Захожу иногда
  • 118
  • 11 / 0
В зависимости от версии VM правки чуть чуть отличаются... в общем - лезем в модель продукта administrator\components\com_virtuemart\models\product.php

Ищем метод
public function getNeighborProducts

Там добавляем в селекте недостающее поле, т.е. product_sku,  из нужной таблицы (#__virtuemart_products).

В последнем VirtueMart выборка ID товара и названия идет просто из `#__virtuemart_products_' . VMLANG . '`  , поэтому таблицу #__virtuemart_products необходимо джойнуть к основному запросу.

Если тяжело разобраться - скиньте код метода getNeighborProducts сюда. Подскажу :)

p.s. традиционно отмечу, что данное решение является "хаком" и затрется при обновлении VM. Есть еще способ получить по ID товара его sku - вызывать метод getProductSingle класса VirtueMartModelProduct непосредственно в вашем шаблоне товара views/productdetails/tmpl/default.php , который нужно переопределить в директории темплейта дизайна сайта. При этом обновление VirtueMart не затрет ваш переопределенный шаблон. Но данное решение будет бить по ресурсам, в отличии от варианта с правкой SQL.
Также можно определить простую функцию, использующую API Joomla для бд, в шаблоне views/productdetails/tmpl/default.php , например GetProductSkuById, в которую передавать аргументом ID товара, а на выходе иметь нужный заветный product_sku. Это будет противоречить логике проектирования и разработки, но вариант будет работать, ценой +1 запроса к базе. "Зато не затрется".
« Последнее редактирование: 09.04.2014, 04:54:02 от artserge »
*

Максим Пишняк

  • Давно я тут
  • 835
  • 35 / 0
  • Подразделение Virtuemart Украина
В артикулы впишите названия, в названия впишите артикулы.
Virtuemart 2 работает практически без ошибок. Вы можете поддержать Сообщество, проголосовав за Virtuemart. Присоединяйтесь к нам на Facebook, Google Plus, Linkedin. Подпишитесь на Еженедельник о Virtuemart на Twitter
*

SFE

  • Захожу иногда
  • 68
  • 0 / 0
artserge вот код, подскажите, если не сложно
Спойлер
[свернуть]
*

robert

  • Живу я здесь
  • 4613
  • 429 / 16
Код: php-brief
foreach ($neighbors as &$neighbor) {

         $q = 'SELECT `l`.`virtuemart_product_id`, `l`.`product_name`, `p`.`product_sku`
Код: php-brief
echo JHTML::_('link', $prev_link, $this->product->neighbours ['previous'][0]
['product_name'].'-'.$this->product->neighbours ['previous'][0]
['product_sku']
Но это не очень хорошо, все сотрется при обновлении.
« Последнее редактирование: 10.04.2014, 18:39:04 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

SFE

  • Захожу иногда
  • 68
  • 0 / 0
Спасибо, теперь навигация выглядит как надо =)
и вопрос по обновлениям - переопределить ведь просто надо, ну то есть файлы компонента VirtueMart скопировать в папку HTML шаблона.
выходит затрутся изменения только в файлике administrator\components\com_virtuemart\models\product.php?
*

robert

  • Живу я здесь
  • 4613
  • 429 / 16
Не совсем. Старых функций могут не быть, и способов вывода тоже.
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка при покупке товара

Автор lalalag

Ответов: 2
Просмотров: 188
Последний ответ 03.07.2018, 19:55:30
от lalalag
Много ссылок для одного товара

Автор Inngrid

Ответов: 1
Просмотров: 272
Последний ответ 18.06.2018, 09:28:43
от Stasweb
Какое php выражение возвращает ссылку на текущее изображение товара?

Автор 7949701

Ответов: 5
Просмотров: 187
Последний ответ 06.05.2018, 12:36:38
от 7949701
Не выводится краткое описание товара

Автор artem_wrong

Ответов: 3
Просмотров: 298
Последний ответ 04.05.2018, 13:48:49
от lexxbry
Слетает карточка товара при выборе мультиварианта

Автор ЖенDos

Ответов: 1
Просмотров: 282
Последний ответ 13.04.2018, 23:48:51
от Mikon