◄Советы► Magento

Статус
В этой теме нельзя размещать новые ответы.

donvictorio

Хранитель порядка
Регистрация
28 Янв 2010
Сообщения
872
Реакции
849
Тема предназначена для советов, полезных рекомендаций по настройке CMS Magento.

Прежде чем написать в этой или любой-другой теме, ОБЯЗАТЕЛЬНО прочите правила раздела: Для просмотра ссылки Войди или Зарегистрируйся (незнание правил, не освобождает от ответственности и наказания!)

Если вы не нашли ответ на свой вопрос, то тогда вам нужно заглянуть в одну из этих тем:

Для просмотра ссылки Войди или Зарегистрируйся

Для просмотра ссылки Войди или Зарегистрируйся

Для просмотра ссылки Войди или Зарегистрируйся

Для просмотра ссылки Войди или Зарегистрируйся

Для просмотра ссылки Войди или Зарегистрируйся

Для просмотра ссылки Войди или Зарегистрируйся

Для просмотра ссылки Войди или Зарегистрируйся

В этой теме разрешено давать только полезные советы или выкладывать полезные материалы, любые вопросы (если таковые есть пишите в "Для просмотра ссылки Войди или Зарегистрируйся" или в ЛС) или ответы не по теме будут пресекаться и жестоко наказываться, потому лучше не провоцируйте.

Каждое сообщение должно формироваться лаконично и понятно. Если много текста прячьте его под "Спойлер", если используете код берите его в "Код". Подобно тому как показано в примере внизу:
Для просмотра ссылки Войди или Зарегистрируйся
__________________________________________________________________________________________________________________________________________________
404 при входе в админку magento после переноса магазина на другой сервер
Иногда, после переноса магазина Magento на другой хостинг или миграции с сервера на сервер (или в целом при миграции с одного инстанса БД на другой) при входе в админку выдаёт 404 ошибку. Вывод делает сам скрипт, не вебсервер. Причина в том, что при импорте базы для админа меняются значения store_id и website_id. Они должны иметь значение 0.
Для того, чтобы исправить ситуацию, нужно в консоли БД (в phpmyadmin или ином mysql клиенте) выполнить запрос:

Код:
SET FOREIGN_KEY_CHECKS=0;
UPDATE `core_store` SET store_id = 0 WHERE code='admin';
UPDATE `core_store_group` SET group_id = 0 WHERE name='Default';
UPDATE `core_website` SET website_id = 0 WHERE code='admin';
UPDATE `customer_group` SET customer_group_id = 0 WHERE customer_group_code='NOT LOGGED IN';
SET FOREIGN_KEY_CHECKS=1;

после чего проблема исчезнет.
 
Последнее редактирование модератором:
Так же нашел список классов Magento
Для просмотра ссылки Войди или Зарегистрируйся
Еще бы найти список классов с разъяснением, какой класс что делает.

Еще про классы валидации
Валидация форм, текста, ссылок в Magento 18.02.2013
Помимо присвоения имен классов форме, в Magento есть javascript для валидации, расположенный после формы. Для работы нужно передать id формы объекту VarienForm. Построение формы таким образом автоматически делает вашу форму доступной для повторного использования уже существующего кода валидации, который используется в остальной части магазина. Ниже приведен полный список классов валидации и сообщений об ошибках, который находится в lib.
Скрытое содержимое доступно для зарегистрированных пользователей!


И еще Список глобальных переменных Mage:register
Скрытое содержимое доступно для зарегистрированных пользователей!


Продолжение
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Последнее редактирование модератором:
После взлома нескольких моих сайтов, я наконец понял, что патчи безопасности не стоит игнорировать. Взлом происходит методом создания пользователя с правами администратора. Также, на сервере обнаружил парочку левых файлов. Если Вы не устанавливали патчи SUPEE-1533 и SUPEE-5344 - рекомендую проверить своих пользователей (возможно есть лишние).
Не всегда есть доступ к shh и намного проще через ftp. Уже пролеченные файлы по патчам указанных выше - Для просмотра ссылки Войди или Зарегистрируйся
Есть лучший способ установки патчей, не требующий "пролеченных" файлов и SSH доступа:
1. Создаем в корневой директории Magento файл patch.php с кодом
Код:
<?php
    print("<PRE>");
    passthru("/bin/bash PATCH_SUPEE-5344.sh");
    print("</PRE>");
    echo "Done";
?>
2. Скачиваем с нужный патч, и помещаем его в корневую папку c Magento
3. Переименовываем его по типу как в коде файла patch.php
4. Запускаем скрипт
5. Так для всех патчей
рецепт взят отсюда
 
Последнее редактирование:
Для отладки layout-ов (просмотра собранной структуры xml)

Чтобы вывести отладочную информацию о странице используйте, один из параметров:
?showLayout=handles
?showLayout=page
?showLayout=package
Например: site.com/contacts/?showLayout=page
7fee73bf5ab3.png
 
Последнее редактирование:
Проверить и пофиксить модули не совместимые с заплаткой SUPEE-6788 и новыми версиями Magento поможет скрипт от ParadoxLabs (инструкция в архиве)
А так же актуальные заплатки на текущий момент. (Версии Magento и патчи для них смотрим тут: Для просмотра ссылки Войди или Зарегистрируйся)
 

Вложения

  • current-patches.zip
    1,1 MB · Просмотры: 8
  • ParadoxLabs.zip
    10,1 KB · Просмотры: 19
Небольшой патч улучшающий производительность Magento после применения заплатки SUPEE-6788.
Код:
patch -p0 -f < performance.patch
 

Вложения

  • performance.zip
    1 KB · Просмотры: 22
Список модулей, которые еще не работают с новым патчем можно посмотреть в таблице. Пока только в 16% модулей внесены исправления для решения проблемы несовместимости с admin url и SQL injection:

Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование модератором:
Hey guys, I wanted to point out something that recently helped me. For a very long time I lived in China where google is blocked. There is only one normal analytic solution for magento, and that is google. But google was not an option for me. However I stumbled upon Piwik analytics which runs on your own server. Plus it has a great magento module with iframe reports. This is the perfect solution for all the people that live in countries with no access to google.

Для просмотра ссылки Войди или Зарегистрируйся

Для просмотра ссылки Войди или Зарегистрируйся

I would like to inform everyone of a great free CDN service. And they include a free Magento Module.

Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование модератором:
Моя история началась вчера, нужно было просто включить платёжный модуль Paypal в Magento CE 1.9.2.1 и это оказался сеанс красноглазая на пол ночи.

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



Всё гениальное просто, в модуле PayPal нет рублей, поэтому он не отображается в корзине!

После того как вы это поймете решение гуглится за 5 минут
Для просмотра ссылки Войди или Зарегистрируйся

Всё просто, в файле app/code/core/Mage/Paypal/Model/Config.php
Нужно на 229 строке в функцию protected $_supportedCurrencyCodes добавить 'RUB'
получится так:
PHP:
    /**
     * Currency codes supported by PayPal methods
     *
     * @var array
     */
    protected $_supportedCurrencyCodes = array('AUD', 'CAD', 'CZK', 'DKK', 'EUR', 'HKD', 'HUF', 'ILS', 'JPY', 'MXN',
        'NOK', 'NZD', 'PLN', 'GBP', 'RUB', 'SGD', 'SEK', 'CHF', 'USD', 'TWD', 'THB');

Дальше есть эстетический косяк с надписью и ссылкой рядом с кнопкой Paypal "What is PayPal?"
Во первых: надпись уродская, во вторых: ссылка (для россии) битая и ведет на страницу 404 paypal.com

Решения два первое поправить ссылку, второе удалить надпись.

Править ссылку нужно в том же файле на 812 строке app/code/core/Mage/Paypal/Model/Config.php
код выглядит так:
PHP:
    public function getPaymentMarkWhatIsPaypalUrl(Mage_Core_Model_Locale $locale = null)
    {
        $countryCode = 'US';
        if (null !== $locale) {
            $shouldEmulate = (null !== $this->_storeId) && (Mage::app()->getStore()->getId() != $this->_storeId);
            if ($shouldEmulate) {
                $locale->emulate($this->_storeId);
            }
            $countryCode = $locale->getLocale()->getRegion();
            if ($shouldEmulate) {
                $locale->revert();
            }
        }
        return sprintf('https://www.paypal.com/%s/cgi-bin/webscr?cmd=xpt/Marketing/popup/OLCWhatIsPayPal-outside',
            strtolower($countryCode)
        );
    }

Удалять надпись нужно в другом файле app/design/frontend/base/default/template/paypal/payment/mark.phtml
строки с 35 по 37

я просто закоментировал так
HTML:
<!-- <a href="<?php echo $this->getPaymentAcceptanceMarkHref()?>" onclick="javascript:window.open('<?php echo $this->getPaymentAcceptanceMarkHref()?>','olcwhatispaypal','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, ,left=0, top=0, width=400, height=350'); return false;">
    <?php if($this->getPaymentWhatIs()) {echo Mage::helper('paypal')->__($this->getPaymentWhatIs());} else {echo Mage::helper('paypal')->__('What is PayPal?');} ?>
</a> -->
Или можно просто удалить


P.S. Работоспособность я ещё не смог проверить у владельца аккаунт на проверке, но кнопка в корзине появилась и при попытке оформить заказ пишет "paypal отклонил запрос"


Надеюсь пост будет полезен
 
Последнее редактирование:
Зачастую люди очень удивляются тому, что "хлебные крошки" при переходе, например из поисковой системы, или с главной страницы выводятся без "лесенки" категорий. Это вполне нормально, учитывая как мажента их строит, но все равно зачастую полезнее выводить полный путь категорий до товара. Для того, чтобы поправить это дело есть полезный бесплатный модуль от Magefast, см. аттач или Для просмотра ссылки Войди или Зарегистрируйся на magento connect.
 

Вложения

  • Magefast Breadcrumbs.zip
    10,8 KB · Просмотры: 12
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху