Проверить настройки Skip to content

Изменить контроллер Magento, Cart.php

При разработке интернет магазина очень часто нужно «подгонять» функционал CMS Magento (Мадженто) под клиента. Это или внешний вид, или сам функционал(логика) Magento.

Очень часто клиент хочет добавить новые возможности в этап подсчета суммы и оплаты за покупки, в Magento Cart (корзина покупателя) и Checkout (оплата покупки). Или изменить стандартное поведении корзины магазина в Magento.

То есть к примеру, при каком-то действии N, при добавлении товара в корзину, надо что-то делать… Или изменить какой-то Action в Cart.php.

И здесь не обойтись без изменения контролера Magento( Magento controller).

Пример, как написать Magento модуль который будет переписывать контроллер Magento.

1) создаем папку My (это папка поставщика модулей Magento) в app/code/local

2) создаем папку Checkout (это папка непосредственно нового модуля для Magento) в app/code/local/My

3) создаем папки для файла конфигурации модуля Magento, и для контролера. В app/code/local/My/Checkout создаем папку etc . Также в app/code/local/My/Checkout создаем папку controllers.  Далее в app/code/local/My/Checkout/controllers создаем папку Checkout

4) создадим файл конфигурации для Magento модуля,
идем в папку app/code/local/My/Checkout/etc и создаем файл config.xml

5)  вставим XML-код в файл app/code/local/My/Checkout/etc/config.xml (который создали в  предыдущем пункте) XML-код, это настройки модуля Magento, в  которых  описываем новые модели, блоки, контролеры, и т.д.

<?xml version="1.0"?>
 <config>
 <modules>
 <My_Checkout>
 <version>0.0.1</version>
 </My_Checkout>
 </modules>
 <frontend>
 <routers>
 <checkout>
 <args>
 <modules>
 <My_Checkout before="Mage_Checkout">My_Checkout_Checkout</My_Checkout>
 </modules>
 </args>
 </checkout>
 </routers>
 </frontend>
 </config>

Здесь указываем, что надо загружать наш новый контролер перед контроллером Mage_Checkout

6) создадим контроллер Magento. В папке app/code/local/My/Checkout/controllers/Checkout создадим файл CartController.php . Думаю что теперь стало понятно  — будум перезаписывать контроллер корзины Magento (cart).

Вставим php-код

require_once("Mage/Checkout/controllers/CartController.php");
/**
 * Shopping cart controller
 */
 class My_Checkout_Checkout_CartController extends Mage_Checkout_CartController
 {
 /**
 * Shopping cart display action
 */
 public function indexAction()
 {
 die('hello magento');
 }
 }

 

7) осталось включить модуль Magento. Идем в папку app/etc/modules и создаем файл My_Checkout.xml

8) вставляем в app/etc/modules/My_Checkout.xml вот этот XML-код

<?xml version="1.0"?>
 <config>
 <modules>
 <My_Checkout>
 <active>true</active>
 <codePool>local</codePool>
 </My_Checkout>
 </modules>
 </config>

 

9) Сбрасываем кеш (cache) Magento

Теперь если зайдем в корзину сайта на Magento, то просто увидим «hello magento» :)  В новый контроллер Magento можно добавить свои функции/методы.

Таким же способом можно переписать контролер Magento Onepage Checkout.

Magento 1.*
  • Woolf

    это лучший рускоязычный сайт по magento!

  • DevS

    Добрый день , подскажите юному падавану magento. Как мне изменить подсчет цены для каждого товара в корзине?
    Немного опишу суть проблемы: для товара добавились кастомные атрибуты и в зависимости от выбранного значения каждого атрибута чистую цену продукта мне нужно умножать на определенный процент и выводить уже обновленную цену в корзине.

    Буду очень благодарен за ответ.

    • http://www.magefast.com Alex (admin)

      В Magento есть замечательный модуль, Rules, Catalog Rulues, Cart Rules.
      В меню Promotions
      Может поможет :)

  • Al Alexx

    ллддв о од од л од ол о о ол оло

    • magefast

      cgfcb,j