0

I am upgrading my Magento site from EE 1.14.1.0 to 1.14.2.0, using the diff file "Magento Enterprise Edition v. 1.14.2.0 Diff" from Magento.com.

After running through all of the "rejected" code and correcting it in the actual code, I am getting this error when going to System > Config > Catalog:

Fatal error: Class 'Mage_Merchandiser_Helper_Data' not found in htdocs/app/Mage.php on line 547
Call Stack
#   Time    Memory  Function    Location
1   0.0035  267440  {main}( )   .../index.php:0
2   0.0068  541808  Mage::run( )    .../index.php:85
3   0.0163  1473000 Mage_Core_Model_App->run( ) .../Mage.php:684
4   1.6440  11305880    Mage_Core_Controller_Varien_Front->dispatch( )  .../App.php:354
5   1.6625  12275384    Mage_Core_Controller_Varien_Router_Standard->match( )   .../Front.php:172
6   1.6932  12819056    Mage_Core_Controller_Varien_Action->dispatch( ) .../Standard.php:254
7   4.3092  21600824    Mage_Adminhtml_System_ConfigController->editAction( )   .../Action.php:418
8   4.7653  30679280    Mage_Adminhtml_Block_System_Config_Edit->initForm( )    .../ConfigController.php:107
9   4.7690  30925328    Mage_Adminhtml_Block_System_Config_Form->initForm( )    .../Edit.php:92
10  4.7718  31072528    Mage_Adminhtml_Block_System_Config_Form->_initGroup( )  .../Form.php:164
11  4.7719  31073560    Mage::helper( ) .../Form.php:194

The /htdocs/app/code/community/OnTap/Merchandiser/etc/config.xml file for the OnTap Merchandiser:

<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
    <OnTap_Merchandiser>
        <version>2.2.12</version>
        <depends>
            <Mage_Adminhtml/>
        </depends>
    </OnTap_Merchandiser>
</modules>
<catalog>
    <merchandiser>
        <actions>
            <move_bestsellers_top translate="name">
                <name>Move best sellers to top</name>
                <sorting_function>OnTap_Merchandiser_Model_Merchandiser::moveBestsellersTop</sorting_function>
            </move_bestsellers_top>
            <move_lowstock_top translate="name">
                <name>Move low stock to top</name>
                <sorting_function>OnTap_Merchandiser_Model_Merchandiser::moveLowstockTop</sorting_function>
            </move_lowstock_top>
            <instock_at_top translate="name">
                <name>Move out of stock to bottom</name>
                <sorting_function>OnTap_Merchandiser_Model_Merchandiser::moveInStockToTheTop</sorting_function>
            </instock_at_top>
            <special_at_top translate="name">
                <name>Special price to top</name>
                <sorting_function>OnTap_Merchandiser_Model_Merchandiser::moveSaleAtTop</sorting_function>
            </special_at_top>
            <special_at_bottom translate="name">
                <name>Special price to bottom</name>
                <sorting_function>OnTap_Merchandiser_Model_Merchandiser::moveSaleAtBottom</sorting_function>
            </special_at_bottom>
            <newest translate="name">
                <name>Newest products first</name>
                <sorting_function>OnTap_Merchandiser_Model_Merchandiser::newestFirst</sorting_function>
            </newest>
            <highest_margin translate="name">
                <name>Highest margin first</name>
                <sorting_function>OnTap_Merchandiser_Model_Merchandiser::highestMarginFirst</sorting_function>
            </highest_margin>
            <sort_by_color translate="name">
                <name>Sort by color</name>
                <sorting_function>OnTap_Merchandiser_Model_Merchandiser::sortByColor</sorting_function>
            </sort_by_color>
        </actions>
        <options>
            <color_attribute>color</color_attribute>
            <attribute_codes>color,name,price</attribute_codes>
            <column_count>4</column_count>
            <hide_no_stock>0</hide_no_stock>
            <show_creation_date>0</show_creation_date>
            <show_extra_images>0</show_extra_images>
            <max_images_thumbnail>4</max_images_thumbnail>
            <ajax_page_load>50</ajax_page_load>
            <hide_product_position_field>1</hide_product_position_field>
            <rebuild_on_productsave>1</rebuild_on_productsave>
            <rebuild_on_categorysave>1</rebuild_on_categorysave>
            <rebuild_on_cron>1</rebuild_on_cron>
            <new_products_handler>1</new_products_handler>
            <cron_setup>0,30 * * * *</cron_setup>
            <disable_catindex>0</disable_catindex>
            <min_stock_threshold>1</min_stock_threshold>
            <bestseller_sort_period>6</bestseller_sort_period>
        </options>
    </merchandiser>
</catalog>
<global>
    <models>
        <merchandiser>
            <class>OnTap_Merchandiser_Model</class>
            <resourceModel>merchandiser_resource</resourceModel>
        </merchandiser>
        <merchandiser_resource>
            <class>OnTap_Merchandiser_Model_Resource</class>
        </merchandiser_resource>
    </models>
    <helpers>
        <merchandiser>
            <class>OnTap_Merchandiser_Helper</class>
        </merchandiser>
    </helpers>
    <blocks>
        <merchandiser>
            <class>OnTap_Merchandiser_Block</class>
        </merchandiser>
    </blocks>
    <resources>
        <ontap_merchandiser_setup>
            <setup>
                <module>OnTap_Merchandiser</module>
                <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
            </setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </ontap_merchandiser_setup>
    </resources>
</global>
<adminhtml>
    <layout>
        <updates>
            <merchandiser>
                <file>merchandiser.xml</file>
            </merchandiser>
        </updates>
    </layout>
    <events>
        <catalog_category_save_after>
            <observers>
                <merchandiser_catalog_category_prepare_save>
                    <class>merchandiser/adminhtml_observer</class>
                    <method>categorySaveAfter</method>
                </merchandiser_catalog_category_prepare_save>
            </observers>
        </catalog_category_save_after>
        <catalog_category_delete_after>
            <observers>
                <merchandiser_catalog_category_delete_after>
                    <class>merchandiser/adminhtml_observer</class>
                    <method>categoryDeleteAfter</method>
                </merchandiser_catalog_category_delete_after>
            </observers>
        </catalog_category_delete_after>
        <adminhtml_catalog_category_tabs>
            <observers>
                <merchandiser_adminhtml_catalog_category_tabs>
                    <class>merchandiser/adminhtml_observer</class>
                    <method>adminhtmlCatalogCategoryTabs</method>
                </merchandiser_adminhtml_catalog_category_tabs>
            </observers>
        </adminhtml_catalog_category_tabs>
        <catalog_product_prepare_save>
            <observers>
                <merchandiser_product_prepare_save>
                    <class>merchandiser/adminhtml_observer</class>
                    <method>productPrepareSave</method>
                </merchandiser_product_prepare_save>
            </observers>
        </catalog_product_prepare_save>
    </events>
    <translate>
        <modules>
            <OnTap_Merchandiser>
                <files>
                    <default>OnTap_Merchandiser.csv</default>
                </files>
            </OnTap_Merchandiser>
        </modules>
    </translate>
</adminhtml>
<admin>
    <routers>
        <adminhtml>
            <args>
                <modules>
                    <ontap_merchandiser after="Mage_Adminhtml">OnTap_Merchandiser_Adminhtml</ontap_merchandiser>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>
<crontab>
    <jobs>
        <smart_merchandiser_reindex>
            <schedule>
                <config_path>merchandiser/options/cron_setup</config_path>
            </schedule>
            <run>
                <model>merchandiser/adminhtml_observer::reindexCron</model>
            </run>
        </smart_merchandiser_reindex>
    </jobs>
</crontab>

htdocs/app/code/community/OnTap/Merchandiser/etc/system.xml:

<config>
<sections>
    <catalog>
        <groups>
            <merchandiser translate="label" module="merchandiser">
                <class>merchandiser-top</class>
                <label>Visual Merchandiser</label>
                <tab>catalog</tab>
                <frontend_type>text</frontend_type>
                <sort_order>40</sort_order>
                <show_in_default>1</show_in_default>
                <hint>
                    <frontend_model>merchandiser/adminhtml_system_config_fieldset_hint</frontend_model>
                    <sort_order>0</sort_order>
                    <show_in_default>1</show_in_default>
                    <show_in_website>1</show_in_website>
                    <show_in_store>1</show_in_store>
                </hint>
                <options translate="label">
                    <label>Visual Merchandising Options</label>
                    <frontend_type>text</frontend_type>
                    <sort_order>1000</sort_order>
                    <show_in_default>1</show_in_default>
                    <expanded>1</expanded>
                    <fields>
                        <attribute_codes translate="label comment">
                            <label>List attribute codes</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>1</sort_order>
                            <show_in_default>1</show_in_default>
                            <comment>Allows product attributes to be displayed in the drag-and-drop window. Use commas ',' to separate multiple attribute codes.</comment>
                        </attribute_codes>
                        <column_count translate="label comment">
                            <label>Column count</label>
                            <comment><![CDATA[Default number of columns in the drag-and-drop window. Maximum value is 5.]]></comment>
                            <frontend_type>text</frontend_type>
                            <sort_order>2</sort_order>
                            <show_in_default>1</show_in_default>
                            <validate>validate-number</validate>
                        </column_count>
                        <show_creation_date translate="label comment">
                            <label>Show creation date </label>
                            <comment><![CDATA[Shows product creation dates in the drag-and-drop window.]]></comment>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>3</sort_order>
                            <show_in_default>1</show_in_default>
                        </show_creation_date>
                        <show_extra_images translate="label comment">
                            <label>Show extra images </label>
                            <comment><![CDATA[This option shows additional gallery images for each product as thumbnails.]]></comment>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>3</sort_order>
                            <show_in_default>1</show_in_default>
                            <validate>validate-number</validate>
                        </show_extra_images>
                        <max_images_thumbnail translate="label">
                            <label>Max extra images thumbnail </label>
                            <frontend_type>text</frontend_type>
                            <sort_order>4</sort_order>
                            <show_in_default>1</show_in_default>
                            <validate>validate-number</validate>
                            <depends>
                                <show_extra_images>1</show_extra_images>
                            </depends>
                        </max_images_thumbnail>
                        <hide_invisible translate="label comment">
                            <label>Hide not-visible products</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>10</sort_order>
                            <show_in_default>1</show_in_default>
                            <comment><![CDATA[This hides products in the drag-and-drop window that have their visibility set to 'Not Visible Individually'.]]></comment>
                        </hide_invisible>
                        <hide_disabled translate="label comment">
                            <label>Hide disabled products</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>11</sort_order>
                            <show_in_default>1</show_in_default>
                            <comment><![CDATA[This hides products in the drag-and-drop window that are disabled.]]></comment>
                        </hide_disabled>
                        <hide_no_stock>
                            <label><![CDATA[Treat out of stock as <=0 quantity as not-visible]]></label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>12</sort_order>
                            <show_in_default>1</show_in_default>
                            <comment><![CDATA[If 'Hide not-visible products' is set to 'Yes', then setting this option to 'Yes' will treat products with zero (or less) quantity as not-visible.]]></comment>
                        </hide_no_stock>
                        <hide_product_position_field translate="label comment">
                            <label>Hide category position input fields</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>20</sort_order>
                            <show_in_default>1</show_in_default>
                            <comment><![CDATA[This prevents manual updating of category positions in Manage Categories.]]></comment>
                        </hide_product_position_field>
                        <ajax_page_load translate="label comment">
                            <label>Ajax page load threshold </label>
                            <frontend_type>text</frontend_type>
                            <sort_order>5</sort_order>
                            <show_in_default>1</show_in_default>
                            <validate>validate-number</validate>
                            <comment>When a category contains more products than this number, then Ajax page loads are enabled. Leave field empty to disable Ajax page loads - however, this may cause large categories not to load properly in the drag-and-drop window.</comment>
                        </ajax_page_load>
                        <rebuild_on_productsave translate="label comment">
                            <label>Rebuild on product save</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>30</sort_order>
                            <show_in_default>1</show_in_default>
                            <comment><![CDATA[If set to 'Yes' (recommended), then when a product is saved any changes to attributes that need to be considered for smart category rules are queued for processing by cron.]]></comment>
                        </rebuild_on_productsave>
                        <rebuild_on_categorysave translate="label comment">
                            <label>Rebuild on category save</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>40</sort_order>
                            <show_in_default>1</show_in_default>
                            <comment><![CDATA[If set to 'Yes' (recommended), then when a category is saved any changes that need to be considered for smart category rules are queued for processing by cron.]]></comment>
                        </rebuild_on_categorysave>
                        <rebuild_on_cron translate="label comment">
                            <label>Rebuild On Cron</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>50</sort_order>
                            <show_in_default>1</show_in_default>
                            <comment><![CDATA[Queued updates to categories will only be processed automatically if this is set to 'Yes' (recommended).]]></comment>
                        </rebuild_on_cron>
                        <disable_catindex translate="label comment">
                            <label>Disable Reindex On Category Save</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>55</sort_order>
                            <show_in_default>1</show_in_default>
                            <comment><![CDATA[If set to 'Yes', then when a category is saved Catalog Category/Product Index will not reindexed.]]></comment>
                        </disable_catindex>
                        <cron_setup translate="label comment">
                            <label>Cron schedule</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>60</sort_order>
                            <show_in_default>1</show_in_default>
                            <comment><![CDATA[This is the current schedule that category updates are processed.]]></comment>
                        </cron_setup>
                        <rebuild_button translate="label">
                            <label/>
                            <frontend_type>button</frontend_type>
                            <frontend_model>merchandiser/adminhtml_system_config_fieldset_rebuild</frontend_model>
                            <sort_order>70</sort_order>
                            <show_in_default>1</show_in_default>
                        </rebuild_button>
                        <new_products_handler translate="label comment">
                            <label>New product handling</label>
                            <frontend_type>select</frontend_type>
                            <source_model>merchandiser/adminhtml_config_source_newproductshandler</source_model>
                            <sort_order>80</sort_order>
                            <show_in_default>1</show_in_default>
                            <comment><![CDATA[When new products get included in a category for the first time by a smart category rule, this setting determines whether they are automatically added to the top or bottom of the category.]]></comment>
                        </new_products_handler>
                        <min_stock_threshold translate="label">
                            <label>Minimum stock threshold</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>26</sort_order>
                            <show_in_default>1</show_in_default>
                        </min_stock_threshold>
                        <bestseller_sort_period translate="label comment">
                            <label>Best seller data period (months)</label>
                            <frontend_type>select</frontend_type>
                            <source_model>merchandiser/adminhtml_config_source_months</source_model>
                            <sort_order>27</sort_order>
                            <show_in_default>1</show_in_default>
                            <comment><![CDATA[Lookup period used when sorting by bestsellers]]></comment>
                        </bestseller_sort_period>
                        <color_attribute translate="label comment">
                            <label>Color attribute code to use</label>
                            <comment><![CDATA[This is the attribute that should be used to sort by color.]]></comment>
                            <frontend_type>text</frontend_type>
                            <sort_order>100</sort_order>
                            <show_in_default>1</show_in_default>
                        </color_attribute>
                        <color_order translate="label comment">
                            <label>Color order</label>
                            <comment><![CDATA[Each color being on a separate row.]]></comment>
                            <frontend_type>textarea</frontend_type>
                            <sort_order>101</sort_order>
                            <show_in_default>1</show_in_default>
                        </color_order>
                    </fields>
                </options>

            </merchandiser>
        </groups>
    </catalog>
</sections>

htdocs/app/code/community/OnTap/Merchandiser/etc/adminhtml.xml:

<config>
<acl>
    <resources>
        <admin>
            <children>
                <system>
                    <children>
                        <config>
                            <children>
                                <merchandiser translate="title" module="merchandiser">
                                    <title>Visual Merchandiser</title>
                                </merchandiser>
                            </children>
                        </config>
                    </children>
                </system>
            </children>
        </admin>
    </resources>
</acl>

Should this be different? If so, what? I don't see anything in the Mage folder that includes Merchandiser.

Or, do I need to run the diff file in a different manner?

  • Please post the path and content of the helper file also. – Mohit Kumar Arora Oct 24 '18 at 13:55
  • try to run compilation one, then try to open. Before run compilation do not forgot to take backup. – Dhiren Vasoya Oct 24 '18 at 14:24
  • Do you have system.xml then please post the system.xml or adminhtml.xml of your module as well? – Sukumar Gorai Oct 24 '18 at 15:10
  • @SukumarGorai - I have added the adminhtml.xml and system.xml above. – cbartell Oct 24 '18 at 18:12
  • @MohitKumarArora - The helper file is too big to add to my initial post. – cbartell Oct 24 '18 at 18:12
0

Because the version of the OnTap Visual Merchandiser I had in EE 1.14.1.0 was 2.2.12 and the version of this in EE 1.14.2.0 is 2.2.6, it caused conflicts.

I ended up deleting all of the OnTap Merchandiser files and reinstalled this extension with the newest version, which solved the issue.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.