On occasion you may have a module which requires both EAV and flat resource setup classes, in this situation you can instantiate a setup class as this note shows.
Eav:
$installer = Mage::getModel('eav/entity_setup', 'eav_setup');
Flat:
$installer = Mage::getResourceModel('core/setup', 'core_setup');
Catalog:
$installer = Mage::getResourceModel('catalog/setup', 'catalog_setup');
You can then continue with the setup script as you normally would.
![](http://mikewhitby.co.uk/makandra-track.gif?a=using-differing-setup-classes-...
This container, when combined with a Placeholder Definition will cause the referenced block to never be cached.
/**
* Yourcompany.com
*
* PHP Version 5
*
* @category Namespace
* @package Namespace_Module
* @author Your Name <your.name@yourcompany.com>
* @copyright 2012 yourcompany.com
* @license http://www.yourcompany.com/license.txt Your license
* @link N/A
*/
/**
* Cache containe...
This should go in cache.xml
. See Boilerplate FPC No-Cache Container for a boilerplate container.
<config>
<placeholders>
<namespace_module>
<block>namespace_module/something</block>
<placeholder>NAMESPACE_MODULE_UNIQUE_STRING</placeholder>
<container>Namespace_Module_Model_Pagecache_Container</container>
<cache_lifetime>86400</cache_lifetime> <!-- never gets used -->
...
/**
* Yourcompany.com
*
* PHP Version 5
*
* @category Namespace
* @package Namespace_Module
* @author Your Name <your.name@yourcompany.com>
* @copyright 2012 yourcompany.com
* @license http://www.yourcompany.com/license.txt Your license
* @link N/A
*/
/**
* Something resource collection model
*
* @category Namespace
* @package Namespace_Module
* @author Your Name <your.name@yourcompany.com>
* @license http://www.yourcompany.com/...
/**
* Yourcompany.com
*
* PHP Version 5
*
* @category Namespace
* @package Namespace_Module
* @author Your Name <your.name@yourcompany.com>
* @copyright 2012 yourcompany.com
* @license http://www.yourcompany.com/license.txt Your license
* @link N/A
*/
/**
* Something resource model
*
* @category Namespace
* @package Namespace_Module
* @author Your Name <your.name@yourcompany.com>
* @license http://www.yourcompany.com/license.txt...
/**
* Yourcompany.com
*
* PHP Version 5
*
* @category Namespace
* @package Namespace_Module
* @author Your Name <your.name@yourcompany.com>
* @copyright 2012 yourcompany.com
* @license http://www.yourcompany.com/license.txt Your license
* @link N/A
*/
/**
* Something model
*
* @category Namespace
* @package Namespace_Module
* @author Your Name <your.name@yourcompany.com>
* @license http://www.yourcompany.com/license.txt Your lic...
/**
* Yourcompany.com
*
* PHP Version 5
*
* @category Namespace
* @package Namespace_Module
* @author Your Name <your.name@yourcompany.com>
* @copyright 2012 yourcompany.com
* @license http://www.yourcompany.com/license.txt Your license
* @link N/A
*/
/**
* Module translation helper
*
* @category Namespace
* @package Namespace_Module
* @author Your Name <your.name@yourcompany.com>
* @license http://www.yourcompany.com/license.tx...
With template support:
/**
* Yourcompany.com
*
* PHP Version 5
*
* @category Namespace
* @package Namespace_Module
* @author Your Name <your.name@yourcompany.com>
* @copyright 2012 yourcompany.com
* @license http://www.yourcompany.com/license.txt Your license
* @link N/A
*/
/**
* Something block
*
* @category Namespace
* @package Namespace_Module
* @author Your Name <your.name@yourcompany.com>
* @license http://www.yourcompany....
Frontend With Route:
<config>
<frontend>
<routers>
<namespace_module>
<use>standard</use>
<args>
<module>Namespace_Module</module>
<frontName>whatever</frontName> <!-- http://dev.local/whatever/*/* -->
</args>
</namespace_module>
</routers>
</frontend>
</config>
Frontend Injected (Sales given as an example):
<config>
<frontend>
<r...
Frontend:
<config>
<frontend>
<layout>
<updates>
<namespace_module>
<file>namespace-module.xml</file>
</namespace_module>
</updates>
</layout>
</frontend>
</config>
Admin:
<config>
<adminhtml>
<layout>
<updates>
<namespace_module>
<file>namespace-module.xml</file>
</namespace_module>
...
<config>
<crontab>
<jobs>
<cron_job_name>
<schedule>
<cron_expr>* * * * *</cron_expr>
</schedule>
<run>
<model>your_module/model::batchTransactions</model>
</run>
</cron_job_name>
</jobs>
</crontab>
</config>
Frontend:
<config>
<frontend>
<events>
<the_name_of_the_event_to_observe>
<observers>
<namespace_module>
<class>namespace_module/observer</class>
<method>someMethod</method>
</namespace_module>
</observers>
</the_name_of_the_event_to_observe>
</events>
</frontend>
</config>
Admin:
...
<config>
<global>
<blocks>
<namespace_module>
<class>Namespace_Module_Block</class>
</namespace_module>
</blocks>
</global>
</config>
EAV:
<config>
<global>
<resources>
<namespace_module_setup>
<setup>
<module>Namespace_Module</module>
<class>Mage_Eav_Model_Entity_Setup</class>
</setup>
</namespace_module_setup>
</resources>
</global>
</config>
Flat:
<config>
<global>
<resources>
<namespace_module_setup>
<setup>
<module>Na...
<config>
<global>
<models>
<namespace_module>
<class>Namespace_Module_Model</class>
<resourceModel>namespace_module_resource</resourceModel>
</namespace_module>
<namespace_module_resource>
<class>Namespace_Module_Model_Resource</class>
<entities>
<some_entity>
<table>namespace_module_some_entity</table>
</some_entity>...
Magento CE 1.6 and PE/EE 1.11 introduced database abstraction, this is the way to set up tables using the new code.
$table = $installer->getConnection()
->newTable($installer->getTable('your_module/table_name_in_xml'))
->addColumn(
'entity_id',
Varien_Db_Ddl_Table::TYPE_INTEGER,
null,
array(
'identity' => true,
'unsigned' => true,
'nullable' => false,
'primary' => true,
),
'Entity ...
$image = new Varien_Image('/full/fs/path/to/image.jpg');
// you cannot use method chaining with Varien_Image
$image->constrainOnly(false);
$image->keepFrame(true);
// avoid black borders by setting background colour
$image->backgroundColor(array(255,255,255));
$image->keepAspectRatio(true);
$image->resize(216, 139);
$image->save('/full/fs/path/to/save/to.jpg');