воскресенье, 28 ноября 2010 г.

Баг корзины

И снова здравствуйте!

В данный момент я разрабатываю платежный модуль для работы с Украинским Процессинговым Центром. Работа модуля предусматривает перенаправление покупателя на страницу процессингового центра, где он вводит информацию о кредитной карте - номер, срок действия и т.д.

Схема работы предусматривает оповещение магазина в случае неудачной
транзакции. При чем кодов ошибок достаточно много. Я не знаю, как вам, но мне эта информация кажется полезной и ее хотелось бы сохранять. Вроде бы все сделал и код ошибки приходи и все хорошо, но... При возврате с ошибкой платежа, магазин по умолчанию очищает корзину. Т.е. покупатель возвращается, а у него заказ имеет статус "Pending" и корзина, естественно пуста. Такой вариант нам не подходит, потому как следующий платеж покупатель может сделать только лишь перезаказав товар.

После перелопачивания форума мадженты я нашел вот это http://www.magentocommerce.com/boards/viewthread/199053/  и соответсвующий багрепорт. Эта проблема не была исправлена ни в 1.4.0.1, ни в 1.4.1.1.

По ссылке даны рекомендации, как можно локально на конкретном магазине проправить Core файлы. Но будьте готовы, что при обновлении это слетит. И дай бог, чтобы в следующем релизе это пофиксили.

Я для себя принял решение все-таки подменить Core файлы (хоть это и некошерно) и помнить об этой особенности.

З.Ы. Модуль почти готов, осталось "причесать" внешний вид. Так что кому интересно - велкам.

вторник, 16 ноября 2010 г.

ту CMS ор нот ту CMS

И снова всем привет!

Я рад, что Вы читаете мой блог и говорю честное спасибо Вам за время, которое Вы потратили и внимание, которое Вы уделили. Надеюсь та малая часть, которая здесь есть хоть немного Вам оказалась полезной. Заходите почаще - мне есть чем поделится относительно Мадженто.

Ну а сегодня о CMS в Magento Community Edition и о том, как размножаются кролики.

Базовый функционал CMS в Magento CE оставляет желать лучшего. Это факт.

Даже за деньги расширенный Content Management System предлагается только в Enterptise Edition... Посмотрим, что же мы получим за много килодолларов в год:

  • Мультисайтовость - возможность задавать отображение для сайта, стора и т.д.
  • Версионирование - сохраняются все версии контента.
  • Сруктура! Структура - это на мой взгляд самая нужная фича.  
Судя по рекламе - это действительно стоящая штука. Но в Энтерпрайзе мы получаем много других вкусностей. Как например расширенные правила для потребителей. Не думаю, что кто-то ради расширенного функционала CMS готов оплачивать 8900 долларов в год.

Что же делать?

Как вариант можно подключить к мадженте другую CMS (Drupal/Joomla)... Но это, скорее всего, будет избыточно. Да и кому нужно на сайте две системы? Ведь даже изображения будут хранится в разных каталогах. А о совместимости JavaScript на страницах я вообще молчу. 

Я для себя и своих нужд решил написать модуль, который предоставит необходимый мне функционал. И почему-то мне кажется, что этот функционал будет полезен не только мне.

Сейчас я веду работу и практически готов к выпуску модуль контента со следующими функциями:
  • Сруктуризация контента по разделам. Пока для первого релиза предполагается использовать только один уровень вложенности.
  • Возможность задавать дизайн и обновления лэйаутов для раздела с наследованием для материалов раздела. Без возможности указания дизайна и лэйаутов для материала. 
  • Ссылки на контент вида http://example.com/[articles]/[section]/[material]
  • Вид модуля отображает перечень раздела с описаниями. Отображение описания задается в параметрах раздела.
  • Вид раздела по-умолчанию отображает заголовок, описание раздела (с возможностью задать отображение для каждого раздела), и перечень материалов с вводным текстом. Можно задать отображение вводного текста как для раздела целиком, так и для каждого материала отдельно, при этом установки раздела наследуются. Т.е. если в разделе указано "не отображать вводный текст материалов", то вводный текст не будет отображен вне зависимости от установок материала.
  • Вид материала отображает вводный текст (отображение тоже задается в параметрах, только материала) и, собственно, сам текст материала.
В данный момент модуль с таким функционалом практически готов. Еще пара-тройка дней и можно будет искать на Magento Connect'е.

Понимаю, что нужно подогреть интерес к модулю в будущем. Потому небольшой TO-DO:
  • Древовидная структура разделов!
  • Права доступа на основе Customer Goups.
  • Права доступа (просмотра), применимые к разделу, с наследованием.
  • Права доступа индивидуально к материалу.
  • Widgets для получения ссылок на раздел/страницу.
  • Pagination для разделов/материалов с возможностью конфигурирования.
Есть еще несколько задумок... Но я пока не определился с соотношением цель/средства. Потому пока не добавляю.

P.S. а ведь правда интересна ссылка типа "Для просмотра полного текста необходимо зарегистрироваться"?

P.P.S. "А где же о том, как размножаются кролики?" - спросите Вы. А я не знаю, как они размножаются. Да мне это и не интересно. Не отвлекайтесь на то, на что Вас отвлекают, и что Вам в принципе не есть необходимым ;)

вторник, 21 сентября 2010 г.

Изображения товара... Чудо враждебной техники!

А хотите – я его стукну – и он станет фиолетовым в крапинку.
Из мультфильма "Тайна третьей планеты"


В прошлый раз я писал о том, что при ресайзе изображений товара для страницы категории (размер картинки - 135х135 пикселей) появляются белые пятна. Как оказалось впоследствии - это не пятна, точнее пятна, но не белые, а... прозрачные. Фон страницы и изображения у меня белый, потому пятна становятся белыми.

Методом исследования кода было обнаружено, что обработчики изображений (/lib/Varien/...) при апгрейде не изменились... При чем такая беда наблюдается не на всех размерах ресайза (например на странице товара в админке - все Ок). Также определено, что такое наблюдается на разных версиях GD2 и PHP5. Гугление по буржуйскому форуму мадженты тоже ничего толкового не дало - не используйте 24 bit PNG и т.д. что, в общем-то, неконструктивно.

Методом научного тыка было обнаружено, что в обрабатываемых изображениях отсутствовал альфа-канал...

Простыми манипуляциями над изображением в Gimp'е был добавлен альфа-канал и... О, чудо! Как говорил великий знаток бутербродов из Простоквашино - "Урра, заработала!"

Картинки ресайзятся в нужном виде... Скорее всего это просто совпало - обновление движка и появление на сайте PNG'шек. %)

Вроде все и как надо, но какой-то осадок остался - раньше тоже ведь были PNG'шки. И вроде как нормально было. Или я что-то забыл. Пока буду наблюдать - товара еще много надо добавить, потому есть поле для проведения научной эсперименты.

пятница, 10 сентября 2010 г.

Изображения товара... за что их так?

После обновления до версии 1.4.1.1 вылезла проблема с изображениями товаров.

На изображениях в PNG при ресайзе (на страничках категории) появляются белые пятна... вместо плотной черной заливки! %) Пока не разобрался что за беда. GIF'ы кушает нормально. PHP - 5.3.

Ищу проблему...

четверг, 9 сентября 2010 г.

Валюта в magento

Вот следующая проблема, которая вылезла после обновления. Для отображения цены в гривнах используется международный знак гривны - значок "₴".
Нашему пользователю и так не всегда "видно" в какой валюте цена, а тут еще и непонятный знак... Спросили бы у меня месяца 4 назад, что это за знак - я бы не ответил.

Потому "грн" как-то привычнее, да и в магазинах мы видим цену в "грн", а не в "₴".

Ранее я делал так, как описано здесь, но с точки зрения мадженто это некошерно, потому как при обновлении все изменения в core файлах "слетят", что у меня вполне успешно и произошло. Поетому был написан модуль (хотя по размеру модулем назвать его тяжело) для единственной цели - перехватывать событие форматирования валюты и подставлять свои значения.

Ну вот собственно и сам модуль:



/app/code/local/SM/Currency/etc/config.xml
<?xml version="1.0"?>

  
    
      1.0.0
    
  
  
    
      
        
          SM_Currency_Model_Store
        
      
    
  


/app/code/local/SM/Currency/Model/Store.php
<?php
class SM_Currency_Model_Store extends Mage_Core_Model_Store {

  public function formatPrice($price, $includeContainer = true) {

    $currency = $this->getCurrentCurrency();

    if($currency) {
      if ($currency->getCode() == 'UAH') {
        return $currency->format($price, array('precision' => 0, 'symbol' => 'грн'), $includeContainer);
      }
      else {
        return $currency->format($price, array('precision' => 0), $includeContainer);
      }
    }

    return $price;
  }
}

среда, 8 сентября 2010 г.

Куда катится мир...

Кстати, подано очень прикольно и вроде бы ничего нереализуемого нету... Да о чем я... смотрим -  http://www.youtube.com/watch?v=g7_mOdi3O5E

Обновление magento 1.4.0.1 до версии 1.4.1.1

Вот решил обновить движок.
Посредством Magento Connect Manager'а не решился и решил сделать через консоль.Сосбтвенно мой порядок действий (далее все пути от коря установки magento):
  1. Для начала - пути отступления. Делаю бекап базы данных с помощью mysqldump'а.
  2. Сохраняю полностью весь каталог, куда установлен magento, в архив.
  3. В корне установки есть файл pear. Вот его и запускаю:

    ./pear install magento-core/Mage_All_Latest

  4. После этого обновляю все установленные модули:

    ./pear upgrade-all

  5. Удаляю каталог ./var/cache
  6. Voila!

После обновления захожу на главную страницу и тут же наблюдаю, что ранее переведенная фраза "Sign Up for Our Newsletter:" снова отображается на английском. К слову, русскую локализацию я брал не из Magento Connect (из-за неполноты и кривизны перевода), а отсюда. Это потому, что в модуле Mage_Newsletter разработчики изменили регистр символов.
Было: Sign up for our newsletter, ну а стало, что стало... Меняю ./app/locale/ru_RU/Mage_Newsletter.csv

Но вот что дальше делать... На странице пользователя появились две новые закладки "Billing Agreements" и "Recurring Profiles". Более-менее внятного описания, что это есть на самом деле я нигде не нашел... А перевод данных фраз можно произвести только лишь в контексте...

Вот что это такое и для чего это нужно?

    Свершилось!

    Собственно %SUBJ%!
    Решил-таки завести свой блог.  Так сказать "с блекджеком и шлюхами" (с).

    Основная идея блога - мой опыт знакомства, затачивания и использования Magento Community Edition. Ну а дальше - посмотрим.