• На чем написан OWOX? Стоит его выбрать как движок для интернет-магазина?

    Многие крупные и известные магазины работают на Magento Commerce.
    В отличие от OWOX, вокруг технологии Magento cформировалась экосистема из специалистов, готовых программных продуктов (расширений, интеграций, оформительских тем), накопленной базы знаний (руководства, тематические блоги, форумы, учебные курсы).
    Среди российских интернет-магазинов на Magento работают Ашан, Lamoda, Philips, Huawei и другие (ссылка выше ведёт на составленную мной подборку).
    Имеется российская редакция Magento, её используют свыше 250 магазинов в России и СНГ.

    Когда «бюджет в плане единовременных вложений особо не важен», рекомендую посмотреть также такие системы как:
    • IBM Webspere Commerece
    • Oracle Commerce
    • Demandware

    Эти платформы обслуживают самых крупных клиентов.
    При этом они обладают недостатками OWOX: закрытость технологии, слабая экосистема (мало специалистов, готовых программных решений, базы знаний).
    Также они весьма недёшевы.
    Ответ написан
    Комментировать
  • Не работает переиндексация в Magento программным методом. Через веб все отлично. Что это может быть?

    Одной из причин неправильной работы в Magento программной перестройки расчётных таблиц (переиндексации) является выполнение этой операции вне контекста административной части магазина.
    Все программные операции, связанные с изменением товаров, надо выполнять только в контексте административной части магазина.

    В Российской сборке Magento для включения/выключения административного режима имеются методы Df_Admin_Model_Mode::begin() и Df_Admin_Model_Mode::end() и их краткие аналоги: функции rm_admin_begin() и rm_admin_end().

    Метод Df_Admin_Model_Mode::begin(), в частности, реализован так:
    /** @return void */
    public function begin() {
        $this->_counter++;
        if (1 === $this->_counter) {
            $this->_currentStore = Mage::app()->getStore();
            $this->_updateMode = Mage::app()->getUpdateMode();
            /**
             * Очень важный момент!
             * Если Magento находится в режиме обновления,
             * то Mage_Core_Model_App::getStore()
             * всегда будет возвращать Mage_Core_Model_App::getDefaultStore(),
             * даже для такого кода: Mage_Core_Model_App::getStore(999).
             * Это приводит к весьма некорректному поведению системы в некоторых ситуациях,
             * когда мы обновляем товарные разделы своим установочным скриптом:
             * @see Mage_Catalog_Model_Resource_Abstract::_saveAttributeValue():
             * $storeId = (int)Mage::app()->getStore($object->getStoreId())->getId();
             * Этот код заведомо вернёт неправильный результат!
             */
            Mage::app()->setUpdateMode(false);
            Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
        }
    }


    Метод Df_Admin_Model_Mode::end():
    /** @return void */
    public function end() {
        df_assert_gt0($this->_counter);
        $this->_counter--;
        if (0 === $this->_counter) {
            Mage::app()->setCurrentStore($this->_currentStore);
            Mage::app()->setUpdateMode($this->_updateMode);
            unset($this->_currentStore);
            unset($this->_updateMode);
        }
    }
    Ответ написан
  • По каким критериям Magento может выставить для простых товаров, составляющих настраиваемый, статус Disabled?

    Единственной причиной автоматического перевода ядром Magento простого товара (в том числе и простого варианта настраиваемого товара) в состояние «не продавать» (после чего товар снимается с витрины интернет-магазина) является наличие данного товара на складе интернет-магазина в количестве, меньшем заданного административной опцией
    «Система» → «Настройки» → «Каталог» → «Наличие» → «Стандартные значения других параметров наличия товара» → «Минимальное количество единиц конкретного товара на складе, по достижению которого товар считается отсутствующим в наличии».
    По умолчанию значением этой опции является «0», то есть, Magento по умолчанию снимает с продажи товары, закончившиеся на складе.

    Обратите внимание, что указанная выше причина автоматического снятия с продажи товара является необходимой, но не достаточной.
    Окончательное решение (снимать или не снимать с продажи товар) Magento принимает, учитывая значение опций
    • «Система» → «Настройки» → «Каталог» → «Наличие» → «Стандартные значения других параметров наличия товара» → «Разрешать ли заказ отсутствущих на складе магазина товаров?»
    • «Система» → «Настройки» → «Каталог» → «Наличие» → «Параметры наличия товара» → «Выставлять ли на витрину отсутствующие в наличии товары?»

    Названия опций даны в соответствии с русификацией Российской сборки Magento.
    В англоязычной редакции Magento они называются так:
    • «System» → «Configuration» → «Catalog» → «Inventory» → «Product Stock Options» → «Backorders»
    • «System» → «Configuration» → «Catalog» → «Inventory» → «Product Stock Options» → «Qty for Item Status to Become Out of Stock»
    • «System» → «Configuration» → «Catalog» → «Inventory» → «Stock Options» → «Display Out of Stock Products»

    Участки программного кода, ответственные за автоматическое снятие товара с продажи, можно найти по ключевым словам is_salable, isSalable, IsSalable, isAvailable.

    В частности, для простых товаров (настраиваемые варианты настраиваемого товара считаются простыми товарами) автоматическое снятие товара с продажи осуществляет класс Mage_CatalogInventory_Model_Stock_Status: в двух местах: методах assignProduct и addStockStatusToProducts.

    public function assignProduct(Mage_Catalog_Model_Product $product, $stockId = 1, $stockStatus = null)
    {
        if (is_null($stockStatus)) {
            $websiteId = $product->getStore()->getWebsiteId();
            $status = $this->getProductStatus($product->getId(), $websiteId, $stockId);
            $stockStatus = isset($status[$product->getId()]) ? $status[$product->getId()] : null;
        }
    
        $product->setIsSalable($stockStatus);
    
        return $this;
    }


    public function addStockStatusToProducts($productCollection, $websiteId = null, $stockId = null)
    {
        <...>
    	
    	$stockStatuses = $this->_getResource()->getProductStatus($productIds, $websiteId, $stockId);
    	foreach ($stockStatuses as $productId => $status) {
    		if ($product = $productCollection->getItemById($productId)) {
    			$product->setIsSalable($status);
    		}
    	}
    
    	<...>
    
        return $this;
    }
    Ответ написан
    Комментировать
  • Чем вы пользуетесь для локальной разработки под Magento?

    1. Как правило, любое программное обеспечение в среде виртуальной машины работает в разы медленнее, чем в обычной среде основной операционной системы компьютера.

      Отказ от Vagrant и Virtualbox и установка требуемого для разработки программного обеспечения (интерпретатор PHP, веб-сервер, XDebug) напрямую ускорит работу Magento в разы.

    2. Всё перечисленное программное обеспечение (интерпретатор PHP, веб-сервер, XDebug) является свободным и поставляется с открытым исходным кодом, поэтому при отсутствии скомпилированной версии конкретно для Вашей операционной системы его можно скомпилировать самостоятельно.
      Поэтому XDebug доступен во всех средах (операционных системах), которые разработчики используют для разработки интернет-магазинов, в том числе и для Mac OS X 10.9.

    3. Современные версии интерпретатора PHP (5.5.13) работают заметно быстрее, чем используемая Вами устаревшая версия PHP 5.3.2, которая была выпущена 4 года назад, 4 марта 2010 года.

    4. Заметное ускорение работы Magento даёт правильная настройка MySQL, а особенно подсистемы InnoDB, интенсивно используемой Magento,

    5. Помимо программной настройки заметно ускоряет работу MySQL размещение баз данных на отдельном носителе данных.
      В частности, одним из простых способов ускорения Magento на локальном компьютере является покупка быстрого внешнего накопителя данных
      (который можно подключить через обычный интерфейс USB) и использование этого носителя только для баз данных MySQL.

    6. Значительно ускоряет работу Magento использование акселератора PHP.
      Несколько лет назад лучшим решением для Magento был акселератор APC, в настоящее же время акселератор (называется OPCache) уже включён в ядро современных версий PHP.

    7. В обычных условиях промышленной эксплуатации Magento значительно ускоряется посредством включения кэширования данных и режима, который в Magento называется «компиляция» (почти не имеет отношения к общепринятому смыслу слова «компиляция», технология заключается в автоматическом слиянии множества файлов с программным кодом в единый, что на несколько порядкой сокращает количество обращений к файловой системе).

      В условиях разработки от кэширования данных и «компиляции», как правило, приходится отказываться, потому что в этих режимах поведение системы не всегда может соответствовать текущему состоянию программного кода и данных.

    8. В таких условиях значительный (при выключенном кэшировании — до 50%) прирост производительности даёт установка специального расширения для интерпретатора PHP: «Быстрое ядро Magento».

      «Быстрое ядра Magento» реализует низкоуровневые, наиболее ресурсоёмкие и никогда не меняемые прикладным программистом операции Magento на языке С, что ускоряет их на порядок.
      Примером таких операций является работа с XML.
      В дистрибутиве Magento Community Edition 1.9.0.1 содержится 884 файла XML, и большая часть из них будет обрабатываться при каждой загрузке страницы, если кэш отключен, и это будет занимать 30-40% от общего процессорного времени, требуемого для формирования веб-страницы витрины интернет-магазина.
    Ответ написан
    Комментировать
  • Как сделать загрузку товара в magento с помощью отдельного скрипта?

    Непосредственно в Magento Community Edition реализовано 3 сценария, где происходит добавление товаров в базу данных интернет-магазина.

    1) сценарий добавления товара в интернет-магазин вручную администратором:
    Mage_Adminhtml_Catalog_ProductController::saveAction()

    2) сценарий программного удалённого добавления товара в интернет-магазин администратором по протоколам SOAP / XML-RPC:
    версия 1:
    Mage_Catalog_Model_Api2_Product_Rest_Admin_V1::_create()
    версия 2 (по стандарту WS-I): Mage_Catalog_Model_Product_Api_V2::create()
    3) сценарий пакетного импорта товаров в интернет-магазин из файлов CSV / Excel:
    версия 1 (по технологии Magento Dataflow):
    Mage_Catalog_Model_Convert_Adapter_Product::saveRow()
    версия 2 (появилась в ядре Magento позднее как ускоренная альтернатива Magento Dataflow, работает с БД на низком уровне, для первоначального обучения не рекомендую):
    Mage_ImportExport_Model_Import_Entity_Product::_saveProductEntity()


    В Российской сборке Magento (платная, но исходный код полностью открыт), в дополнение к сценариям Magento Community Edition, имеется сценарий импорта товаров из учётных систем «1C: Управление торговлей» и «МойСклад», полностью подходящий под Ваше описание:
    товары будут приходить на сервер в zip архиве, который будет открываться и из него выбираться все нужное - данные и изображения

    импорт простых товаров реализован в методе:
    Df_1C_Model_Cml2_Import_Processor_Product_Type_Simple::process()

    импорт сложных товаров (товаров с настраиваемыми опциями, в разрезе которых ведётся отдельный складской учёт):
    Df_1C_Model_Cml2_Import_Processor_Product_Type_Configurable::process()
    Ответ написан
    Комментировать
  • Насколько прожорлива magento?

    ************************************
    дополнение от 2014-05-19:

    Одним из способов ускорения на 30% любого магазина на Magento является мой второй (после Российской сборки Magento) программный продукт «Быстрое ядро Magento».

    «Быстрое ядро Magento» — это разработанное на языке C расширение PHP (дополнительный «модуль» для интерпретатора PHP), которое замещает несколько самых ресурсоёмких программных участков (функций) Magento посредством идентичной по функциональности , но на порядок более быстрой реализацией их на языке C.

    «Быстрое ядро Magento» совместимо со всеми редакциями Magento: Российской сборкой Magento, Magento Community Edition, Magento Enterprise Edition.

    «Быстрое ядро Magento» — это инструмент, который рекомендуется использовать в комплексе с другими способами ускорения Magento: например, модулями «Полностраничное кэширование» и «Блочное кэширование» Российской сборки Magento.

    ************************************
    1. Для полноценной промышленной эксплуатации интернет-магазина на Magento виртуального сервера с 1 Гб оперативной памяти мало.
      Я клиентам Российской сборки Magento рекомендую и бесплатно настраиваю выделенные (невиртуальные) сервера с 32 гигабайтами оперативной памяти.

    2. Для экслуатации интернет-магазина на Magento веб-сервер Apache избыточен: интернет-магазин будет работать быстрее, если использовать и правильно настроить веб-сервер nginx.
      Функциональности nginx вполне достаточно для Magento.

    3. Когда интернет-магазин работате только на одном физическом сервере, то установка memcached бессмысленна (ведь memcached предназначен для распределённого кэширования данных между несколькими серверами), достаточно использовать и правильно настроить APC.

    4. Для ускорения Magento важно приобрести и настроить модуль полностраничного кэширования.
      Этот модуль отсутствует в бесплатной версии Magento Community Edition, однако присутствует в стандартной комплектации профессиональных редаций Magento: Enterprise Edition и Российской сборке Magento.

    5. Для ускорения Magento важно использовать встроенный компилятор Magento.
      Компилятор объединяет файлы с исходным кодом (а в Magento их тысячи) в несколько (3-5) крупных файлов, что значительно ускоряет работу системы (меньше обращений к файлам, а эти крупные файлы при грамотной настройке сервера будут кэшироваться в виде байткода посредством APC).
    Ответ написан
  • Ищу качественный движок интернет-магазина с возможностью интеграции с 1С

    В Российской сборке Magento есть:
    Ответ написан
    Комментировать
  • Какой интернет-магазин с полной интеграцией 1С вы можете посоветовать?

    Полная интеграция с «1С: Управление торговлей» есть в Российской сборке Magento: magento-forum.ru/forum/217
    Ответ написан
    Комментировать
  • В каких РОССИЙСКИХ интернет магазинах можно расплатиться PayPal?

    PayPal принимает Утконос (utkonos.ru) — крупнейший по обороту российский магазин в сегменте продуктов питания.
    Ответ написан
    Комментировать
  • Какие основные преимущества и недостатки Magento?

    Magento — более гибкая система, лучше масштабируется, обладает изначально большими встроенными возможностями в сравнении с другими популярными системами (Битрикс, OpenCart, PrestaShop, VirtueMart).

    Расширения и шаблоны (оформительские темы) для Magento создавать сложнее, чем для других популярных систем.

    Для развития русскоязычного магазина на Magento свои продукты предлагают три разработчика: Rugento и Mygento и я.

    Rugento и Mygento продают российские модули для англоязычной Magento. Исходный код их модулей закрыт (зашифрованы посредством ionCube), обновление платное.

    Я продаю не модули, а специализированную русскоязычную редакцию Magento (Российская сборка Magento).
    Эта редакция совместима с официальными, на неё можно в любое время обновиться с официальных англоязычных редакций.
    Мой программный продукт поставляется с полностью открытым исходным кодом.
    Что содержит Российская сборка Magento на данный момент?
    Русификация
    Интеграция с 1С: Управление торговлей
    Интеграция с Яндекс.Маркетом

    14 модулей приёма оплаты для России: эквайринг Альфа-Банка, эквайринг банка Авангард, QIWI Кошелёк, ROBOKASSA, Квитанция Сбербанка (ПД-4), WebMoney, ASSIST, Chronopay, RBK Money, Uniteller, Единая касса, Onpay.ru, Монета.Ру (PayAnyWay), PayOnline.
    Модули приёма оплаты для Украины: LiqPay, INTERKASSA.
    Модули приёма оплаты для Беларуси: EasyPay, iPay, WEBPAY.
    Модули приёма оплаты для Казахстана: эквайринг Казкоммерцбанка (epay.kkb.kz).

    10 модулей доставки для России: Почта России, EMS Почта России, СДЭК, СПСР-ЭКСПРЕСС, PONY EXPRESS, Автотрейдинг, Гарантпост, Деловые Линии, МЕГАПОЛИС, ПЭК.

    9 модулей доставки для Украины: Нова Пошта (Новая почта), Укрпошта (Укрпочта), Ночной Экспресс, Ин-Тайм, Автолюкс, Гюнсел, ЕвроЭкспресс Почта, САТ, Деливери.

    Модули доставки для Казахстана: Казпочта, EMS-Kazpost.

    Поисковая оптимизация для Яндекса.

    Адресные справочники для административно-территориального устройства России, Украины, Казахстана.

    Другие русскоязычные модули, не все из которых имеют прямое отношение к русскоязычному рынку, но делают магазин более мощным (полностраничное кэширование, блочное кэширование, маркетинговые модули (личный счёт, накопительная программа, промо-подарки, приглашения), редактор статей и т.п.).
    Ответ написан
    1 комментарий
  • Прием он-лайн платежей из Казахстана. Какие есть варианты?

    В настоящее время интернет-эквайринг в Казахстане возможен через две компании:
    • Казкоммерцбанк (epay.kkb.kz)
    • processing.kz
    Я разработал модуль интернет-эквайринга через Казкоммерцбанк (epay.kkb.kz) для Российской сборки Magento: magento-forum.ru/forum/324.
    Ответ написан
    Комментировать
  • Аналог Робокассы для Казахстана или кто как принимает платежи с пластика?

    В настоящее время интернет-эквайринг в Казахстане возможен через две компании:
    • Казкоммерцбанк (epay.kkb.kz)
    • processing.kz
    Я разработал модуль интернет-эквайринга через Казкоммерцбанк (epay.kkb.kz) для Российской сборки Magento: magento-forum.ru/forum/324.
    Модуль поддерживает предварительное резервирование денежных средств на банковской карте покупателя в момент покупки в вашем интернет-магазине.
    Далее Вы как администратор интернет-магазина, рассмотрев заказ покупателя в админитративном интерфейсе магазина, можете либо снять средства с карты покупателя, либо вернуть покупателю зарезервированные средства.
    Если у кого-то из пользователей Российской сборки Magento будет потребность в подобном модуле для processing.kz - то сделаю такой модуль бесплатно: magento-forum.ru/topic/2771.
    Ответ написан
    Комментировать