SlideShare a Scribd company logo
1 of 23
Топ-10 проблем в магазине
     вашего клиента
 с которыми вы обязательно столкнётесь



           Вячеслав Костюкович
             aheadWorks.com
Код в целом ведет себя крайне
странно, однако не похоже, чтобы на
сторе были установлены какие-либо
сторонние расширения.
diff -qrbB coreReferenceFolder coreCientFolder
-q
Report only when files differ
-r
Recursively compare any subdirectories found
-b
Ignore white spaces
-B
Ignore blank lines
Предположим, что у нас есть экст, который
должен аяксом обновлять боковую корзину при
добавлении продукта из категории.

При нажатии на кнопку “add to cart” ajax-запрос
вместо результатов возвращает ошибку вида:

unknown function showName
header.phtml:
 1. <? /**
 2. * @var Mage_Page_Block_Html_Header $this
 3. */ ?>
 4. <?php
 5. function showName($name)
 6. {
 7.     echo '<strong><span>'.$name.'</span></strong>';
 8. }
 9. ?>
10. <div class="header-container">
11.    <div class="header">
    ...

sidebar.phtml:
 1. <?php /**
 2. * Shoping cart sidebar
 3. * @see Mage_Checkout_Block_Cart_Sidebar
 4. */ ?>
 5.
 6. <?php if ($this->getIsNeedToDisplaySideBar()):?>
 7.<div class="block block-cart">
 8.     <?php $_cartQty = $this->getSummaryCount() ?>
 9.     <div class="block-title">
10.         <?php showName($this->__('My Cart')); ?>
11.     </div>
    ...
fixed sidebar.phtml:


 1. <?php /**
 2. * Shoping cart sidebar
 3. * @see Mage_Checkout_Block_Cart_Sidebar
 4. */ ?>
 5. <?php
 6.       if (!function_exists('showName')) {
 7.            function showName($name) {
 8.                  echo '<strong><span>'.$name.'</span></strong>';
 9.            }
10.       }
11. ?>
12. <?php if ($this->getIsNeedToDisplaySideBar()):?>
13. <div class="block block-cart">
14.    <?php $_cartQty = $this->getSummaryCount() ?>
15.    <div class="block-title">
16.         <?php showName($this->__('My Cart')); ?>
17.    </div>
   ...
ERR (3): Warning: include(): Failed opening
'/home/vhosts/Magento/app/design/frontend/
default/default/template/ajaxcartpro/init.phtml' for
inclusion (include_path=
'/home/vhosts/Magento/app/code/local:
/home/vhosts/Magento/app/code/community:
/home/vhosts/Magento/app/code/core:
/home/vhosts/Magento/lib:
/usr/share/php: /usr/share/pear')
in /home/vhosts/Magento/app/code/core/Mage/Core/Block/
Template.php on line 241
chmod 755
/home/vhosts/Magento/app/design/
frontend/default/default/template/aja
xcartpro/ init.phtml
Установил расширение, все настроил,
но все равно не вижу его на
фронтэнде, только в админке.
app/design/frontend/default/default/
skin/frontend/default/default/

app/design/frontend/customPackage/customTheme/
skin/frontend/customPackage/customTheme/
public function __construct()
{
  ini_set('memory_limit', '1024M');
  ...
}
Расширения, использующие крон,
работают неверно.
1.   const L_CACHE = 'aw_hdu_lock';
 2.   const L_TIMEOUT = 300;
 3.
 4.   public function runJobs() {
 5.     if (self::checkLock()) {
 6.       $this->processJobs();
 7.       Mage::app()->removeCache(self::L_CACHE);
 8.     }
 9.   }
10.
11.   public static function checkLock() {
12.     $_lastExecutionTime = Mage::app()->loadCache(self::L_CACHE);
13.     if (self::L_TIMEOUT > (time() - $_lastExecutionTime)) {
14.       return false;
15.     }
16.     Mage::app()->saveCache(time(),self::L_CACHE,array(),self::L_TIMEOUT);
17.     return true;
18.   }
Валидный код, вместо того, чтобы
выполняться, возвращает ошибки.
1.   abstract class AWAS_Model_Indexer_Abstract
 2.   {
 3.       public function getIndexTableModel() {
 4.        return new AWAS_Model_Zend_Db_Table(array(
 5.          Zend_Db_Table_Abstract::PRIMARY => static::PRIMARY
 6.        ));
 7.     }
 8.   }
 9.   class AWAS_Model_Indexer_Catalog extends AWAS_Model_Indexer_Abstract
10.   {
11.       const PRIMARY = 'entity_id';
12.
13.       protected function _fillData() {
14.         $table = $this->getIndexTableModel();
15.       }
16.   }
1.   abstract class AWAS_Model_Indexer_Abstract
 2.   {
 3.     abstract protected function _getPrimary();
 4.     public function getIndexTableModel() {
 5.       return new AWAS_Model_Zend_Db_Table(array(
 6.         Zend_Db_Table_Abstract::PRIMARY => $this->_getPrimary()
 7.       ));
 8.     }
 9.   }
10.   class AWAS_Model_Indexer_Catalog extends AWAS_Model_Indexer_Abstract
11.   {
12.     const PRIMARY = 'entity_id';
13.     protected function _fillData() {
14.       $table = $this->getIndexTableModel();
15.     }
16.     protected function _getPrimary(){
17.       return self::PRIMARY;
18.     }
19.   }
После установки расширения не могу
войти в админку.
По SSH
Зайт и на сервер в папк у <Magento_store>/shell/
и выполнит ь следующие к оманды:

php -f compiler.php clear
php -f compiler.php disable

По FTP
Соз дат ь в к орневом к ат алог е Magento php файл
следующ о содержания и з апуст ит ь :
         ег
<?php
        echo exec('php -f shell/compiler.php clear');
        echo exec('php -f shell/compiler.php
disable');
?>
Вы, в рамках какой-либо задачи,
кастомизировали клиенту стор, добавили
функционал, изменили шаблоны и стили
темы, а спустя пару недель клиент
возвращается и жалуется на то, что все
ваши изменения перестали работать.
app/code/local/AW/Ext/Block/Filename.php
app/code/local/AW/Ext/Block/Filename.php.ORIGINAL
app/code/local/AW/Ext/Block/Filename.php.MODIFIED
Клиент поставил перед вами задачу,
но не предоставляет необходимый
доступ.
app/code/
app/design/
js/
var/
skin/

More Related Content

What's hot

Web осень 2013 лекция 9
Web осень 2013 лекция 9Web осень 2013 лекция 9
Web осень 2013 лекция 9Technopark
 
Web осень 2013 лекция 5
Web осень 2013 лекция 5Web осень 2013 лекция 5
Web осень 2013 лекция 5Technopark
 
Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Paul Klimov
 
Микрофреймворки PHP
Микрофреймворки PHPМикрофреймворки PHP
Микрофреймворки PHPEkaterina Giganova
 
Общая архитектура Yii2
Общая архитектура Yii2Общая архитектура Yii2
Общая архитектура Yii2Paul Klimov
 
Фреймворк Slot, Good Parts, Александр Бирюков
Фреймворк Slot, Good Parts, Александр БирюковФреймворк Slot, Good Parts, Александр Бирюков
Фреймворк Slot, Good Parts, Александр БирюковDevDay
 
Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2Paul Klimov
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6Technopark
 
Нетривиальная обработка ошибок
Нетривиальная обработка ошибокНетривиальная обработка ошибок
Нетривиальная обработка ошибокoelifantiev
 
Изоморфный JavaScript (iForum 2015)
Изоморфный JavaScript (iForum 2015)Изоморфный JavaScript (iForum 2015)
Изоморфный JavaScript (iForum 2015)Max Klymyshyn
 
Gennady kovshenin-wcrus2015-2
Gennady kovshenin-wcrus2015-2Gennady kovshenin-wcrus2015-2
Gennady kovshenin-wcrus2015-2Gennady Kovshenin
 
Web весна 2012 лекция 7
Web весна 2012 лекция 7Web весна 2012 лекция 7
Web весна 2012 лекция 7Technopark
 
YiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииYiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииPaul Klimov
 
"Жизнь без интернета" Кувалдин Артём, Яндекс
"Жизнь без интернета" Кувалдин Артём, Яндекс"Жизнь без интернета" Кувалдин Артём, Яндекс
"Жизнь без интернета" Кувалдин Артём, Яндексit-people
 
Selenium: начало работы
Selenium: начало работыSelenium: начало работы
Selenium: начало работыPaul Stashevsky
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evroneit-people
 

What's hot (19)

Web осень 2013 лекция 9
Web осень 2013 лекция 9Web осень 2013 лекция 9
Web осень 2013 лекция 9
 
Web осень 2013 лекция 5
Web осень 2013 лекция 5Web осень 2013 лекция 5
Web осень 2013 лекция 5
 
Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2
 
Микрофреймворки PHP
Микрофреймворки PHPМикрофреймворки PHP
Микрофреймворки PHP
 
Общая архитектура Yii2
Общая архитектура Yii2Общая архитектура Yii2
Общая архитектура Yii2
 
Фреймворк Slot, Good Parts, Александр Бирюков
Фреймворк Slot, Good Parts, Александр БирюковФреймворк Slot, Good Parts, Александр Бирюков
Фреймворк Slot, Good Parts, Александр Бирюков
 
Zend Framework и Doctrine
Zend Framework и DoctrineZend Framework и Doctrine
Zend Framework и Doctrine
 
Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
 
Нетривиальная обработка ошибок
Нетривиальная обработка ошибокНетривиальная обработка ошибок
Нетривиальная обработка ошибок
 
Изоморфный JavaScript (iForum 2015)
Изоморфный JavaScript (iForum 2015)Изоморфный JavaScript (iForum 2015)
Изоморфный JavaScript (iForum 2015)
 
Gennady kovshenin-wcrus2015-2
Gennady kovshenin-wcrus2015-2Gennady kovshenin-wcrus2015-2
Gennady kovshenin-wcrus2015-2
 
Web весна 2012 лекция 7
Web весна 2012 лекция 7Web весна 2012 лекция 7
Web весна 2012 лекция 7
 
YiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииYiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляции
 
"Жизнь без интернета" Кувалдин Артём, Яндекс
"Жизнь без интернета" Кувалдин Артём, Яндекс"Жизнь без интернета" Кувалдин Артём, Яндекс
"Жизнь без интернета" Кувалдин Артём, Яндекс
 
Selenium: начало работы
Selenium: начало работыSelenium: начало работы
Selenium: начало работы
 
Суперсилы Chrome developer tools
Суперсилы Chrome developer toolsСуперсилы Chrome developer tools
Суперсилы Chrome developer tools
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
 

Similar to Top 10 problems supporting Magento customers

The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NETVitaly Baum
 
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...CodeFest
 
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15MoscowJS
 
MODX 3: Что нового?
MODX 3: Что нового?MODX 3: Что нового?
MODX 3: Что нового?Ivan Klimchuk
 
Страх и ненависть в исходном коде
Страх и ненависть в исходном кодеСтрах и ненависть в исходном коде
Страх и ненависть в исходном кодеKolya Korobochkin
 
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловWebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловGeeksLab Odessa
 
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)Noveo
 
Yii: миграции и инсталляции
Yii: миграции и инсталляцииYii: миграции и инсталляции
Yii: миграции и инсталляцииPaul Klimov
 
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюИнтуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюГлеб Тарасов
 
Разработка расширяемых приложений на Django
Разработка расширяемых приложений на DjangoРазработка расширяемых приложений на Django
Разработка расширяемых приложений на DjangoMoscowDjango
 
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеAlexander Byndyu
 
Symfony2. На чем можно сэкономить время при разработке?
Symfony2. На чем можно сэкономить время при разработке?Symfony2. На чем можно сэкономить время при разработке?
Symfony2. На чем можно сэкономить время при разработке?Stepan Tanasiychuk
 
PHP Tricks
PHP TricksPHP Tricks
PHP TricksBlackFan
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf Conference
 
Использование юнит-тестов для повышения качества разработки
Использование юнит-тестов для повышения качества разработкиИспользование юнит-тестов для повышения качества разработки
Использование юнит-тестов для повышения качества разработкиvictor-yastrebov
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...JSib
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
 

Similar to Top 10 problems supporting Magento customers (20)

Dependency injection, phemto
Dependency injection, phemtoDependency injection, phemto
Dependency injection, phemto
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NET
 
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...
 
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
 
MODX 3: Что нового?
MODX 3: Что нового?MODX 3: Что нового?
MODX 3: Что нового?
 
Страх и ненависть в исходном коде
Страх и ненависть в исходном кодеСтрах и ненависть в исходном коде
Страх и ненависть в исходном коде
 
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловWebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
 
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)
 
Yii: миграции и инсталляции
Yii: миграции и инсталляцииYii: миграции и инсталляции
Yii: миграции и инсталляции
 
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетьюИнтуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
Интуит. Разработка приложений для iOS. Лекция 7. Работа с сетью
 
Разработка расширяемых приложений на Django
Разработка расширяемых приложений на DjangoРазработка расширяемых приложений на Django
Разработка расширяемых приложений на Django
 
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеASP.NET MVC - как построить по-настоящему гибкое веб-приложение
ASP.NET MVC - как построить по-настоящему гибкое веб-приложение
 
Symfony2. На чем можно сэкономить время при разработке?
Symfony2. На чем можно сэкономить время при разработке?Symfony2. На чем можно сэкономить время при разработке?
Symfony2. На чем можно сэкономить время при разработке?
 
PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and Doctrine
 
Использование юнит-тестов для повышения качества разработки
Использование юнит-тестов для повышения качества разработкиИспользование юнит-тестов для повышения качества разработки
Использование юнит-тестов для повышения качества разработки
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
Render API.
Render API.Render API.
Render API.
 

More from aheadWorks

Moving from Projects to Products: How Newcomers Can Do as Good as Veterans of...
Moving from Projects to Products: How Newcomers Can Do as Good as Veterans of...Moving from Projects to Products: How Newcomers Can Do as Good as Veterans of...
Moving from Projects to Products: How Newcomers Can Do as Good as Veterans of...aheadWorks
 
Guiding rules for choosing a reliable Magento development partner
Guiding rules for choosing a reliable Magento development partnerGuiding rules for choosing a reliable Magento development partner
Guiding rules for choosing a reliable Magento development partneraheadWorks
 
Пять кейсов из практики aheadWorks с прологом и эпилогом
Пять кейсов из практики aheadWorks с прологом и эпилогомПять кейсов из практики aheadWorks с прологом и эпилогом
Пять кейсов из практики aheadWorks с прологом и эпилогомaheadWorks
 
Writing extensions for Xcommerce
Writing extensions for XcommerceWriting extensions for Xcommerce
Writing extensions for XcommerceaheadWorks
 
Developing trusted Magento extension
Developing trusted Magento extension Developing trusted Magento extension
Developing trusted Magento extension aheadWorks
 
Magento integration
Magento integrationMagento integration
Magento integrationaheadWorks
 
Magento Meetup Belarus 2012 opening
Magento Meetup Belarus 2012 opening Magento Meetup Belarus 2012 opening
Magento Meetup Belarus 2012 opening aheadWorks
 
How to survive on Magento platform
How to survive on Magento platformHow to survive on Magento platform
How to survive on Magento platformaheadWorks
 
Magento code debugging
Magento code debuggingMagento code debugging
Magento code debuggingaheadWorks
 
Magento Test Automation Framework
Magento Test Automation FrameworkMagento Test Automation Framework
Magento Test Automation FrameworkaheadWorks
 
Magento performance
Magento performanceMagento performance
Magento performanceaheadWorks
 
How to Use Email Marketing More Effectively
How to Use Email Marketing More EffectivelyHow to Use Email Marketing More Effectively
How to Use Email Marketing More EffectivelyaheadWorks
 
Феномен IT-менеджера
Феномен IT-менеджераФеномен IT-менеджера
Феномен IT-менеджераaheadWorks
 
Email marketing для IT-стартапов
Email marketing для IT-стартаповEmail marketing для IT-стартапов
Email marketing для IT-стартаповaheadWorks
 
Первые шаги бизнеса
Первые шаги бизнесаПервые шаги бизнеса
Первые шаги бизнесаaheadWorks
 
Заставьте их покупать!
Заставьте их покупать!Заставьте их покупать!
Заставьте их покупать!aheadWorks
 

More from aheadWorks (16)

Moving from Projects to Products: How Newcomers Can Do as Good as Veterans of...
Moving from Projects to Products: How Newcomers Can Do as Good as Veterans of...Moving from Projects to Products: How Newcomers Can Do as Good as Veterans of...
Moving from Projects to Products: How Newcomers Can Do as Good as Veterans of...
 
Guiding rules for choosing a reliable Magento development partner
Guiding rules for choosing a reliable Magento development partnerGuiding rules for choosing a reliable Magento development partner
Guiding rules for choosing a reliable Magento development partner
 
Пять кейсов из практики aheadWorks с прологом и эпилогом
Пять кейсов из практики aheadWorks с прологом и эпилогомПять кейсов из практики aheadWorks с прологом и эпилогом
Пять кейсов из практики aheadWorks с прологом и эпилогом
 
Writing extensions for Xcommerce
Writing extensions for XcommerceWriting extensions for Xcommerce
Writing extensions for Xcommerce
 
Developing trusted Magento extension
Developing trusted Magento extension Developing trusted Magento extension
Developing trusted Magento extension
 
Magento integration
Magento integrationMagento integration
Magento integration
 
Magento Meetup Belarus 2012 opening
Magento Meetup Belarus 2012 opening Magento Meetup Belarus 2012 opening
Magento Meetup Belarus 2012 opening
 
How to survive on Magento platform
How to survive on Magento platformHow to survive on Magento platform
How to survive on Magento platform
 
Magento code debugging
Magento code debuggingMagento code debugging
Magento code debugging
 
Magento Test Automation Framework
Magento Test Automation FrameworkMagento Test Automation Framework
Magento Test Automation Framework
 
Magento performance
Magento performanceMagento performance
Magento performance
 
How to Use Email Marketing More Effectively
How to Use Email Marketing More EffectivelyHow to Use Email Marketing More Effectively
How to Use Email Marketing More Effectively
 
Феномен IT-менеджера
Феномен IT-менеджераФеномен IT-менеджера
Феномен IT-менеджера
 
Email marketing для IT-стартапов
Email marketing для IT-стартаповEmail marketing для IT-стартапов
Email marketing для IT-стартапов
 
Первые шаги бизнеса
Первые шаги бизнесаПервые шаги бизнеса
Первые шаги бизнеса
 
Заставьте их покупать!
Заставьте их покупать!Заставьте их покупать!
Заставьте их покупать!
 

Top 10 problems supporting Magento customers

  • 1. Топ-10 проблем в магазине вашего клиента с которыми вы обязательно столкнётесь Вячеслав Костюкович aheadWorks.com
  • 2. Код в целом ведет себя крайне странно, однако не похоже, чтобы на сторе были установлены какие-либо сторонние расширения.
  • 3. diff -qrbB coreReferenceFolder coreCientFolder -q Report only when files differ -r Recursively compare any subdirectories found -b Ignore white spaces -B Ignore blank lines
  • 4. Предположим, что у нас есть экст, который должен аяксом обновлять боковую корзину при добавлении продукта из категории. При нажатии на кнопку “add to cart” ajax-запрос вместо результатов возвращает ошибку вида: unknown function showName
  • 5. header.phtml: 1. <? /** 2. * @var Mage_Page_Block_Html_Header $this 3. */ ?> 4. <?php 5. function showName($name) 6. { 7. echo '<strong><span>'.$name.'</span></strong>'; 8. } 9. ?> 10. <div class="header-container"> 11. <div class="header"> ... sidebar.phtml: 1. <?php /** 2. * Shoping cart sidebar 3. * @see Mage_Checkout_Block_Cart_Sidebar 4. */ ?> 5. 6. <?php if ($this->getIsNeedToDisplaySideBar()):?> 7.<div class="block block-cart"> 8. <?php $_cartQty = $this->getSummaryCount() ?> 9. <div class="block-title"> 10. <?php showName($this->__('My Cart')); ?> 11. </div> ...
  • 6. fixed sidebar.phtml: 1. <?php /** 2. * Shoping cart sidebar 3. * @see Mage_Checkout_Block_Cart_Sidebar 4. */ ?> 5. <?php 6. if (!function_exists('showName')) { 7. function showName($name) { 8. echo '<strong><span>'.$name.'</span></strong>'; 9. } 10. } 11. ?> 12. <?php if ($this->getIsNeedToDisplaySideBar()):?> 13. <div class="block block-cart"> 14. <?php $_cartQty = $this->getSummaryCount() ?> 15. <div class="block-title"> 16. <?php showName($this->__('My Cart')); ?> 17. </div> ...
  • 7. ERR (3): Warning: include(): Failed opening '/home/vhosts/Magento/app/design/frontend/ default/default/template/ajaxcartpro/init.phtml' for inclusion (include_path= '/home/vhosts/Magento/app/code/local: /home/vhosts/Magento/app/code/community: /home/vhosts/Magento/app/code/core: /home/vhosts/Magento/lib: /usr/share/php: /usr/share/pear') in /home/vhosts/Magento/app/code/core/Mage/Core/Block/ Template.php on line 241
  • 9. Установил расширение, все настроил, но все равно не вижу его на фронтэнде, только в админке.
  • 11.
  • 12. public function __construct() { ini_set('memory_limit', '1024M'); ... }
  • 14. 1. const L_CACHE = 'aw_hdu_lock'; 2. const L_TIMEOUT = 300; 3. 4. public function runJobs() { 5. if (self::checkLock()) { 6. $this->processJobs(); 7. Mage::app()->removeCache(self::L_CACHE); 8. } 9. } 10. 11. public static function checkLock() { 12. $_lastExecutionTime = Mage::app()->loadCache(self::L_CACHE); 13. if (self::L_TIMEOUT > (time() - $_lastExecutionTime)) { 14. return false; 15. } 16. Mage::app()->saveCache(time(),self::L_CACHE,array(),self::L_TIMEOUT); 17. return true; 18. }
  • 15. Валидный код, вместо того, чтобы выполняться, возвращает ошибки.
  • 16. 1. abstract class AWAS_Model_Indexer_Abstract 2. { 3. public function getIndexTableModel() { 4. return new AWAS_Model_Zend_Db_Table(array( 5. Zend_Db_Table_Abstract::PRIMARY => static::PRIMARY 6. )); 7. } 8. } 9. class AWAS_Model_Indexer_Catalog extends AWAS_Model_Indexer_Abstract 10. { 11. const PRIMARY = 'entity_id'; 12. 13. protected function _fillData() { 14. $table = $this->getIndexTableModel(); 15. } 16. }
  • 17. 1. abstract class AWAS_Model_Indexer_Abstract 2. { 3. abstract protected function _getPrimary(); 4. public function getIndexTableModel() { 5. return new AWAS_Model_Zend_Db_Table(array( 6. Zend_Db_Table_Abstract::PRIMARY => $this->_getPrimary() 7. )); 8. } 9. } 10. class AWAS_Model_Indexer_Catalog extends AWAS_Model_Indexer_Abstract 11. { 12. const PRIMARY = 'entity_id'; 13. protected function _fillData() { 14. $table = $this->getIndexTableModel(); 15. } 16. protected function _getPrimary(){ 17. return self::PRIMARY; 18. } 19. }
  • 18. После установки расширения не могу войти в админку.
  • 19. По SSH Зайт и на сервер в папк у <Magento_store>/shell/ и выполнит ь следующие к оманды: php -f compiler.php clear php -f compiler.php disable По FTP Соз дат ь в к орневом к ат алог е Magento php файл следующ о содержания и з апуст ит ь : ег <?php echo exec('php -f shell/compiler.php clear'); echo exec('php -f shell/compiler.php disable'); ?>
  • 20. Вы, в рамках какой-либо задачи, кастомизировали клиенту стор, добавили функционал, изменили шаблоны и стили темы, а спустя пару недель клиент возвращается и жалуется на то, что все ваши изменения перестали работать.
  • 22. Клиент поставил перед вами задачу, но не предоставляет необходимый доступ.