que puedes usar community
, si se planea su módulo para ser distribuido al público, para permitir que otros desarrolladores de Magento para usar su módulo en sus propios proyectos de Magento, también.
Eso es lo que Varien llama un Magento Extension.
En su lugar, debe usar local
, si no desea distribuirlo al público, pero está desarrollando el módulo principalmente para una tienda específica (o tal vez para su uso personal) solamente.
Para comprender mejor la diferencia entre el local
y la carpeta community
, es muy útil saber cómo funciona el Magento cargador automático:
Cuando un class
está a punto de crear una instancia de Magento, el autocargador buscará para hacer coincidir las clases de el orden dado por PHPs include_path
.
Magento establece inicialmente su include_path
en app/Mage.php
en el arranque:
:
define('DS', DIRECTORY_SEPARATOR);
define('PS', PATH_SEPARATOR);
define('BP', dirname(dirname(__FILE__)));
Mage::register('original_include_path', get_include_path());
:
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'local';
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'community';
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'core';
$paths[] = BP . DS . 'lib';
$app_path = implode(PS, $paths);
set_include_path($app_path . PS . Mage::registry('original_include_path'));
:
El Magento autocargador busca los en el misma orden en que aparecen en include_path
:
1st /app/code/local/
2nd /app/code/community/
3rd /app/code/core/
4th /lib/
:
Suponiendo que usted está tratando de crear una instancia una clase llamada Namespace_Module_Block_Hello
por ejemplo, que resultaría en que el autocargador Magentos busque en las rutas dadas por include_path
para un archivo llamado Namespace/Module/Block/Hello.php
*:
1st /app/code/local/Namespace/Module/Block/Hello.php
2nd /app/code/community/Namespace/Module/Block/Hello.php
3rd /app/code/core/Namespace/Module/Block/Hello.php
4th /lib/Namespace/Module/Block/Hello.php
:
La primera archivo encontrado va a ganar, es decir, conseguir instanciado. Por lo tanto, si existe el mismo archivo en local
Y community
, por ejemplo, se creará una instancia del local
.
Esto permite a los desarrolladores extender/sobreescribir/sobrecargar/ignorar libremente las clases.
* ver lib/Varien/Autoload.php::autoload()
de reglas de conversión de nombre
ignorar lo que he dicho anteriormente sobre la comunidad está eliminando gradualmente. Local es para cosas que estás haciendo localmente en tu tienda, se supone ** que la comunidad estará para distribuir módulos. Cuando distribuye su módulo en la carpeta de comunidad, permite que alguien anule una clase, estilo de grupo de código, en local. Sin embargo, debido a que no ha habido una comunicación clara sobre esto, muchos módulos distribuidos terminan en la comunidad. –