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

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Очень часто пользуюсь импортом (Товар обновляется еженедельно), и периодически натыкаюсь на косяки, такие как отсутствие цены, артикула, изображения, да и много других недочетов бывает. И вот чтобы проверить результаты импорта нужно заходить в каждый товар отдельно. А при большом количестве это очень долго и нудно.
Захотел стрелки в редактировании товара, Следующий товар и Предыдущий товар.
Добавить стрелки оказалось не сложно, а вот правильно всё организовать (не показывать стрелку если нет след. или пред. товара, учитывать сортировку и т.д.) увы сложнее, да и лень тратить время  ^-^
Выкладываю тут хак ядра, но очень прошу Виктора учесть данное пожелание для следующих версий JoomShopping.
Добавляем кнопки в функцию display в файле /administrator/components/com_jshopping/views/product_edit/view.html.php
Код
        JToolBarHelper::customX("product_prev","back","back",_JSHOP_PREV, false);
        JToolBarHelper::customX("product_next","forward","forward",_JSHOP_NEXT, false);
Добавляем функции в /administrator/components/com_jshopping/controllers/products.php
Код
    function product_next(){
        $products = &$this->getModel("products");
        $rows = $products->getAllProducts(Array("publish"=>1));
        $total = Count($rows);
        $product_id = JRequest::getInt('product_id');
        $Next = $product_id;
        foreach($rows as $Key=>$row){
         If ($Key < $total){
         If ($row->product_id == $product_id){
         $Next = $rows[$Key + 1]->product_id;
         Break;
         }
         }
        }
        If (!$Next) $Next = 1;
        $this->setRedirect("index.php?option=com_jshopping&controller=products&task=edit&product_id=".$Next);
    }
    function product_prev(){
        $products = &$this->getModel("products");
        $rows = $products->getAllProducts(Array("publish"=>1));
        $total = Count($rows);
        $product_id = JRequest::getInt('product_id');
        $Prev = $product_id;
        foreach($rows as $Key=>$row){
         If ($Key < $total){
         If ($row->product_id == $product_id){
         $Prev = $rows[$Key - 1]->product_id;
         Break;
         }
         }
        }
        If (!$Prev) $Prev = 1;
        $this->setRedirect("index.php?option=com_jshopping&controller=products&task=edit&product_id=".$Prev);
    }
Добавляем ленги в /administrator/components/com_jshopping/lang/ru-RU.php
Код
define('_JSHOP_NEXT','Следующий товар');
define('_JSHOP_PREV','Предыдущий товар');
« Последнее редактирование: 22.06.2012, 16:06:40 от Linfuby »
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

skyrec

  • Захожу иногда
  • 383
  • 10 / 0
  • Люблю я детей !!!
Подскажите пожалуйста, для последней версии Jshop актуально ?
*

Biss

  • Давно я тут
  • 963
  • 100 / 0
Попробовал, не катит белый экран. Вроде всё по инструкции делал
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
очень странно. Проверил - все работает.
Дополнительно улучшил, теперь не показывается кнопка "Предыдущий товар" Если товар первый в списке (Сортировка по id). Так же не показывается "Следующий товар" если товар последний в списке.
Ниже полный код для хака:
Файл - administrator\components\com_jshopping\controllers\products.php
1. В самом начале функции edit (после кривой скобки {) прописываем след. код:
Код
		$JToolBar = JToolBar::getInstance('toolbar');
$products = JTable::getInstance("Product", "JShop");
$rows = $products->getAllProducts(array(), "product_id", "ASC");
$total = count($rows) - 1;
$product_id = JFactory::getApplication()->input->getInt('product_id', 0);
$prev = false;
$next = false;
foreach($rows as $key=>$row){
if ($row->product_id == $product_id){
if ($key < $total){
$next = true;
}
break;
}
$prev = true;
}
if ($prev) {
$JToolBar->appendButton('Standard', 'back', "Предыдущий товар", "product_prev", false);
}
if ($next){
$JToolBar->appendButton('Standard', 'forward', "Следующий товар", "product_next", false);
}
2. Перед закрывающейся скобкой (в самом конце файла }?>), после функции getvideocode(){} добавляем две функции:
Код
	function product_next(){
$products = JTable::getInstance("Product", "JShop");
$rows = $products->getAllProducts(array(), "product_id", "ASC");
$total = count($rows);
$product_id = JFactory::getApplication()->input->getInt('product_id', 0);
$next = $product_id;
foreach($rows as $key=>$row){
if ($key < $total){
if ($row->product_id == $product_id){
$next = $rows[$key + 1]->product_id;
break;
}
}
}
if (!$next) $next = 1;
$this->setRedirect("index.php?option=com_jshopping&controller=products&task=edit&product_id=".$next);
}
function product_prev(){
$products = JTable::getInstance("Product", "JShop");
$rows = $products->getAllProducts(array(), "product_id", "ASC");
$total = count($rows);
$product_id = JFactory::getApplication()->input->getInt('product_id', 0);
$prev = $product_id;
foreach($rows as $key=>$row){
if ($key < $total){
if ($row->product_id == $product_id){
$prev = $rows[$key - 1]->product_id;
break;
}
}
}
if (!$prev) $prev = 1;
$this->setRedirect("index.php?option=com_jshopping&controller=products&task=edit&product_id=".$prev);
}
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

Biss

  • Давно я тут
  • 963
  • 100 / 0
Отлично. Первый способ тоже работает скорее всего. Может я неправильно вставлял хак.
Но по второму даже лучше.
Конечно не забыть про UTF
+
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин - Товар на складе или Товар под заказ для JoomShopping [Скачать]

Автор kit2m2

Ответов: 46
Просмотров: 5789
Последний ответ 24.06.2020, 17:17:50
от Akeksandr
Товар уже в корзине

Автор denben777

Ответов: 18
Просмотров: 3807
Последний ответ 28.12.2018, 13:31:48
от dmitry_stas
Wishlist как избранное (любимый товар)

Автор virtucom

Ответов: 0
Просмотров: 330
Последний ответ 01.09.2018, 00:07:49
от virtucom
Отключить Сообщение Товар добавлен в корзину

Автор gf79

Ответов: 17
Просмотров: 946
Последний ответ 23.03.2018, 16:17:48
от nevigen
Ссылка на товар в списке заказов у клиента в личном кабинете

Автор staskmp

Ответов: 14
Просмотров: 541
Последний ответ 11.12.2017, 19:28:18
от staskmp