Новости Joomla

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

akim

  • Новичок
  • 9
  • 0 / 0
Бьюсь над проблемой два дня.

Когда завожу позиции для товара, в админке список позиций показан как надо - всё идёт по порядку (см. рис. 1):







Когда этот же выпадающий список открываю на сайте - позиции сортируются совершенно неожиданным образом (см. рис. 2):







В принципе, тоже происходит при выведении списка позиций товара в таблицу - тот же непонятный порядок.

Где можно установить чёткую сортировку для выпадающего списка позиций товара?
« Последнее редактирование: 16.09.2009, 13:41:21 от akim »
*

akim

  • Новичок
  • 9
  • 0 / 0
Если бы всё было так просто...
Не помогает почему-то этот простой способ. Может быть, оттого, что распространяется только на товары, но не на позиции товаров (которые находятся внутри одного товара)?

Я даже стал изучать SQL потиху, чтоб правильно оформить запрос из базы, да вот никак не найду, из какого шаблона этот запрос генерируется.
*

akim

  • Новичок
  • 9
  • 0 / 0
Подскажете, где в запросе можно прописать нужную мне сортировку?

Вот фрагмент кода с формой выбора позиций:

Код
<div class="vmCartContainer">
   
    <form action="http://setiplast.ru/index.php" method="post" name="addtocart" id="addtocart_4aaf37c84f610" class="addtocart_form" onsubmit="handleAddToCart( this.id );return false;">


<div class="vmCartDetails">

<input type="hidden" name="product_id" value="6" /><label for="product_id_field">Пожалуйста, выберите позицию</label>: <br />
<select class="inputbox" onchange="var id = $('product_id_field')[selectedIndex].value; if(id != '') { document.location = 'http://setiplast.ru/index.php?option=com_virtuemart&amp;page=shop.product_details&amp;flypage=flypage.tpl&amp;Itemid=23&amp;category_id=8&amp;product_id=' + id; }" id="product_id_field" name="prod_id[]">
<option value="6">Выбрать</option><option value="26" >Труба ПЭ100 PN10 SDR17 160x9.5 -  - 0</option>
<option value="25" >Труба ПЭ100 PN10 SDR17 140x8.3 -  - 0</option>
<option value="22" >Труба ПЭ100 PN10 SDR17 090x5.4 -  - 0</option>
<option value="23" >Труба ПЭ100 PN10 SDR17 110x6.6 -  - 0</option>
<option value="24" >Труба ПЭ100 PN10 SDR17 125x7.4 -  - 0</option>
<option value="21" >Труба ПЭ100 PN10 SDR17 075x4.5 -  - 0</option>
<option value="20" >Труба ПЭ100 PN10 SDR17 063x3.8 -  - 0</option>
<option value="19" >Труба ПЭ100 PN10 SDR17 050x3.0 -  - 0</option>
<option value="18" >Труба ПЭ100 PN10 SDR17 040x2.4 -  - 0</option>
<option value="17" >Труба ПЭ100 PN10 SDR17 032x2.0 -  - 0</option>
<option value="27" >Труба ПЭ100 PN10 SDR17 180x10.7 -  - 0</option>
<option value="28" >Труба ПЭ100 PN10 SDR17 200x11.9 -  - 0</option>
<option value="29" >Труба ПЭ100 PN10 SDR17 225x13.4 -  - 0</option>
<option value="30" >Труба ПЭ100 PN10 SDR17 250x14.8 -  - 0</option>
</select>
 
 
</div>
         
    <div style="float: right;vertical-align: middle;"> <label for="quantity6" class="quantity_box">Количество:&nbsp;</label><input type="text" class="inputboxquantity" size="4" id="quantity6" name="quantity[]" value="1" />
<input type="button" class="quantity_box_button quantity_box_button_up" onclick="var qty_el = document.getElementById('quantity6'); var qty = qty_el.value; if( !isNaN( qty )) qty_el.value++;return false;" />
<input type="button" class="quantity_box_button quantity_box_button_down" onclick="var qty_el = document.getElementById('quantity6'); var qty = qty_el.value; if( !isNaN( qty ) &amp;&amp; qty > 0 ) qty_el.value--;return false;" />
   
    <input type="submit" class="addtocart_button" value="Купить" title="Купить" />
    </div>
       
    <input type="hidden" name="flypage" value="shop.flypage.tpl" />
<input type="hidden" name="page" value="shop.cart" />
    <input type="hidden" name="manufacturer_id" value="1" />
    <input type="hidden" name="category_id" value="8" />
    <input type="hidden" name="func" value="cartAdd" />
    <input type="hidden" name="option" value="com_virtuemart" />
    <input type="hidden" name="Itemid" value="23" />
    <input type="hidden" name="set_price[]" value="" />
    <input type="hidden" name="adjust_price[]" value="" />
    <input type="hidden" name="master_product[]" value="" />
    </form>
</div>
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
попробуй в \administrator\components\com_virtuemart\classes\ps_product_attribute.php
в 305 строке вместо
Код
				$q .= "WHERE product_id='$product_id' ORDER BY attribute_list ASC" ;
написать
Код
				$q .= "WHERE product_id='$product_id' " ;
не получится - в том же файле в других местах пробуй убирать
Код
ORDER BY attribute_list ASC
*

akim

  • Новичок
  • 9
  • 0 / 0
Я сделал это!
 yes!
Укандохал четыре рабочих дня ведущего инженера на работу веб-разработчика. Изучил слегка запросы SQL, работу с таблицами данных, основы JavaScript и принципы использования шаблонов (заглушек) в структуре virtuemart...

Короче, нашлась таки заветная строчка здесь:

файл ps_product_attribute.php, 266-я строка или ближайшая к ней со следующим содержанием:

Код
$q = "SELECT product_id,product_name FROM #__{vm}_product WHERE product_parent_id='$product_id' AND product_publish='Y' " ;

ежели эту строку заменяем на такую:

Код
$q = "SELECT product_id,product_name FROM #__{vm}_product WHERE product_parent_id='$product_id' AND product_publish='Y' ORDER BY `product_id` ASC" ;

то желанная сортировка работает!

Остальное (типа вида сортировки и других вариантов отображения) - дело техники.

Отдельная благодарность beagler за соучастие. Файл оказался тот же, что ты и советовал, но не потрать я столько времени на теорию, всё равно бы не нашел эту строчку, хоть бы все четыре дня её там искал, и все равно не знал бы, что в неё прописать  ^-^

upd
Ага, ну вот и результат:

« Последнее редактирование: 16.09.2009, 13:27:05 от akim »
*

and72

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
А больше ничего не меняли?? заменил эту строку и к сожалению ничего не изменилось (((
*

akim

  • Новичок
  • 9
  • 0 / 0
Там этих строк несколько, возможно, вы не ту заменили.
Через "поиск по документу" найдите все варианты и замените - должно заработать.

Да, и в данном случае у вас будет сортировка по id продукта (в базе ему автоматически присваивается сквозная нумерация). Это надо будет учитывать при заполнении каталога - если чего напутаете, будет сортироваться соответственно.

Дело довольно муторное, я сначала прописываю всю номенклатуру в экселе с номерами id продукта и sku (артикул товара), а затем при помощи редактирования таблиц в phpMyAdmin подправляю чего надо.
*

and72

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Спасибо!а по имени таким же способом можно сортировать?
если я правильно понял то строка должна получиться так $q = "SELECT product_id,product_name FROM #__{vm}_product WHERE product_parent_id='$product_id' AND product_publish='Y' ORDER BY `product_name` ASC" ; и поймет ли он русские названия?
*

and72

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
и еще файл ps_product_attribute.php находится также в administrator\components\com_virtuemart\html в нем мы ничего не меняем?
*

akim

  • Новичок
  • 9
  • 0 / 0
если поможет, вот как я делаю:

*

and72

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
у меня немного другая специфика..а в phpMyAdmin что вы редактируете и в какой таблице?
*

akim

  • Новичок
  • 9
  • 0 / 0
Спасибо!а по имени таким же способом можно сортировать?
если я правильно понял то строка должна получиться так $q = "SELECT product_id,product_name FROM #__{vm}_product WHERE product_parent_id='$product_id' AND product_publish='Y' ORDER BY `product_name` ASC" ; и поймет ли он русские названия?

Да, там практически по любому параметру можно сортировать. Кириллицу сортирует без проблем - это прекрасно видно на наглядном примере.
*

akim

  • Новичок
  • 9
  • 0 / 0
у меня немного другая специфика..а в phpMyAdmin что вы редактируете и в какой таблице?

таблица называется vm_product
она со временем станет у Вас самой большой таблицей по объёму
*

akim

  • Новичок
  • 9
  • 0 / 0
и еще файл ps_product_attribute.php находится также в administrator\components\com_virtuemart\html в нем мы ничего не меняем?
этого я, к сожалению, уже не помню, и лезть вспоминать совершенно нет времени, извините
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Подскажите, а как сделать чтобы


в выпадающем списке было не "Выбрать" первой строчкой, а название-атрибуты-цена родителя (текущего товара, тоесть)?
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Количество просмотров товара VirtueMart Существует?

Автор grishin

Ответов: 38
Просмотров: 9828
Последний ответ 22.08.2020, 08:44:29
от rsn
VirtueMart. Вывести названия дополнительных изображений в карточке товара

Автор Delik

Ответов: 3
Просмотров: 3381
Последний ответ 04.09.2018, 10:42:46
от Eholov
Товар в конец списка

Автор Dmitka

Ответов: 5
Просмотров: 3799
Последний ответ 21.06.2018, 08:49:12
от kungurskiy
Сортировка в админке VirtueMart

Автор r_sosnovskiy

Ответов: 2
Просмотров: 1650
Последний ответ 20.05.2018, 23:56:05
от r_sosnovskiy
Как сделать импорт товара на VirtueMart?

Автор Усач911

Ответов: 0
Просмотров: 934
Последний ответ 07.11.2017, 22:03:18
от Усач911