Bina magento modülleri

4 Cevap php

Benim ilk magento modül bina başlamak üzereyim ama çekirdek yerel ve topluluk klasörün arasındaki fark ile ilgili literatüre bulamıyorum. Bazı insanlar yerel kendi modülleri oluşturmak ve toplumda diğerleri fark nedir ve neden birini veya başka kullanması gerektiğini fark ettik?

Teşekkürler

4 Cevap

Yerel dışarı geliştirmek isteyeceksiniz. Topluluk klasörü / yüklediğiniz veya Magento Marketplace satın modülleri koyardım yer olması amaçlanmıştır edilir. Bu klasörün kullanımının aşamalı ediliyor benim anlayış ve pazar indirilen olanlar bile, tüm modüller yerel klasörde yer olması Varien'ın tavsiyem.

Bir görüş sistemi açısından, tek fark topluluk klasör çekirdek klasör sonra aranır olduğunu, ancak yerel klasörde önce. App / Mage.php bu yolu ayarını Ödeme

$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'));

Yani, iki dosya varsa

app/code/community/Companyname/Models/Foo.php
app/code/local/Companyname/Models/Foo.php

Magento ilk topluluk klasöründeki birini kullanacağız.

Sen kullanmanız gerekir community, sizin modül diğer Magento geliştiricileri de, kendi Magento projelerinde modülünü kullanmak için izin, halka dağıtılması planlanan eğer.

Bu Varien bir Magento Extension dediği.

Yalnızca halka dağıtmak istemiyorsanız, local yerine kullanmanız gerekir, ancak belirli bir dükkan (ya da belki kişisel kullanım) için ağırlıklı modülü geliştiriyor.

Daha iyi local ve community klasör arasında farkı anlamak için, Magento AutoLoader nasıl çalıştığını bilmek yardımcı olur:

Bir class Magento örneği üzereyken, AutoLoader PHPs include_path tarafından verilen sırayla sınıfları eşleşen arar.

Magento başlangıçta include_path app/Mage.php başlangıç ​​üzerine in ayarlar:

:

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'));

:

Magento AutoLoader göründükleri same sırayla yolları arar include_path:

1st /app/code/local/
2nd /app/code/community/
3rd /app/code/core/
4th /lib/
:

Namespace/Module/Block/Hello.php * SİZ Namespace_Module_Block_Hello, örneğin, bu Magentos AutoLoader adlı bir dosya için include_path tarafından verilen yollarını arıyor olması neden olur adında bir sınıf örneğini çalışıyoruz varsayarsak :

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
:

Bulunan first dosya, kazanacak yani örneği olsun. Yani aynı dosya local bulunmaktadır VE community, örneğin local bir örneği olsaydı.

Bu geliştiricilerin özgürce sınıfları görmezden / / geçersiz kılma / aşırı genişletmek için olanak sağlar.


* see lib/Varien/Autoload.php::autoload() isim dönüşüm kuralları

Yerel klasör sadece kullanacağınız modülleri içindir. Topluluk klasörü sonunda magento topluma paketlenmiş ve mevcut (ya da satılır) yapılacaktır modüller içindir. Indirmek ve yüklemek herhangi modülleri topluluk klasörüne yerleştirilir. Sizin modül nerede Magento gerçekten umurumda değil, ayrım organize modülleri tutmak için ağırlıklı olarak var. O birinden diğerine geçmek kolay beri herhangi bir durumda gerçekten çok tüm bu rahatsız olmamalıdır.

Eğer modülü hangi kategoriye ait olduğunu bilmiyorsanız, size yerel klasörde başlayabilir ve yayınlanacak ise, daha sonra topluluk klasöre taşıyabilirsiniz.

Modülü için sınıflandırmanın iki tipi vardır.

  1. Community and commercial Community - free for the community Commercial - paid for the community

  2. Local and Core Core - Extension is developed using magento core files. Local - Extension is developed by copying core files to the local. Actual changes are done at the local

Yerel bir daha tavsiye edilir ...