Как сделать скидку на все товары в Prestashop?

Как сделать скидку на все товары в PrestashopВозникла необходимость приделать в замечательный магазин Prestashop фичу, позволяющую выставлять для всех товаров без исключения скидку. Удобная штука для, например, праздников. Вообще, удивительно, почему этой функции изначально нет в админке. Пришлось делать самому. Ничего в этом сложного нет, можете пользоваться способом тоже. Но сразу предупрежу. На длительном промежутке времени тестов, естественно, не проводилось и как в дальнейшем это все скажется на, например, обновлении магазина — неизвестно. Ну да ладно, приступим к описанию.

Для того, чтобы в Prestashop сделать скидку на все товары, необходимо зайти в  MySQL и сделать следующее:

1. Немного поправим таблицу ps_product (ну или какой там у вас префикс :)) и добавим в нее новое поле discount. При создании поля должно получиться вот такое:

2. Чуть поправим настройки таблицы ps_specific_price и добавим полям значения по умолчанию, чтобы структура в итоге выглядела так:

3. Ищем файлик /admin/tabs/AdminCatalog.php.   Папка админ — это та папка, которую советуют переименовать в целях безопасности и она у вас может называться по другому. Ищем в этом файлике в самом низу ищем строки

echo ‘<h2>’.$this->l(‘Products in this category’).’</h2>’;

$this->adminProducts->display($this->token);

И между этими строчками втыкаем следующее:

echo '

	<strong>Добавить скидку всем товарам: <span style="color: red; font-weight: bold;">(Это уничтожит все текущие скидки для всех товаров!)</span></strong>

‘; if (isset($_POST['discount'])) { $discount = (int)$_POST['discount']/100; $link = mysql_connect(‘DATABASE_ADDR’, ‘DB_USER’, ‘DB_PASS’); if (!$link) { die(‘Could not connect to database: ‘ . mysql_error()); } $setProducDisc = mysql_query(‘UPDATE `ps_product` SET `discount` = ‘.$discount.»); if (!$setProducDisc) { die(‘Fail during discount setting in ps_product table’ . mysql_error()); } $emptySP = mysql_query(‘TRUNCATE TABLE `ps_specific_price`’); if (!$emptySP) { die(‘Fail during clearing ps_specific_price table’ . mysql_error()); } $setDiscount = mysql_query(‘INSERT INTO ps_specific_price (id_product, reduction) SELECT id_product, discount FROM ps_product ‘); if (!$setDiscount) { die(‘Fail during setting discount in ps_specific_price table’ . mysql_error()); } mysql_close($link); echo ‘Discount successfuly added’; }

 

Где:

DATABASE_ADDR — адрес, куда стучаться для коннекта к базе. Часто localhost

DB_USER — пользователь вашей престовской БД

DB_PASS — пароль к БД

В результате должно получиться следующее:

УСТАНОВКА СКИДКИ ТАКИМ СПОСОБОМ УДАЛИТ ВСЕ СТАРЫЕ СКИДКИ, НАСТРОЕННЫЕ ДЛЯ ЕДИНИЧНЫХ ТОВАРОВ!

В коде все, думаю, открыто и прозрачно. Так что при желании можно допилить всяких полезностей, типа, установки скидки для категории и т.д. и т.п.

 

 

{ Оставить комментарий }

  1. Sayan

    Здравствуйте!
    Скажите пожалуйста, вы еще работаете с prestashop? Мне как раз нужен модуль или дополнение (ну или мануал), чтобы создавать скидки для категорий для групп клиентов.

  2. ann

    Запили мне кнопку «Купить»! :)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>