Magento Widget - Как подтвердить доступ к коду блока? - PullRequest
1 голос
/ 22 февраля 2012

Я создал свой первый виджет Magento на тестовом сайте (тот же код и конфигурация, что и на моем живом сайте).Виджет отлично работает на тестовом сайте.Однако, переместив код на работающий сайт, я могу настроить экземпляр виджета, но вывод виджета не отображается на странице продукта.Итак, я знаю, что Magento извлекает информацию из файлов config.xml и widget.xml виджета.

Я подтвердил, что в таблицу core_layout_update вставлено правильное обновление макета.Информация в таблице действующей системы точно такая же, как и на рабочем тестовом сайте.

Я подтвердил, что права доступа к файлу и право собственности на действующем сайте правильные.

Я подтвердилчтобы я мог поместить другой (поставляемый Magento) виджет в нужное место на странице настраиваемого продукта (дополнительная информация о продукте).Поэтому я знаю, что мои шаблоны и т. Д. Не мешают добавить виджет в это место.

Я попытался удалить экземпляр виджета и воссоздать новый экземпляр того же виджета.

Я сравнил код с тестовым сайтом и скопировал код прямо с тестового сайта.Все еще безуспешно.Я включил php_flag display_errors в .htaccess, и ошибки не отображаются.И при включении исключения.log не отображаются.

Живая и тестовая системы находятся на разных серверах, разных ОС, разных версиях PHP (обе версии 5.3.x).Я обновил все кэши и подтвердил, что тестовый виджет отображается, поэтому я не думаю, что это проблема с кэшированием.

Как лучше всего подтвердить, что Magento на живом сайте действительно может получить доступ или найти код блокировки для моего виджета?Как указано, я знаю, что Magento обращается к файлу widget.xml в моей локальной директории кода.Не уверен, что установка CommerceBug Alan Storm - это способ отследить или сбросить то, что Magento пытается загрузить (модули, виджеты и т. Д.) Для рассматриваемой страницы.

Ответы [ 4 ]

4 голосов
/ 22 февраля 2012

Убедитесь, что у вас есть xml в папке /app/etc/modules.

Вы можете включить Block Hints, перейдя на Admin->System->Configuration->Advanced->Developer, изменив Current Configuration Scope на Main Website и нажав Debug.Измените Template Path Hints на Yes и сохраните.

1 голос
/ 22 февраля 2012

Следующим шагом, который я предприму, является просмотр окончательного XML-макета страницы, сгенерированного для страницы, к которой вы добавляете виджет, и убедитесь, что на странице для вашего виджета добавляется немного XML-макета. Если это не так, то что-то не так с обновлениями макета XML, которые добавляются в таблицу через пользовательский интерфейс виджета. Если это так, то начните отладку, почему конкретный кусок сгенерированного макета XML не добавляется на страницу.

Это нисходящий подход к устранению проблемы, но это единственный способ, который я знаю, чтобы быть уверенным.

1 голос
/ 22 февраля 2012

Проверьте ваши имена файлов.Это получило меня несколько раз.Я работаю на Mac (без учета регистра), и иногда, когда я загружаю в Linux (с учетом регистра), он ломается.Прежде всего я проверяю регистр имени файла.

Убедитесь, что имя класса соответствует имени файла.

0 голосов
/ 19 февраля 2013

У меня была такая же проблема. Это мое решение:

app \ code \ local \ Mage \ Core \ Model \ Resource \ Layout.php

Когда 'theme' => Mage :: getSingleton ('core / design_package') -> getTheme ('layout') результат неверен: 'theme' => 'multistore', должно быть 'theme' => ' your_theme.
Итак, удалите аргумент 'layout' в функции getTheme () и получите правильный результат
* /

class Mage_Core_Model_Resource_Layout extends Mage_Core_Model_Resource_Db_Abstract 
{

... 

public function fetchUpdatesByHandle($handle, $params = array())
{
    $bind = array(
        'store_id'  => Mage::app()->getStore()->getId(),
        'area'      => Mage::getSingleton('core/design_package')->getArea(),
        'package'   => Mage::getSingleton('core/design_package')->getPackageName(),  
//      'theme'     => Mage::getSingleton('core/design_package')->getTheme('layout')
        'theme'     => Mage::getSingleton('core/design_package')->getTheme()
    );

    foreach ($params as $key => $value) {
        if (isset($bind[$key])) {
            $bind[$key] = $value;
        }
    }
    $bind['layout_update_handle'] = $handle;
    $result = '';

    $readAdapter = $this->_getReadAdapter();
    if ($readAdapter) {
        $select = $readAdapter->select()
            ->from(array('layout_update' => $this->getMainTable()), array('xml'))
            ->join(array('link'=>$this->getTable('core/layout_link')), 
                    'link.layout_update_id=layout_update.layout_update_id',
                    '')
            ->where('link.store_id IN (0, :store_id)')
            ->where('link.area = :area')
            ->where('link.package = :package')
            ->where('link.theme = :theme')
            ->where('layout_update.handle = :layout_update_handle')
            ->order('layout_update.sort_order ' . Varien_Db_Select::SQL_ASC);
        $result = join('', $readAdapter->fetchCol($select, $bind));
    }
    return $result;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...