Новости Joomla

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

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 »
*

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

  • Давно я тут
  • 837
  • 35 / 0
В артикулы впишите названия, в названия впишите артикулы.
*

SFE

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

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Код: 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

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

Как вывести ID товара в описании товара?

Автор Stasweb

Ответов: 8
Просмотров: 2427
Последний ответ 28.11.2022, 23:22:27
от Evgen Kulibin
Joomla 3 + VM + Universal AJAX Live Search - как вывести картики товара в поиске?

Автор PSN

Ответов: 10
Просмотров: 7827
Последний ответ 27.03.2022, 17:29:00
от Evgen Kulibin
Как сделать - Вывод модуля на всех страницах - Кроме в карточке товара?

Автор artem_wrong

Ответов: 15
Просмотров: 1626
Последний ответ 15.02.2022, 15:07:34
от beliyadm
При сохранении товара слетает категория

Автор klara7

Ответов: 7
Просмотров: 1470
Последний ответ 23.12.2021, 08:45:40
от klara7
Вывод дополнительного описания в карточке товара

Автор Litop

Ответов: 1
Просмотров: 1353
Последний ответ 24.11.2021, 22:26:21
от Litop