[Помощь] Помогите с virtuemart-ом

Статус
В этой теме нельзя размещать новые ответы.
Joomla! 2.5.7, Virtuemart 2.0.12f
Знатоки, прошу вашей помощи!:)
Ситуация такая, для различных категорий нужно список товаров выводить по разному (с различными стилями). Я понимаю что разметка(представление ) находится в файле/components/com_virtuemart/views/category/tmpl/default.php.
Я не могу разобраться как получить текущую категорию и исходя из полученных данных вывести разметку. Мне нужно конкретно узнать "позывные" активной категории. Не смог сам разобраться.
$this->category->virtuemart_category_id

Сразу еще один вопрос: Как программно задать сортировку по убыванию/прибыванию какого либо параметра. При этом мне не нужно выводить кнопки с выбором варианта сортировки для пользователей. В идеале нужно чтобы virtuemart автоматом выводил товары на странице категории согласно порядку в админке. Это можно сделать через интерфейс админки "Настройка/Настройки сортировки", но после этого он выводит по убыванию, а мне нужно наоброт. Нужен способ чтобы оперативно можно было менять в коде шаблона. как то так..
в файле default.php никак, разве что пересортировывать массив через какой-нибудь usort().
А вот на уровень выше в файле view.html.php после $productModel = VmModel::getModel('product') я делал так
Код:
if($categoryId == 10){
    $productModel->filter_order = 'ordering';
    $productModel->filter_order_Dir = 'DESC';
}
значения вместо "ordering" можешь подсмотреть в адресной строке после смены сортировки через выпадающий список (на странице категории)

Может кто нибудь знает, можно ли как-нибудь наследовать содержимое папки /components/com_virtuemart/assets/css/ в virtuemart 2 , как , например шаблоны страниц магазина в папке views? можно ли по простому копировать каталог assets в каталог html шаблона всего сайта? Если можно . то какая должна быть структура каталогов внутри папки html в этом случае? Методом тыка не получается, инфы не нашел.
нельзя

Может кто-нибудь сталкивался с подобным глюком, в админке на странице "Товары", поля сортировки неактивные и в них забит 0, поменять их virtuemart не дает, а при изменении тех товаров, у которых это поле всё-таки доступно, не сохраняется введенное значение после нажатия кнопки "Сохранить порядок". Как с этим бороться? Прилагаю скриншот с пометками
Изменять порядок у товаров можно только в пределах общей категории. Хорошо ты затер их )))
С проблемой сохранения не сталкивался.
 
Не знаю, что у вас там затерто, но по длине видно, что категории разные.
Описать логику работы порядка для товаров с множественными родительскими категориями не могу, но это наверняка можно было бы обойти при продумывании структуры.
Проблемам про сортировке товаров с одной родительской категорией не испытывал.
 
Не знаю, что у вас там затерто, но по длине видно, что категории разные.
Описать логику работы порядка для товаров с множественными родительскими категориями не могу, но это наверняка можно было бы обойти при продумывании структуры.
Проблемам про сортировке товаров с одной родительской категорией не испытывал.
Нет родительских и дочерних категорий, каждая категория на верхнем уровне. 1 товар может принадлежать нескольким категориям

Возник новый вопрос
Система Joomla! 2.5.7, Virtuemart 2.0.12f
Может кто-нибудь сталкивался с подобным глюком, в админке на странице "Товары", поля сортировки неактивные и в них забит 0, поменять их virtuemart не дает, а при изменении тех товаров, у которых это поле всё-таки доступно, не сохраняется введенное значение после нажатия кнопки "Сохранить порядок". Как с этим бороться? Прилагаю скриншот с пометками
Это баг!
Нашел кое что на оригинальном форуме virtuemart , частично решил эту свою проблему. Решением делюсь с вами:

В файле administrator/components/com_virtuemart/models/product.php замените функцию saveorder на следующий код:
PHP:
function saveorder ($cid = array(), $order, $filter = NULL) {
 
      JRequest::checkToken () or jexit ('Invalid Token');
 
      $virtuemart_category_id = JRequest::getInt ('virtuemart_category_id', 0);
 
      $q = 'SELECT `id`,`ordering` FROM `#__virtuemart_product_categories`
        WHERE virtuemart_category_id=' . (int)$virtuemart_category_id . '
        ORDER BY `ordering` ASC';
      $this->_db->setQuery ($q);
      $pkey_orders = $this->_db->loadObjectList ();
 
      $tableOrdering = array();
      foreach ($pkey_orders as $orderTemp) {
        $tableOrdering[$orderTemp->id] = $orderTemp->ordering;
      }
      // set and save new ordering
      foreach ($order as $key => $ord) {
        $tableOrdering[$key] = $ord;
      }
      asort ($tableOrdering);
      $i = 1;
      $ordered = 0;
      foreach ($tableOrdering as $key => $order) {
//          if ($order != $i) {
        $this->_db->setQuery ('UPDATE `#__virtuemart_product_categories`
              SET `ordering` = ' . $i . '
              WHERE `id` = ' . (int)$key . ' ');
        if (!$this->_db->query ()) {
            vmError ($this->_db->getErrorMsg ());
            return FALSE;
        }
        $ordered++;
//          }
        $i++;
      }
      if ($ordered) {
        $msg = JText::sprintf ('COM_VIRTUEMART_ITEMS_MOVED', $ordered);
      }
      else {
        $msg = JText::_ ('COM_VIRTUEMART_ITEMS_NOT_MOVED');
      }
      JFactory::getApplication ()->redirect ('index.php?option=com_virtuemart&view=product&virtuemart_category_id=' . $virtuemart_category_id, $msg);
 
  }
Не знаю как эта магия работает, но частично проблему решило.
что изменилось: после нажатия на кнопку "сохранить порядок" (с дискетой), "отмерзают" неактивные серые стрелочки и товар можно с помощью них "двигать" в верх-низ, НО при этом в поле сортировки отображаются левые числа, не влияя на результат расположения товара, т.е. у товара 1 в поле порядок сортировки = 10, но при этом он выше товара 2 у которого в этом поле = 4. зато кликая по стрелочкам можно менять порядок.

ссылка на оригинальное решение на английском языке:


Может кто-нибудь сможет разобраться и предложить более элегантное решение...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху