Geliştirdiğim bir uzantıyla arayüz oluşturan üçüncü taraf bir kütüphaneden .php, .js, .html, .css dosyalarını nereye koyacağım?


10

Diyelim ki bir Açık Kaynak grafik paketine veya bir resim galerisine veya uzantının kendisinin DEĞİL olmayan bir şeye arayüz oluşturan bir Magento uzantısı geliştirmek istiyorum. İndirildiğinde (uzantıdan ayrı olarak) 3. taraf lib, tüm .php, .js, .html ve .css ile birlikte kendi .zip dosyasında gelir.

Uzantımı 3. parti lib ile birlikte yüklemek isteyen fakir site sahibine mi yerleştiriyorum, orijinal 3. tarafı .zip'i ayırma yükü ve .js / js, .php in / lib,. css / cilt vb?

Veya herhangi bir 3. taraf .zips için genel olarak kabul edilen bir "boşaltma alanı" var mı?

Yanıtlar:


6

Gerçekten dahil ettiğiniz koda bağlı olarak bu soruya tek bir doğru cevap olup olmadığını bilmiyorum.

Harici bir API için bir sdk gibi bir üçüncü taraf php kütüphanesi eklemek istiyorsanız, Magento projenizin / lib dizinine koymanız gerekir, böylece onu tüketen uzantınız tarafından dahil edilebilir.

Ancak örnek olarak js ve css kullanıyorsunuz. Çıktı kodunuz için uzantınızdaki üçüncü taraflardan js kullanıyorsanız, örneğin bir tuval grafiği oluşturan bazı js kullanıyorsanız, bu uzantı / js dizinine konulmalıdır. Css için, muhtemelen temel / varsayılan temaya ve kaplama dizinlerine eklenmelidir.

Unfortunatley Magento 1 eklenti sistemi, bu tür bir şeyin dağıtılmasını kolaylaştırmaz, çünkü dosyalar tek bir direkten bağımsız olarak değil, tüm proje boyunca yayılır. Magento Composer Installer ve Modman gibi araçlar buna biraz yardımcı olur.


4

Karşıdan yüklendiğinde (uzantıdan ayrı olarak) 3. taraf uzantıları kendi .php, .js, .html ve .css dosyaları ile birlikte kendi .zip dosyasında gelir.

Ben her zaman kaynağın kendisinden ilahi kehanet hayranı oldum, ancak Magento 1 ile belirsiz olabilir.

Üçüncü taraf kütüphane lisansının paketlemeye izin verdiği sürece, onu açmanız ve uzantınızla birlikte yeniden paketlemeniz gerekir, çünkü ayrı bir alt kütüphaneyi açmak için yerel bir mekanizma yoktur (yanlış olabilir).

Bu varlıkların nereye gittiği, dosyaların türüne ve dahili organizasyonuna bağlıdır. Saf JS kütüphaneleri altına girilmelidir ./js/. Sunucu tarafında yürütülen dosyalar ./lib/, altında herhangi bir PHP sınıfının ./lib/(esasen PSR-0) otomatik yükleme şeması (ref. Zend Framework 1 otomatik yük kuralı) tarafından otomatik olarak yüklenebileceğini belirterek aittir . Alttaki hiçbir ./lib/şeye istemci aracılığıyla erişilemez (erişilmemelidir) (ref. ./lib/.htaccess).


Teşekkürler Ben. Cevabınız mantıklı, ancak bu, site sahiplerinin, arayüz oluşturan Magento uzantısından bağımsız olarak 3. taraf lib'i en son sürüme kolayca yükseltemedikleri anlamına gelir. Tüm bunların birlikte nasıl asıldığını tam olarak anlamadıkça ve o zaman bile tüm bitleri doğru yuvalara koymak acı vermez. Bu, uzatma ve 3. taraf lib sürümlerinin tutarlı kalması açısından bir nimettir, ancak 3. taraf lib'in yeni sürümleri geriye dönük uyumluluğa devam ederken hata düzeltmeleri ve yeni özellikler sunduğunda bir acıdır.
fris

1
"Bu, uzatma ve 3. parti lib sürümlerinin tutarlı kalması anlamında bir nimettir ..." Bilet bu! Onların değişiklikleri sizin değişikliklerinizdir. Composer sayesinde Magento 2'de bu biraz daha kolay.
Benmarks

1

Yani bir uzantı oluşturmak istiyorsunuz ve onu oluşturmak için harici bir kaynak / paket kullanıyorsunuz. Bence, uzantınızda kullandığınız paket ne olursa olsun, uzantınız Magento'nun en iyi uygulamalarını izlemelidir. Bu, tüm js, css, görüntüleri harici kaynaktan ayırmanız ve base\defaulttema paketi dizinlerine yerleştirmeniz gerektiği anlamına gelir .

başka bir deyişle, üçüncü taraf paket kaynaklarını yerleştirmek için bu tür benzersiz bir konum yoktur. Nihayetinde serin bir uzantı teslim ettiğinizde, uzantınızla ilgili tüm js, css ve resimler, başka bir geliştiricinin normalde bakacağı ve neredeyse her durumda base/defaulttema paketi olan bir yerde tutulmalıdır .

Kısacası

Tüm uzantısı js altına gelmelidir

skin\frontent\base\default\js\[your_extension]\[all_of_your_js_files]
skin\frontent\base\default\css\[your_extension]\[all_of_your_css_files]
skin\frontent\base\default\images\[your_extension]\[all_of_your_images]

//for third parties, you can create an inner directory, to specify it
skin\frontent\base\default\js\[your_extension]\[your_external_resource]\[resource_js_files]
skin\frontent\base\default\css\[your_extension]\[your_external_resource]\[resource_css_files]
skin\frontent\base\default\images\[your_extension]\[your_external_resource]\[resource_image_files]

Bu şekilde başka bir geliştirici, uzantınızın js, css ve görüntülerini (harici kaynaklarınızın da) kolayca bulabilir. Uzantı adı dizininizdeki harici kaynak dosyalarını belirtmek için fazladan bir alt dizin kullandığınızdan, diğerlerine, uzantınızın bazı üçüncü taraf paketlerine bağlı olduğu konusunda en iyi ipucunu verecektir.

Başka bir geliştiricinin bağımlılıklarınızı kolayca bulabilmesi için harici paketleri ayırmanızı ve bunları uzantınızın bir parçası haline getirmenizi öneririm. :-)

DÜZENLEME - 1

Site sahibiniz için uzantı yükünüzü oluşturmamalısınız. Uzantınızı doğru şekilde hizalayarak bu zorluktan kaçınabilirsiniz. Bu, ilgili tüm dosyaları belirtilen dizin konumlarına kaydederseniz, site sahibinin yapması gereken tek şey, uzantınızı alın ve ardından uzantınızı uygulama kök dizininden birleştirin. ie Uzantınızı doğru şekilde hizalayın. Böyle görünmeli.

/app
|_____code\community\Namespace\Module\...
|_____design
|        |_____frontend\base\defalt\...
|        |_____adminhtml\base\defalt\...

/skin
|_____frontend\base\default\js|css|images\[your_extension]\all_theme_related_files
|_____frontend\base\default\js|css|images\[your_extension]\all_theme_related_files

DÜZENLE - 2

Tüm Magento uygulamalarında (javascript kitaplığı veya php paketi vb.) Paylaşılması gereken bazı paketler varsa, bunları \lib dizine .

İki uzantının aynı kaynak paketlerine bağlı olması durumunda, yinelenen bir dosya olabileceği doğrudur. Aynı kaynak paketinin farklı sürümünü de kullanabilirler. Ancak temel olarak, uzantınız yalnızca uzantınızın kaynağını kullanmalıdır (ve varsayılan Magento'nun kaynaklarına güvenebilir) ve uzantınız bir üçüncü taraf uzantısının "genişleyen bir sürümü" değilse, diğer uzantının kaynaklarına güvenmemelidir.


Teşekkür ederim. Yanıtınız site sahibi tarafı yerine geliştirici bakış açısını destekliyor. Ama sanýrým Magento'da böyle mi? Üçüncü taraf arşivlerini / kütüphanelerini açmayı, tüm dosyaları orijinalinde olduğu gibi bir arada tutmayı kabul eden diğer CMS'leri biliyorum.
fris

1
Evet. Bir paket kaynağını ayırmanın sinir bozucu olduğunu biliyorum. Magento bunu istiyor. Bunun kolay bir yolu yok. Magento iyi uygulamalar "Hepiniz tutmalı diyor js, css, imagesiçinde base\defaultpaket". Ayrıca düzenleme kodumu da görün
Rajeev K Tomy

Merhaba Rajeev ... Harici kaynak / lib dosyalarını "your_extension" altına koymanın bir başka sonucu da, kaynak / lib'i de kullanabilen diğer uzantılar tarafından paylaşılamamasıdır. Böylece, aynı sayfaya yüklenmiş birden fazla kopya, muhtemelen farklı CLASHING sürümleri elde edersiniz. Ah!
fris

benim düzenlemelerimi görmek lütfen
Rajeev K Tomy

0

Magento'nun Magento Connect adında kendi paket yöneticisi var. Paketin nasıl görünmesi gerektiğini tam olarak anlamak için bu kılavuzu resmi belgelerden kontrol etmelisiniz. Yapıyı anladıktan sonra modülünüzü bir Magento kurulumundan paketleyebilirsiniz.


Cevabınız için teşekkür ederim ama istediğim şey tam olarak değil. Uzantımı nasıl paketleyeceğim ile ilgili değil, Magento dosya ağacında çekirdeğin veya uzantımın parçası OLMAYAN, ancak sistemin bir parçası olarak dahil edilmesi gereken 3. taraf dosyalarını nereye koyacağınızla ilgili. Kullanıcılara bu dosyaları nereye koymasını söyleyebilirim? 3. taraf dosyalar için standart bir nokta (veya noktalar) var mı?
fris

Aslında size gönderdiğim bağlantıyla ilgili. Js ve css, diğer uzantı dosyaları gibi paketler için kendi klasörlerine sahiptir. Php dosyaları kök lib klasörü altında veya bir lib klasörü içindeki modül klasörü içinde olabilir.
mbalparda

Tamam teşekkürler. Yani cevabınız: Evet Magento site kurucuları 3. taraf arşivini açmalı, PHP, JS, HTML ve CSS parçalarını bu arşivden çıkarmalı ve bu dosyaları Magento dosya ağacındaki uygun yuvalarda yeniden dağıtmalıdır. Site oluşturucunun, ilişkili uzantıların 3. taraf dosyalarını gerektiği şekilde 3. taraf dosyalarını içereceği bu amaç için belirlenmiş bazı ortak kararlaştırılmış dizinde tüm 3. taraf arşivinin tamamını açmasına izin vermek en iyi uygulama olarak kabul EDİLMEZ.
fris

Evet. Açıkladığınız her şey, dokümantasyonda açıklanan paketleme işleminin içindedir.
mbalparda

Bu belgeleri okudum ama sorumla ilgili hiçbir şey söylemiyor. Yalnızca geliştirdiğiniz ve paketlemek istediğiniz uzantının bir parçası olan dosyalar hakkında konuşur. Takvim, resim galerisi veya grafik paketi gibi uzantının parçası OLMAYAN 3. taraf dosyalarını nereye koyacağınızı söylemez. Bunları, geliştirebileceğiniz uzantı ile paketlemek istemeyebilirsiniz, böylece bağımsız olarak güncellenebilirler. Soru daha sonra üçüncü taraf dosyalarını nereye koyacağınız olur? Bunlar için en iyi uygulama yaklaşımı nedir?
fris

0

Temelde Magento muhafazasına o kendi yapısını kullanır .php, .phtml, js, css, imagesdosyaları.

Magento eklentisi geliştiricisi için magento yolunu takip etmeniz çok önemlidir. Bu bağlantıyı kontrol edin .

Yani,

  1. Kişisel .phpdosyalar altında gitmeli app/code/communityklasörün
  2. Kişisel jsdosyalar gidebilir jsklasör veya skin/frontend or adminhtml/your_theme_pack/your_theme/jsklasörün
  3. Kişisel cssdosyalar gidebilir skin/frontend or adminhtml/your_theme_pack/your_theme/cssklasörü
  4. Kişisel imagesdosyalar gidebilir skin/frontend or adminhtml/your_theme_pack/your_theme/imagesklasörü
  5. 'Html files should go touygulama / tasarım / kullanıcı arabirimi veya adminhtml / template` klasörünüz

PS ön ucu, uzantınızın ön mağaza için ve adminthml, uzantınızın yönetici alanı için olduğu anlamına gelir.

Bu dosyaları macentada tutmanın belirli bir yolu vardır, bu yüzden onları takip etmelisiniz.

Ayrıca istediğiniz / kopyalama işlevlerinin magento / zend çerçevesinde zaten mevcut olup olmadığını da kontrol ederim. Örneğin, pdf oluşturma, e-posta gönderme, xml okuma vb. Zaten magento'da oluşturulmuştur.

Bu yardımcı olur umarım.

Güncelleme 1

Dosyalarınızı bir yerde tutmak istiyorsanız, istediğiniz yerde tutabilirsiniz. Magento kökü içinde yeni klasör bile oluşturabilirsiniz. Ancak bu, bu dosyaları yürütürken sunucunuzu yükleyecek olan magento için en iyi uygulama değildir. Bu https://magentotherightway.com/ adresini kontrol etmek istiyorsunuz.


Bağlantı ve açıklama için teşekkürler. Ama uzantının kendisini sormuyorum. Uzantıya dahil olmayan 3. taraf kodunu nereye koyacağımı soruyorum. Bunun için ortak olarak mutabık kalınan TEK bir yer var mı?
fris

Dosyalarınızı bir yerde tutmak istiyorsanız, istediğiniz yerde tutabilirsiniz. Magento kökü içinde yeni klasör bile oluşturabilirsiniz. Ancak bu, bu dosyaları yürütürken sunucunuzu yükleyecek olan magento için en iyi uygulama değildir. Bu magentotherightway.com
Adarsh

Dağıtılmış uzantıları gerektiğini asla yüklemek localcodepool.
Benmarks
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.