Mengapa ada / base / default / layout dan / default / default layout?


10

Mengapa ada / base / default / layout dan / default / default layout? Ini tampaknya membingungkan dan berlebihan.

Jawaban:


7

Singkatnya default/defaultadalah warisan dari <1.4CE di mana itu adalah paket basis asli. Tema inti Magento masih dikirimkan dalam paket default - jadi itu belum tentu usang seperti warisan.

Karena default / default dapat ditimpa selama pemutakhiran CE, tidak disarankan Anda meletakkan file di sini - tetapi plugin yang mencoba kompatibel dengan <1.3 dapat sengaja menempatkan file di sini alih-alih basis / default.


Sumber: http://www.magentocommerce.com/knowledge-base/entry/magentos-theme-hierarchy#3.2


Jadi saya benar-benar dapat menghapus direktori / design / frontend / default dan semuanya masih berfungsi dengan baik? Maksud saya, saya hanya akan memiliki / base / default saja. Tidak apa-apa kan? Juga mengapa tidak ada / base / default di dalam / design / adminhtml atau / design / install?
CommaToast

Itu tentu saja mungkin. EE dikirimkan tanpa tema default / default.
philwinkle

1
default / * tidak digunakan kecuali Anda menentukan paket mereka adalah paket yang akan digunakan. Anda dapat dengan aman menghapus direktori jika Anda menginginkannya, tetapi disarankan bahwa direktori tersebut dapat dipulihkan selama peningkatan / pemasangan.
philwinkle

1
Anda dapat mengaktifkan petunjuk template dan melihat apakah ada blok yang menggunakan / default / default jika masih ragu.
Amasty

1
Saya dapat mengingat setidaknya beberapa kali di mana bisa beralih desain / paket defaultadalah alat debugging yang sangat berguna.
pspahn

5

Saya menemukan jawaban yang lebih baik di wiki Magento resmi . (Ini dari 2012, jadi saya tidak yakin apakah ada informasi yang ketinggalan jaman - tetapi tampaknya berlaku untuk 1.8.1 dari apa yang dapat saya katakan.) Sementara saya sangat menyarankan Anda membacanya secara lengkap (klik cetak tebal) tautan), izinkan saya meringkasnya di bawah ini.

Tentang apa /basesemua ini?

/base/defaultdiperkenalkan pada CE 1.4 dan EE 1.8 untuk mengkonsolidasikan semua fungsi front-end app-logic-type menjadi basis kode tunggal yang tidak boleh Anda edit. Ini memiliki struktur direktori yang sama dengan paket desain dengan tema default , tetapi tidak ada beberapa file CSS kunci sehingga mereka tidak merekomendasikan Anda untuk menjadikannya sebagai satu-satunya paket dan tema desain Anda.

Sebuah analogi yang bagus akan mengatakan bahwa /baseadalah /design/frontendapa yang /coreadalah untuk /code. Anda tidak seharusnya memodifikasi file di dalamnya /base. Alih-alih, Anda seharusnya memperluas fungsinya dalam paket desain khusus Anda sendiri , yang Magento akan lihat terlebih dahulu sebelum jatuh kembali /base/default- pertama akan melihat ke dalam /design/frontend/{custompackagename}/{customthemename}, kemudian jatuh kembali /design/frontend/{custompackagename}/default/, dan terakhir akan jatuh kembali /design/frontend/base/default.

Sungguh, seharusnya hanya dianggap sebagai /base- /defaultsubdirektori hanya ada karena sistem fallback Magento menyelesaikan perjalanannya melalui setiap paket desain dalam /default temanya . Agar jelas, paket desain adalah subdirektori di dalam /design/frontend, dan tema adalah subdirektori dalam paket desain. Ketika Magento melihat melalui paket desain, apakah itu /baseatau /{custompackagename}, /defaulttemanya akan selalu menjadi tempat terakhir yang akan dilihat Magento.

Oleh karena itu, karena tujuan utama /baseadalah untuk berfungsi sebagai titik akhir dalam sistem fallback, menurut tujuan itu tidak akan pernah memiliki tema lain selain /base/default.

Mengapa ada /defaultsaat itu?

Jadi mengapa masih ada /design/frontend/default/default? Dan mengapa tidak ada /design/adminhtml/base/default? Sejujurnya saya tidak tahu jawaban untuk pertanyaan kedua. Tetapi izinkan saya mencoba menjawab yang pertama.

Melupakan kompatibilitas warisan dll., Saya merasa mungkin akan lebih mudah untuk dipahami jika itu disebut /generic/defaultbukan /default/default. Jadi untuk keperluan diskusi ini saya akan merujuk /app/design/frontend/default/dan secara /app/skin/frontend/default/kolektif disebut "paket desain generik". Saya akan merujuk segala sesuatu di dalam direktori itu seolah-olah mereka dipanggil /app/design/frontend/genericdan /app/skin/frontend/generic. Karena (paling tidak dalam kasus frontend) sistem fallback Magento tidak lagi jatuh ke /app/design/frontend/default/, saya merasa bahwa terus menyebutnya "default" membingungkan karena kata itu menyiratkan sesuatu adalah bagian dari rantai fallback , tetapi paket desain generik tidak lagi bagian dari rantai fallback pada saat pengenalan/base. Oleh karena itu, menyebutnya "paket desain generik" alih-alih "paket desain default" mengurangi kebingungan ini dengan memberi tahu kami bahwa ya, itu hanya set tema generik yang datang dengan Magento secara gratis, tanpa menyiratkan itu bagian dari rantai cadangan. : D

Tercatat pada kemudian: the paket desain generik memiliki tema default dan beberapa tema non-default dalam: /blank, /iphone, dan /modern. Jika tema non-standar aktif maka file-nya akan menimpa apa pun dalam tema default, tetapi tidak peduli tema non-standar mana yang aktif, setiap bagian dari tema standar paket generik yang belum ditimpa oleh tema non-default masih bisa dijalankan, dan selanjutnya mereka akan menimpa apa pun di /base/default. Akhirnya setiap bagian non-override dari /base/defaultdijalankan.

Namun, secara kritis, tidak ada bagian dari paket desain generik yang dapat dijalankan jika Anda menggunakan paket desain khusus. Sistem fallback akan langsung dari {customdesignpackage}/{customthemename}ke {customdesignpackage}/defaultke base/default. (Kecuali jika saya tidak memahami ini dengan benar; perbaiki saya jika saya salah.)

Yang sedang berkata, menghapus paket desain generik sepenuhnya tanpa memiliki paket desain kustom di tempat akan menjadi tidak bijaksana karena paket desain generik memiliki beberapa elemen kulit yang masih diperlukan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.