Русский Форум в Аргентине

Информационные технологии => WEB разработки => Тема начата: Ray от 11 Июнь 2009, 07:25:51



Название: Интернет-магазин Magento
Отправлено: Ray от 11 Июнь 2009, 07:25:51
Magento — интернет-магазин с открытым исходным кодом, распространяющееся в соответствии с Open Software License (OSL 3.0).Эта штука сделана с использованием Zend Framework, но только еще нехило навернута.
Wiki (http://ru.wikipedia.org/wiki/Magento)
В двух словах:
Тяжелая, достаточно сложная и туповатая система(для разработчиков) с оООООчень хреновой документацией и не без глюков.
Скажем так, эээ...  статей по ней достаточно много(на офф. сайте), но в них достаточно сложно разобраться,и, к тому же, во многих
статьях просто непонятно, что, как и откуда берется.
В общем надо долго и вдумчиво курить статьи и код самой Мадженты, чтобы понять многие вещи.
Ну.. и без медитаций конечно никак :)
Почему я с ней работаю? Да потому что работа такая )) И приходится работать и разбираться с разными проектами и технологиями, ну и конечно же писать "под них".

Написал я что-то вроде небольшого обзора по перегрузке контроллера.
Может кому-то пригодится/поможет.

Перегрузка контроллера пригодится любому программеру, которому надо добавить
какую-либо свою фичу в Magento, либо просто расширить функционал системы без
вмешательства в ее исходники.
Покажу на простом примере способ, которым я добился поставленной задачи.
Я перегружал Mage_Checkout_OnepageController, но, я думаю, не составит труда
перегрузить какой-либо другой контроллер аналогичным способом.
В классе OnepageController.php есть метод saveBillingAction(), который надо
немного изменить.
Алгоритм действий следующий:
1)Делаем свой контроллер
2)Правим конфиг нашего модуля, который лежит в /app/code/local/NameSpace/OurModule/etc/config.xml
3)Правим layout.
Итак, приступим.
Из обозначений, NameSpace - пространство имен/название вашей компании, ну и
OurModule - имя вашего модуля.
В общем, смотрим на перегружаемый контроллер.
А вот,собственно,и он app/code/core/Mage/Checkout/controllers/OnepageController.php
Идем в каталог своего модуля,т.е. в /app/code/local/NameSpace/OurModule/
Видим в нем каталог controllers, заходим в него и создаем каталог с таким именем,
какое имеет контроллер перегружаемого нами модуля, т.е.создаем каталог Checkout.
Заходим в него и создаем наш собственный контроллер, имя которого идентично
имени перегружаемого контроллера,т.е. создаем файл OnepageController.php.
Теперь напишем класс нашего контроллера, который будет производным от
наследуемого нами Mage_Checkout_OnepageController.
В общем, здесь все просто.

Цитировать
<?php
// Подключаем класс родителя.
require_once 'Mage/Checkout/controllers/OnepageController.php';

// Наследуем его своим классом
class NameSpace_OurModule_Checkout_OnepageController extends Mage_Checkout_OnepageController
{
  // Обеспечиваем вызов конструктора базового класса
  public function _construct()
  {
    parent::_construct();
  }
  
  // Перегружаем наш метод saveBillingAction()
  public function saveBillingAction()
  {
    // Сначала вызываем этот метод из базового класса
    parent::saveBillingAction();
    
    // А теперь здесь добавляем нужный нам функционал
    Mage::log('Hello from overloaded Controller!');
  }
}
?>

Теперь подкорректируем конфиг нашего модуля.
Идем в /app/code/local/NameSpace/OurModule/etc/config.xml
Между нодами <global>..</global> добавляем ноды <rewrite>..</rewrite>.
А уже между ними помещаем то, что нам надо.Выглядит это вот так:

Цитировать
<global>
...
  <rewrite>
  <!--
    Здесь,в общем,после узла <rewrite> идет узел со следующим названием:
    <пространство имен_имя модуля_имя перегружаемого модуля_имя контроллера(без слова Controller)_имя метода экшена(без слова Action)>
  -->
    <namespace_ourmodule_checkout_onepage_savebilling>
      <from><![CDATA[#^/checkout/onepage/saveBilling/$#]]></from>
      <to>/ourmodule/checkout_onepage/saveBilling/</to>
    </namespace_ourmodule_checkout_onepage_savebilling>
  </rewrite>
...
</global>

Отредактировав, заглянем еще в layout.
Идем в /app/design/frontend/default/default/layout/ourmodule.xml, причем,
default/default - это темы оформления, возможно у вас они могут быть другими.
Ниже привожу листинг этого ourmodule.xml:

Цитировать
<?xml version="1.0"?>
<layout version="0.1.0">
  <checkout_onepage_index>      
    <reference name="checkout.onepage">
      <action method="unsetChild">
        <name>billing</name>
      </action>
      <block type="ourmodule/ourmodule" name="billing" template="ourmodule/ourmodule.phtml" />
    </reference>      
  </checkout_onepage_index>
</layout>

В этом конфиге указано, что и каким шаблоном будет подменятьтя.
Здесь, ourmodule.phtml лежит в /app/design/frontend/default/default/template/ourmodule/ourmodule.phtml

Активируется модуль,если кто забыл, в /app/etc/modules/NameSpace_All.xml.
Вот,собственно, и все, контроллер перегружен.
Как-то вот так.
Контроллер перегружался на версии Magento 1.3.1
Дополнительно можете почитать статью Wiki, How to overload a controller, которую можно найти на оф. сайте magentocommerce (http://www.magentocommerce.com)


Название: Лайв-видео и стриминг-решения
Отправлено: vicfrommogilev от 14 Октябрь 2010, 20:32:00
Любые лайв-видео и стриминг-решения: видео-чаты, в том числе 1-на-1, вебкам-чаты, с поминутной оплатой, видео-конференции, чаты и модули лайв-видео общения для социальных сетей, вебинары, php-streaming, VLC, red5, wowza, adobe FMIS. Умеренные цены, решения под ключ, свой хостинг, дата-центры в США, Германии и Великобритании, гарантийное и послегарантийное обслуживание.

Большой выбор готовых лайв-видео модулей и более подробная информация на сайте www.web-studio.name (http://www.web-studio.name)

Можно писать напрямую мне в асю 346-297-550 или скайп vicfrommogilev.