Показаны сообщения с ярлыком Magento. Показать все сообщения
Показаны сообщения с ярлыком Magento. Показать все сообщения

четверг, 14 июня 2012 г.

Иерархия статических страниц на Magento

Нашел наконецто модуль для организации иерархии статических страниц в Magento. Низкий поклон автору за его работу - потому как модуль абсолютно бесплатный.
Подробнее о нем - http://www.johannreinke.com/en/2012/01/10/magento-cms-pages-in-a-tree-structure/
В добавок ко всему он выложил его в удобном для всех разумных существ виде - а именно как репозиторий на гитхабе, чем избавил всех от необходимости иметь секс с magento connect.
В общем этот модуль - must have для любого магенто магазина. 

пятница, 4 мая 2012 г.

Magento-баг в аутентификации

Сегодня наткнулся на весьма досадную багу в системе аутентификации магенты. Если сессия протухает и клиент сразу же пытается залогинится - логин не работает. То есть клиента перенаправляют на страницу логина, он вводит корректные логина/парол - нажимает отправить -  и его опять перенаправляют на эту же страницу. Молча. Никакого сообщения об ошибке или успешности логина. После продолжительного шаманства выяснились некоторые детали: 
1. Проблема существует только в клиентской части - в админке таже самая последовательность действи не воспроизводит проблему. 
2. При каждой попытке session ID меняется. 
3. При удалении всех кук проблема также пропадает.
Из второго пункта можно сделать вывод что при каждой попытке заводится новая сессия, а старая соответсвенно теряется. После некоторой медитации над заголовками запросов я попробовал отключить флаг - "HTTP only" в настройках сессии - и угадал. После установки этого флага в "No", все заработало.

пятница, 30 марта 2012 г.

Luxe Fast Pages

Только что зарелизил новый модуль - Luxe Fast Pages. Оптимизирует работу статических страниц в Magento. Первый новый модуль за последние 1.5 года :-)

понедельник, 19 марта 2012 г.

Не так давно занимался оптимизацией Magenta, а именно вычисления карты и отображения страницы карты и окончательно понял что xhprof - must have для любого PHP программиста. Он умеет с легкостью необычайно показывать всю глубину ужаса происходящего внутри системы:

четверг, 29 апреля 2010 г.

Скачать коммерческие разширения для Magento от Aitoc, MageWorx ?

Нет ничего проще - http://svn2.assembla.com/svn/spm-mage/app/code/local/
куча платных разширений лежит в открытом доступе - качай сколько угодно.
Исходники не зашифрованы. Похоже какой-то умник решил использовать
Free Public Workspaces от http://www.assembla.com/plans для размещения исходников своего магазина.
Дибилизм в общем. Мало того что исходники собственного магазина опубликовал, еще и производителей модулей подвел.
ЗЫ
написал об этом производителям модулей(Aitoc, MageWorx) - как никак коллеги по цеху. Посмотрим удасться ли им убедить assembla.com закрыть этот репозиторий.


понедельник, 9 февраля 2009 г.

YALC- Yet Another Live Chat

Не так давно я познакомился с одним замечательным модулем для Magento - MagentoLiveChat . Этот модуль предназначен для организации online поддержки пользователей, так называемого live support. При всех положительных качествах этого модуля, он имеет некоторые недостатки:
1. Дополнительная (и не маленькая) нагрузка на сервер, что делает это решение малопригодным для магазинов работающих на слабых серверах
2. Необходимость постоянно держать включенным специализированный чат клиент.
3. Неудобность в использовании для клиентов. Согласитесь - маленькое окошко для отправки сообщений в левой колонке - не самое юзабильное решение.
Все это натолкнуло меня на мысль предложить альтернативное решение для организации Live Support - модуль Luxe_YALC. На самом деле этот модуль представляет собой интерфейс к Google Talk и позволяет организовать гостевой чат. То есть для того чтобы воспользоваться этой системой пользователю не нужен Google Account. Он просто наживает кнопку и открывается окно гостевого чата. То что я не стал изобретать велосипед(писать собственный чат клиент и сервер), а воспользовался сервисом Google имеет ряд очевидных преимуществ:
1. Надежность. Согласитесь что сервера даже на самых надежных хостингах падают чаще чем сервисы Google.
2. Скорость работы. Так как вся нагрузка по передаче сообщений и опросу участников лежит на сервисе Google Talk то работа чата никак не влияет на скорость работы и загрузку вашего сервера.
3. Конфиденциальность. Общение происходит полностью анонимно, т.е ваш клиент не сможет узнать даже Google Account через который с ним разговаривает служба технической поддержки.
4. Вы можете одновременно разговаривать с неограниченным числом пользователей.
5. Увеличение числа пользователей никак не влияет на скорость работы чата.
6. Бесплатность. Все что вам нужно - это Google Account для службы технической поддержки и установленный модуль Luxe_YALC.
7. Вам не нужно держать постоянно запущенный сторонний чат клиент. Для осуществления поддержки пользователей вы можете использовать свой любимый IM(например Qip Infinum)
8. Вся переписка с клиентами сохраняется в Google Account, так что вы всегда можете к ней вернуться в том случае если вы что-то забыли. Поиск Google поможет Вам быстро найти нужное сообщение.

Ниже представлен скриншот модуля Luxe_YALC:


Установка модуля:
1. Устанавливаем модуль Luxe_YALC через MagentoConnect.
2. Очищаем кэш
3. Перелогиниваемся в админку
4. Заходим на страницу конфигурации Luxe_YALC и настраиваем его под свои нужды как это описано на скриншоте ниже:


Надеюсь что кому-нибуть этот модуль покажется полезным.

четверг, 15 января 2009 г.

Перегрузка контроллера

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

1. Непосредственно перегружаем контроллер:
  1. require_once 'Mage/Adminhtml/controllers/Catalog/CategoryController.php';
  2. class Luxe_Promotions_Adminhtml_CategoryController extends Mage_Adminhtml_Catalog_CategoryController
  3. {
  4.     public function promotiongridAction()
  5.     {
  6.         die('Example of the new action');
  7.     }
  8.  
  9.     public function saveAction()
  10.     {
  11.         die('Example of overloaded action');
  12.     }
  13. }
* This source code was highlighted with Source Code Highlighter.


обратите внимание на 1 строчку - мы должны вручную подключить перегружаемый контроллер, так как классы контроллеров в Magento обрабатываются особым образом и они не могут быть подключены автоматичеки.

2. Сообщаем Magento что мы перегрузили контроллер adminhtml_category:
  1. <global>
  2.     ..............
  3.     <rewrite>
  4.         <luxe_promotions_adminhtml_category>
  5.             <from><![CDATA[#^/admin/catalog_category/save/#]]></from>
  6.             <to>/promotions/adminhtml_category/save/</to>
  7.         </luxe_promotions_adminhtml_category>
  8.     </rewrite>
  9. </global>
* This source code was highlighted with Source Code Highlighter.


В данном случае мы указываем что мы хотим чтобы все запросы на action "/admin/catalog_category/save/" перенаправлялись на наш action: "/promotions/adminhtml_category/save/"

В заключении могу сказать что этот пример выдран из одного из моих модулей, и по крайней мере до публикации был 100% рабочим :-)

среда, 14 января 2009 г.

отладка под Magento

Сегодня в очередной раз убедился в том что отладка Ajax кода под Magento - то еще удовольствие. Под впечатлением от пережитого решил накарябать парочку (возможно даже полезных) советов:

1. Если это девелопмент копия магазина - первым делом включаем отображение ошибок и debug mode. Для этого вставляем в файл index.php следующие строчки:
Mage::setIsDeveloperMode(true);
ini_set('display_errors', 1);
непосредственно перед вызовом Mage::run(). После этого Magento перестанет редиректить вас на error report при возникновении любой ошибки. Вместо этого сообщение об ошибке вместе с back trace будет вываливаться прямо на текущей странице.

2. Включаем логирование. Для этого заходим в System->Configuration->Developer->Log Settings и вводим соответсвующие значения. После этого вы можете использовать функцию логирования для вывода debug информации - Mage::log($foo); Очень помогает при отладке Ajax запросов.
3. С осторожностью пользуйтесь функциями вроде var_dump(), print_r() etc при выводе содержимого коллекций, так как в большинстве объектов храниться огромное количество ссылок на другие объекты, и поэтому при попытке вывести содержимое даже не самой большой коллекции вы рискуете подвесить веб сервер и обеспечите себе несколько приятных мгновений....
4. Если нужно вносить изменения в шаблоны, можно включить отображение имени блока и шаблона: страница System->Configuration->Developer->Debug в админке.

понедельник, 12 января 2009 г.

Magento 1.2.x - что нового ?

Под новый год Varien приподнесла очередной подарок поклонникам Magento, вышла очередная версия этого лучшего (не побоюсь этого слова) на данный момент open source интернет магазина. Кроме добавления поддержки скачиваемых продуктов, было внесено немало более мелких усовершенстваний. В частности притерпела некоторые изменения система тэгов внутренней CMS Magento. В прошлой статье я уже рассказывал об этих тегах, в сегодняшней статье я решил продолжить эту тему и рассказать как обстоят дела в этом направлении в Magento версии 1.2.
Тег {{skin }} - предназначен для получения независимой от настроек ссылки на файл (по умолчанию файл скина). Он может принимать следующие параметры:
  • url - путь к файлу, ссылку на который требуется получить
  • _type - значение по умолчанию - 'skin'. Этот параметр используется для указания типа ресурса, ссылку на который требуется получить. Возможные значения layout, template, skin, locale.
  • _default - значение по умолчанию false. Этот параметр служит для передачи значения по умолчанию. В случае если искомый файл не бедет найден ( а его существование проверяется перед тем как вернуть ссылку), вместо ссылки будет возвращено значение параметра _default.
  • _store - используется для явного указания store.
  • _theme - используется для явного указания текущей темы. Значение по умолчанию - default.
  • _package - используется для явного указания испльзуемой design package. Значение по умолчанию - default.
  • _area - используется для явного указания текущей области. Значение по умолчанию - frontend.
  • _relative - используется для указания типа ссылки - абсолютная или относительная ссылка
  • _secure - используется для указания протокола - HTTP или HTTPS
Если файл не был найден в указанной явно теме или design package, то его поиск будет продолжен в дефолтной теме. С помощью этого тэга также возможно подключение различных ресурсов в зависимости от типа браузера клиента. Эта возможность может быть использована к примеру для подключения различных CSS файлов для различных браузеров. Детали того как это можно сделать вы можете узнать в Mage_Core_Model_Design_Package, в котором находится реализация этого тэга (function getSkinUrl).


Тег {{store }} - предназначен для получения независимой от настроек ссылки на страницы магазина. Он может принимать следующие параметры:
url - путь к файлу, ссылку на который требуется получить
direct_url - использовать прямой URL(true/false)
_escape - обрабатывать с помощью escape() ?
_query - параметры запроса
_relative_url: true, false
_type: 'link', 'skin', 'js', 'media'
_secure: true, false
_scheme: 'http', 'https'
_user: 'user'
_password: 'password'
_host: 'localhost'
_port: 80, 443
_base_path: '/dev/magento/'
base_script: 'index.php'
_storeview_path: 'storeview/'
_route_path: 'module/controller/action/param1/value1/param2/value2'
_route_name: 'module'
_controller_name: 'controller'
_action_name: 'action'
_route_params: array('param1'=>'value1', 'param2'=>'value2')
_query: (?)'param1=value1&param2=value2'
_query_array: array('param1'=>'value1', 'param2'=>'value2')
_fragment: (#)'fragment-anchor'
Как вы видите этот тэг имеет огромное колчество параметров на все случаи жизни, значения большинства из которых понятны. Более детальную информацию можно узнать в файле Mage_Core_Model_Url, в котором находиться функция реализующая этот тэг public function getUrl($routePath=null, $routeParams=null)).

Продолжение следует.....