Geeky Plugins

Magento Plugin Guidelines

How to install the ISAAC Magento plugin

Each ISAAC Magento plugin is distributed as a .zip file. You can install the plugin by unzipping the package in the Magento root.

cd /path/to/magento
unzip /path/to/isaac_module.zip

How to remove the ISAAC Magento plugin

An ISAAC Magento plugin can be removed by removing all files that are included in the .zip file. On Linux you can use the zipinfo tool to automate this, by executing the following command:

rm -f `zipinfo -1 /path/to/isaac_module.zip`

After that, the cache needs to be cleared to make sure that Magento doesn't try to use any of the removed components.

If you only want to know if all files are installed, you can also use the zipinfo tool to find this out, for instance by executing the following shell command:

stat -c %n `zipinfo -1 /path/to/isaac_module.zip`

Tips and Tricks

Possible issues with other extensions and fixes

ISAAC Magento extensions can extend one or more Magento PHP classes to add functionality without "touching" these. When adding another extension or when having other extensions installed, the following issues might occur in rare occasions:



Possible issue: Two extensions extend the same PHP class

Solution: If the functionality of the two classes themselves don't conflict (there are functions with different implementation). The implementation of one of the classes should be changed such that it extends the class of the other extension. This way all functionality is maintained for both extensions.

Situation:

class Manufacturer1_ModuleA_Block_Layer_Filter_Decimal extends
Mage_Catalog_Block_Layer_Filter_Decimal

class Manufacturer2_ModuleB_Block_Layer_Filter_Decimal extends 
Mage_Catalog_Block_Layer_Filter_Decimal

Change the dependancy of one class:

class Manufacturer1_ModuleA_Block_Layer_Filter_Decimal extends
Manufacturer2_ModuleB_Block_Layer_Filter_Decimal

or

class Manufacturer2_ModuleB_Block_Layer_Filter_Decimal extends
Manufacturer1_ModuleA_Block_Layer_Filter_Decimal

Additionally it is necessary to define which module should be loaded first by adding dependencies. The module of the top level class should depend on the module of the lower level class (the class that is extended). This is done in app/etc/modules with the <depends> tag as shown below. 'A' represents the top level class and 'B' represents the lower level class.

      <config>
          <modules>
              <Manufacturer_ModuleA>
                  <active>true</active>
                  <codePool>community</codePool>
                  <depends>
                      <Manufacturer_ModuleB />
                  </depends>
              </Manufacturer_ModuleA>
          </modules>
      </config>
    



Possible issue: An already installed extension rewrites a class which a new extensions class extends.

Solution: In this case the class of the new extension should extend the conflicting class of the other extensions.

Additionally it is necessary to make sure that the new extension is loaded after the other extension on which it depends, as shown in the example above.



Possible issues with themes and fixes

Some ISAAC Magento extensions make use of layout files. If the theme you are using contains a layout file that changes the same parts as the ISAAC Magento extension does, the ISAAC Magento extension might not show up.

Solution: change the layout file of your theme such that it doesn't change the same blocks that are changed by the ISAAC Magento extension.