◄Советы► 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 я закрываю доступ на продакшене к директориям var, app, downloader, includes, pkginfo. В nginx это выглядит так:
Код:
    location ~ /(app|var|downloader|includes|pkginfo)/ {
       deny all;
       }
После этого естественно перестаёт работать Magento Connect, но для VPS/VDS я рекомендую использовать консольную утилиту mage, это православнее. Вот Для просмотра ссылки Войди или Зарегистрируйся есть хороший обзор по командам mage (английский). Не забывайте, что для того, чтобы скрипт начал работать, ему надо дать права на выполнение.
 
Програмно создать категорию
PHP:
$parentId = '777'; // веше id
$category = Mage::getModel('catalog/category');
$category->setStoreId(Mage::app()->getStore()->getId());
$category->setName("Имя Категории");
$category->setIsActive(1);
$category->setDisplayMode('PRODUCTS');
$category->setIsAnchor(1);
$parentCategory = Mage::getModel('catalog/category')->load($parentId);
$category->setPath($parentCategory->getPath());
$category->save();

проверить если текущая страница домашняя
PHP:
// template/page/html/header.phtml
if($this->getIsHomePage()) {
    echo 'You are in Homepage!';
} else {
    echo 'You are NOT in Homepage!';
}

//другой .phtml или .php class файл:

if(Mage::getBlockSingleton('page/html_header')->getIsHomePage()) {
    echo 'You are in Homepage!';
} else {
    echo 'You are NOT in Homepage!';
}

// другой способ
   
$routeName = Mage::app()->getRequest()->getRouteName();
$identifier = Mage::getSingleton('cms/page')->getIdentifier();
if($routeName == 'cms' && $identifier == 'home') {
    echo 'You are in Homepage!';
} else {
    echo 'You are NOT in Homepage!';
}

общая сумма всех заказов для каждого клиента на настоящий момент
Код:
SELECT DISTINCT customer_email, customer_firstname, customer_lastname,
SUM(subtotal_invoiced) AS Total
FROM `sales_flat_order` AS a
GROUP BY customer_email
ORDER BY SUM(subtotal_invoiced) DESC
 
Последнее редактирование модератором:
Иногда возникает необходимость отправлять посетителей на мобильную версию сайта, если они заходят с телефона. В дистрибутив CE входит тема для мобильников, наывающаяся iphone, но ниженаписанное спокойно подходит для любой другой загруженной или самописной темы:

"Система" - "Общие" - "Дизайн" - "Пакет": если ваша тема стоит в пакете по умолчанию, то так и оставьте. Если же она другая, например, smartwave, как в случае с Porto, то ниже вам нужно нажать "Добавить исключение", и заполнить две строки:

"Подходящее выражение" -
Код:
iPhone|iPod|BlackBerry|Palm|Googlebot-Mobile|Mobile|mobile|mobi|Windows Mobile|Safari Mobile|Android|Opera Mini
"Значение" -
Код:
default
(мы указываем, что тема для мобильников берётся из дефолтного пакета)

"Система" - "Общие" - "Дизайн" - "Темы": здесь в "шаблонах", "оболочках", "макете" и "по умолчанию" вы прописываете:

"Подходящее выражение" -
Код:
iPhone|iPod|BlackBerry|Palm|Googlebot-Mobile|Mobile|mobile|mobi|Windows Mobile|Safari Mobile|Android|Opera Mini
"Значение" -
Код:
iphone
(Указываем Magento тему и место откуда она будет брать необходимые для темы файы).

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

Ссылка битая. Можно повторить выкладку?

Лови
 
Последнее редактирование модератором:
Magento 2 - добавить продукт в корзину програмно из блока, обзервера, хелпера
Добавить в свой метод в классе модуля:
PHP:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$cart = $objectManager->get(
    'Magento\Checkout\Model\Cart'
);
$productRepo = $objectManager->get(
    'Magento\Catalog\Model\ProductRepository'
);
$productData = [];
$productData['qty'] = КОЛЛИЧЕСТВО
$productData['product'] = ПРОДУКТ_ID // 8 - как пример
$_product = $productRepo->getById(ПРОДУКТ_ID);
if ($_product) {
    $cart->addProduct($_product, $productData); 
}
$cart->save();
$cart->getQuote()->setTotalsCollectedFlag(false)->collectTotals();
$cart->getQuote()->save();
 
Использование aheadWorks CC на EE (magento community на magento enterprise)
Не знаю обсуждалось или нет.

Если закомментировать эту:
Код:
//$this->disableExtensionOutput($extensionName);
строчку в файле
app/code/local/AW/All/Model/Feed/Extensions.php
то можно использовать CC модуль и на EE, в противном случае модуль вырубается автоматически в разделе "System->advanced->disable module output"

П.С. в очень редких случаях из за разницы в версиях модулей могут быть проблемы.
 
Использование aheadWorks CC на EE (magento community на magento enterprise)
Не знаю обсуждалось или нет.

Если закомментировать эту:
Код:
//$this->disableExtensionOutput($extensionName);
строчку в файле
app/code/local/AW/All/Model/Feed/Extensions.php
то можно использовать CC модуль и на EE, в противном случае модуль вырубается автоматически в разделе "System->advanced->disable module output"

П.С. в очень редких случаях из за разницы в версиях модулей могут быть проблемы.

Я в конфиге меняю
Код:
<platform>ce</platform>
на
Код:
<platform>ee</platform>
 
После применения патча SUPEE-8788 обязательно очистите кэш браузера и если используете CDN, то и его кэш. В противном случае может не работать загрузка изображений товаров. ctrl+F5 вам в помощь))
 
Magento2 - валидность в настройках (System Configuration)
добавьте 'validate' тэг для поля в system.xml
Код:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
    <system>
        <tab id="someid" translate="label" sortOrder="10">
            <label>Some Label</label>
        </tab>
        <section id="test" translate="label" type="text" sortOrder="300" showInDefault="1" showInWebsite="1" showInStore="1">
            <label>Some Configuration</label>
            <tab>TABNAME</tab>
            <resource>Testov_Test::config_test</resource>
            <group id="settings" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1">
                <field id="custom_email" translate="label comment" sortOrder="0" type="text" showInDefault="1" showInWebsite="0" showInStore="0">
                    <label>Enter Email Id</label>
                    <validate>validate-email</validate>
                </field>
            </group>
        </section>
    </system>
</config>
 
Очистка базы данных
Очень дельный совет касательно очистки таблиц магазина от "ненужных" даных
Код:
SET foreign_key_checks = 0;
TRUNCATE dataflow_batch_export;
TRUNCATE dataflow_batch_import;
TRUNCATE log_customer;
TRUNCATE log_quote;
TRUNCATE log_summary;
TRUNCATE log_summary_type;
TRUNCATE log_url;
TRUNCATE log_url_info;
TRUNCATE log_visitor;
TRUNCATE log_visitor_info;
TRUNCATE log_visitor_online;
TRUNCATE report_viewed_product_index;
TRUNCATE report_compared_product_index;
TRUNCATE report_event;
TRUNCATE index_event;
TRUNCATE catalog_compare_item;
SET foreign_key_checks = 1;
P.S.: как всегда не забываем делать бекапы перед манипуляциями
+
есть целый скрипт, который не только очищает базу, но и и логи с временными файлами, а также загрузками
Для просмотра ссылки Войди или Зарегистрируйся

Можно еще запрос выполнять DELETE FROM `DB_name`.`sales_flat_quote` WHERE CONCAT( `sales_flat_quote`.`grand_total` ) = '0.0000' ;
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху