Ответы пользователя по тегу PHP
  • Как исправить баг с добавлением товара в корзину?

    Hide
    @Hide
    инженер-программист
    В зависимости от того как у вас формируется блок с продуктами, вам могут помочь такие варианты

    1. https://web-experiment.info/articles/Magento_1.8_f...
    (должно работать и для 1.9)
    2. https://web-experiment.info/articles/New_php_block/
    Ответ написан
    Комментировать
  • Magento 2 что за ошибка?

    Hide
    @Hide
    инженер-программист
    #1 /var/www/html/app/code/Magento/Backend/Model/Menu/Config.php(142): Magento\Framework\Config\Reader\Filesystem->read('adminhtml')

    Эта строчка говорит, что ошибка в файле-конфиге (xml который) расширения. А именно, значение элемента accounting не соответствует схеме описания xml.
    Возможно, вам лучше воспользоваться специальным конвертером для преобразования расширений из Magento 1 в Magento 2:
    https://github.com/magento/code-migration
    https://github.com/unirgy/convertm1m2
    Ответ написан
    4 комментария
  • В какую таблицу будет правильно добавить колонку?

    Hide
    @Hide
    инженер-программист
    Посмотрите эти варианты решения:
    1. Добавить атрибут
    Catalog >> Attributes >> Manage Attributes >> Add new attribute
    stackoverflow.com/questions/14525395/magento-hidde...
    2. Вывести значение нового атрибута в Manage Products в админке
    www.leonhostetler.com/blog/magento-add-attribute-c...
    Ответ написан
    Комментировать
  • Как редактировать custommenu в Magento?

    Hide
    @Hide
    инженер-программист
    Почему не спрашиваете у разработчиков? Вопрос можете задать прямо на русском языке. Их поддержка понимает русский язык: https://web-experiment.info/support

    По поводу вашего вопроса. Какая версия custommenu у вас? В последней версии 2.10.2 нет указанных вами файлов:
    /readme.txt
    /app/etc/modules/WP_CustomMenu.xml
    /app/code/community/WP/CustomMenu/Helper/Data.php
    /app/code/community/WP/CustomMenu/Block/About.php
    /app/code/community/WP/CustomMenu/Block/Toggle.php
    /app/code/community/WP/CustomMenu/etc/config.xml
    /app/code/community/WP/CustomMenu/etc/system.xml
    /app/code/community/WP/CustomMenu/Block/Topmenu.php
    /app/code/community/WP/CustomMenu/Block/Navigation.php
    /app/code/community/WP/CustomMenu/controllers/AjaxmenucontentController.php
    /app/code/community/WP/CustomMenu/controllers/AjaxmobilemenucontentController.php
    /skin/frontend/base/default/js/webandpeople/custommenu/custommenu.js
    /app/design/frontend/base/default/layout/webandpeople/custommenu.xml
    /skin/frontend/base/default/css/webandpeople/custommenu/custommenu.css
    /skin/frontend/rwd/default/css/webandpeople/custommenu/custommenu.css
    /app/design/frontend/base/default/template/webandpeople/custommenu/top.phtml
    /app/design/frontend/base/default/template/webandpeople/custommenu/menucontent.phtml

    https://web-experiment.info/webandpeople-custom-me...
    https://web-experiment.info/media/download/webandp...
    Ответ написан
  • Как в Magento выявить, что к сайту обратились с мобильного устройства?

    Hide
    @Hide
    инженер-программист
    Это вопрос больше по PHP, чем по Magento. На SO на него уже отвечали:
    stackoverflow.com/questions/5335237/how-to-check-i...
    Советовали решение на базе MobileESP: blog.mobileesp.com

    Вот еще вариант с SO:
    stackoverflow.com/questions/4117555/simplest-way-t...

    А это спец. расширение с хелпером для Magento:
    https://www.magentocommerce.com/magento-connect/ca...

    Гуглил по фразе php 5 detect mobile

    Ваше решение тоже есть на SO:
    stackoverflow.com/questions/5541171/how-to-handle-...

    Почему не работает такой вариант? Это можно узнать, проанализировав содержимое переменной $ua и логику работы метода Zend_Http_UserAgent_Mobile::match(). Какие значения попадают в переменную $ua в вашем случае?

    UPD: комментарий от автора вопроса
    Спасибо за помощь. Разобрался. Код в топике рабочий. Это чисто магентовский прикол связанный с кешированием. Перетащил код в другое место, все заработало, там где нет жесткого кеширования.
    Ответ написан
    3 комментария
  • Как удалить кредитную карту пользователя в Magento?

    Hide
    @Hide
    инженер-программист
    В БД эта информация находится в двух таблицах (для версии 1.9):
    - sales_flat_quote_payment
    - sales_flat_order_payment

    Источник:
    magento.stackexchange.com/questions/28478/credit-c...
    stackoverflow.com/questions/24818083/how-to-delete...
    Ответ написан
    Комментировать
  • Как правильно прописать параметры в конструкторе класса Varien_Data_Form, в Magento?

    Hide
    @Hide
    инженер-программист
    Обратите внимание, что в результате выполнения вашего кода в исходном коде html-страницы вы не найдете тэг form. Замените последнюю строчку кода на это:
    $form->setUseContainer(true);
    echo $form->toHtml();

    И удалите строчку
    $form->setForm($form);
    Она лишняя.

    Ошибка в том, что как таковой формы у вас и нет в браузере, т.е. некуда сабмитить.
    Ответ написан
    Комментировать
  • Ресурсы для изучения Magento?

    Hide
    @Hide
    инженер-программист
    > Начал учить дополнительно Zend, насколько глубоко в него погружение требуется?
    Если у вас уже есть опыт работы с каким-то MVC-фрэймворком, то этого достаточно. Лучше учить Zend сразу в рамках Magento. И Zend узнаете, и с архитектурой Магенты ближе познакомитесь. Что называется, двух зайцев сразу.

    Что-то кроме официальной документации, увы, ничего посоветовать не могу. В свое время начинал изучать Магенту именно с нее, а дальше - ковыряние сторонних расширений. Мне этого оказалось достаточно, поэтому дальше уже просто гуглил конкретные проблемы и непонятные вещи. Чаще всего, подсказки и решение проблем находил на stackoverflow.com.
    Ответ написан
    Комментировать
  • Как загрузить стили и скрипты в Magento локально?

    Hide
    @Hide
    инженер-программист
    Информации, что вы предоставили, недостаточно для определения причины. Сделайте дамп того, что у вас сейчас есть (файлы и бд), залейте на файлообменник и киньте сюда ссылку для загрузки. Загружу локально, разверну и посмотрю что не так.

    UPD:
    Если нет возможности предоставить дамп, то попробуйте отключить "левые" расширения. Ощущение, что какое-то стороннее расширение вмешивается в работу системы. Возможно также, что такое поведение связано с изменениями в базовых файлах магенты.
    Ответ написан
    Комментировать
  • Что за ошибка "The encoded file is corrupt" после переноса магазина?

    Hide
    @Hide
    инженер-программист
    Вот что нагуглил:
    > To fix this problem, re-upload the liveSite software files in BINARY MODE.
    https://www.camelback.net/website-builder-kbase-li...
    Да, по ссылке речь про левый движок, но это замечание может быть отнесено и к вашему случаю, так как может быть связано с тем, что файл закодирован, и копировать его нужно в BINARY MODE, а не в ASCII.

    UPD:
    - Так в чем была проблема? Что помогло?
    - Пока до конца не выяснил. Возможно как раз из-за неверного RewriteBase. По крайней мере когда его раскомментил, то ничего не падало и в phperrorlog ничего не писалось.
    Ответ написан
  • Где находятся файлы типов доставок Magento?

    Hide
    @Hide
    инженер-программист
    Эти файлы "размазаны" по файловой структуре.
    Тут лежат файлы, отвечающие за вывод списка способов доставки:
    /app/code/core/Mage/Checkout/Block/Onepage/Shipping

    Тут файлы базовых способов доставки:
    /app/code/core/Mage/Shipping

    Тут файлы, которые расширяют базовый список
    /app/code/core/Mage/Usa

    Вообще, способы доставки (сторонние) представляют из себя отдельные модули/расширения со всеми вытекающими.

    Насчет записей в БД. Ищите следы в папке "sql" соответствующего расширения. Например, здесь:
    - /app/code/core/Mage/Usa/sql/usa_setup
    - /app/code/core/Mage/Shipping/sql/shipping_setup
    Ответ написан
    1 комментарий
  • Как в magento вывести категории товаров на главную страницу?

    Hide
    @Hide
    инженер-программист
    Вывод списка продуктов из определенной категории.
    Самый простой способ - это использовать стандартный {{block ...}}. Пример:
    {{block type="catalog/product_list" template="catalog/product/list.phtml" category_id="HomeProductsCategoryID"}}


    Шаблон вывода можно отредактировать:
    - убрать тулбар
    - ограничить вывод количества продуктов
    - убрать ссылки на вишлист и компаре и пр.

    UPD:

    Вывод списка категорий. Пример:
    {{block type="catalog/navigation" name="catalog.category" template="catalog/category/list.phtml"}}


    Содержимое файла /app/design/frontend/default/default/template/catalog/category/list.phtml
    <?php foreach ($this->getStoreCategories() as $_category): ?>
    <?php
    $open = $this->isCategoryActive($_category);
    $cur_category=Mage::getModel('catalog/category')->load($_category->getId());
    $layer = Mage::getSingleton('catalog/layer');
    $layer->setCurrentCategory($cur_category);
    if ($immagine = $this->getCurrentCategory()->getImageUrl()): ?>
    
    <div style="float: left; padding-right: 30px; text-align: center;">
        <div class="linkimage">
            <p>
                <a href="<?php echo $this->getCategoryUrl($_category)?>">
                    <img src="<?php echo $immagine ?>" alt="<?php echo $this->htmlEscape($this->getCurrentCategory()->getName()) ?>" width="135" height="135" />
                    <?php echo $_category->getName()?>
                </a>
            </p>
        </div>
    </div>
    
    <?php endif; ?>
    <?php endforeach; ?>


    или такое

    <?php $_maincategorylisting = $this->getCurrentCategory(); ?>
    <?php $_categories = $this->getCurrentChildCategories(); ?>
    <div class="subcat-listing">
    <ul class="subcat-products">
    
    <?php foreach ($_categories as $_category): ?>
    <?php if ($_category->getIsActive()): ?>
    <?php $cur_category = Mage::getModel('catalog/category')->load($_category->getId()); ?>
    <?php $layer = Mage::getSingleton('catalog/layer'); ?>
    <?php $layer->setCurrentCategory($cur_category); ?>
    <?php if ($_imageUrl = $this->getCurrentCategory()->getImageUrl()): ?>
    <li>
        <a href="<?php echo $this->getCategoryUrl($_category) ?>" title="<?php echo $this->htmlEscape($_category->getName()) ?>">
            <img src="<?php echo $_imageUrl ?>" width="auto" alt="<?php echo $this->htmlEscape($_category->getName()) ?>" />
        </a>
        <h3><?php echo $this->htmlEscape($_category->getName()) ?></h3>
    
    <?php if ($_description=$this->getCurrentCategory()->getDescription()):?>
        <p class="category-description"><?php echo $_description ?></</p>
    <?php endif; ?>
    
    </li>
    <?php endif; ?>
    <?php endif; ?>
    <?php endforeach; ?>
    
    </ul>
    </div>
    <?php $layer->setCurrentCategory($_maincategorylisting); ?>


    Источники:
    1. samsami2u.wordpress.com/2009/09/15/add-categories-...
    2. www.magentocommerce.com/wiki/4_-_themes_and_templa...
    Ответ написан
  • В каком файле(классе) описаны ключевые атрибуты товара в magento?

    Hide
    @Hide
    инженер-программист
    > который добавит в стандартный набор атрибутов новый атрибут, так же добавит его в листинг(и даст возможность сортировать и фильтровать по значению этого атрибута)
    Эта возможность доступна "из коробки" в Админке:
    Admin > Catalog > Attributes
    - Manage Attributes
    - Manage Attribute Sets
    Ищите гайды в сети о том, как с этим делом работать. Либо изучите методом тыка.

    "Из коробки" может не заработать только это:
    > ну и конечно выводить его на фронт енде
    Но на Тостере я уже писал как выводить такие кастомные атрибуты:
    Magento карточка товара
    Ответ написан
    6 комментариев
  • Как создать пользовательскую форму в Magento?

    Hide
    @Hide
    инженер-программист
    > Можно ли вывести просто форму? Без создания модуля?
    Да, можно.

    > Что я делаю не так?
    У вас класс объявлен, а экземпляр класса нигде не создается (соответственно, конструктор не вызывается). Допишите в конец файла Webinseform.php
    new Webinseform();

    Либо другой вариант. Переместите код из конструктора непосредственно... в потоковый код файла, т.е. избавьтесь от класса Webinseform, необходимость которого в данном контексте сомнительна.
    Ответ написан
    2 комментария
  • Кто-нибудь работал с Magento extensions?

    Hide
    @Hide
    инженер-программист
    Это особенность установки расширения через Magento Connect (он же Magento Downloader, по-вашему). Нельзя установить расширение повторно, пока не удалишь файлы старого. И не важно как эти файлы туда попали изначально (через коннект или через фтп). Просто запрещено перезаписывать файлы при установке через Magento Connect.
    Ответ написан
  • Как вывести значение атрибута картинки в Magento?

    Hide
    @Hide
    инженер-программист
    Напрямую никак. Не содержит коллекция нужной информации:
    /**
         * Retrive media gallery images
         *
         * @return Varien_Data_Collection
         */
        public function getMediaGalleryImages()
        {
            if(!$this->hasData('media_gallery_images') && is_array($this->getMediaGallery('images'))) {
                $images = new Varien_Data_Collection();
                foreach ($this->getMediaGallery('images') as $image) {
                    if ($image['disabled']) {
                        continue;
                    }
                    $image['url'] = $this->getMediaConfig()->getMediaUrl($image['file']);
                    $image['id'] = isset($image['value_id']) ? $image['value_id'] : null;
                    $image['path'] = $this->getMediaConfig()->getMediaPath($image['file']);
                    $images->addItem(new Varien_Object($image));
                }
                $this->setData('media_gallery_images', $images);
            }
    
            return $this->getData('media_gallery_images');
        }

    Из кода видно, что коллекция создается налету. В объекте $image нет нужного атрибута type изначально. И в коллекцию через обновление данных $image этот атрибут никак не заносится. Только через сравнение с данными у объекта $_product. Сравнивать следует по атрибуту file у $image из коллекции.
    $_product->getImage() # /a/s/asics-men-s-gel-kayano-xii.jpg
    $_product->getSmallImage() # /a/s/asics-men-s-gel-kayano-xii-2.jpg
    $_product->getThumbnail() # /a/s/asics-men-s-gel-kayano-xii-2.jpg
    ...
    $_image->getFile() # в цикле даст список путей выше, 
    # если только изображение не исключено из коллекции в бэкэнде

    66a736e10142ffc2cefe003a2af18b1252c17935
    Ответ написан
    Комментировать
  • Как отправить письмо с помощью php, чтоб отправитель правильный был ?

    Hide
    @Hide
    инженер-программист
    Пробовали обратиться в поддержку хостинга, на котором хостится условный site.ru с этим вопросом? Если такой возможности нет (или нет желания), то советую использовать PHPMailer с отправкой писем через акк. бесплатного почтового сервера по SMTP (gmail, например).
    Ответ написан
    Комментировать