Por que existe um layout / base / padrão / e um layout / padrão / padrão?

10

Por que existe um layout / base / padrão / e um layout / padrão / padrão? Isso parece confuso e redundante.

CommaToast
fonte

Respostas:

7

Em suma, default/defaulté um legado de <1.4CE, onde era o pacote base original. Os temas principais do Magento ainda são enviados no pacote padrão - portanto, não é necessariamente obsoleto , mas é legado.

Como padrão / padrão pode ser substituído durante as atualizações do CE, não é aconselhável colocar arquivos aqui - mas os plug-ins que tentam ser compatíveis com versões anteriores a <1.3 podem intencionalmente colocar arquivos aqui em vez de base / padrão.


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

philwinkle
fonte
Para que eu possa apagar completamente o diretório / design / frontend / default e tudo ainda funcionará perfeitamente? Quero dizer, eu teria apenas / base / padrão apenas. Tudo bem, certo? Além disso, por que não existe / base / default dentro de / design / adminhtml ou / design / install?
CommaToast
Certamente é possível. O EE é enviado sem o tema padrão / padrão.
philwinkle
1
o padrão / * não é usado, a menos que você especifique que o pacote é o pacote a ser usado. Você pode remover o diretório com segurança, se desejar, mas saiba que ele pode ser restaurado durante as atualizações / instalações.
philwinkle
1
Você pode ativar as dicas de modelo e ver se algum bloco usa / default / default se ainda houver dúvida.
Amasty 29/07
1
Lembro-me de pelo menos algumas vezes em que poder mudar o design / pacote defaultera uma ferramenta de depuração muito útil.
Pspahn 29/07
5

Encontrei uma resposta ainda melhor no wiki oficial do Magento . (É de 2012, então não tenho certeza se alguma das informações está desatualizada - mas parece ser aplicável à 1.8.1 do que posso dizer.) Embora eu recomendo que você a leia na íntegra (clique no negrito link), deixe-me resumir abaixo.

O que é isso /basetudo?

/base/defaultfoi introduzido no CE 1.4 e no EE 1.8 para consolidar toda a funcionalidade de front-end do tipo lógica de aplicativo em uma única base de código que você nunca deve editar. Ele tem a mesma estrutura de diretórios que um pacote de design com um tema padrão , mas faltam alguns arquivos CSS principais para que eles não recomendem que você o tenha como seu único pacote e tema de design.

Uma grande analogia seria dizer que /baseé o /design/frontendque /coreé necessário /code. Você não deve modificar os arquivos dentro /base. Em vez disso, você deve estender sua funcionalidade em seu próprio pacote de design personalizado , no qual o Magento examinará primeiro antes de voltar a funcionar /base/default- primeiro ele irá procurar /design/frontend/{custompackagename}/{customthemename}, depois voltará a funcionar /design/frontend/{custompackagename}/default/e, por fim, voltará a funcionar /design/frontend/base/default.

Realmente, deve-se pensar apenas como /base- o /defaultsubdiretório está lá apenas porque o sistema Magento fallback completa sua jornada através de cada pacote de design em seu /default tema . Para ser claro, um pacote de design é um subdiretório dentro /design/frontende theme é um subdiretório dentro de um pacote de design. Quando o Magento olha através de um pacote de design, seja ele /baseou não /{custompackagename}, o /defaulttema sempre será o último local em que o Magento ficará.

Portanto, como o objetivo principal de /baseé servir como ponto final no sistema de fallback, de acordo com esse objetivo, ele nunca terá outro tema senão /base/default.

Por que existe um /defaultentão?

Então, por que ainda existe um /design/frontend/default/default? E por que não existe um /design/adminhtml/base/default? Para ser sincero, não sei a resposta para a segunda pergunta. Mas deixe-me tentar responder à primeira.

Esquecendo a compatibilidade de legado etc., acho que seria muito mais fácil entender se fosse chamado em /generic/defaultvez de /default/default. Portanto, para os fins desta discussão, vou me referir /app/design/frontend/default/e /app/skin/frontend/default/coletivamente como o "pacote de design genérico". Vou me referir a tudo dentro desses diretórios como se fossem chamados /app/design/frontend/generice /app/skin/frontend/generic. Como (pelo menos no caso do front-end) o sistema de fallback do Magento não volta mais /app/design/frontend/default/, sinto que continuar chamando-o de "padrão" é confuso, pois essa palavra implica que algo faz parte da cadeia de fallback , mas o pacote de design genérico não é mais parte da cadeia de fallback a partir da introdução de/base. Portanto, chamá-lo de "pacote de design genérico" em vez de "pacote de design padrão" alivia essa confusão ao nos dizer que sim, é apenas o conjunto de temas genéricos que acompanham o Magento gratuitamente, sem implicar que faz parte da cadeia de fallback. : D

Continuando então: o pacote de design genérico tem um tema padrão e vários temas não padrão interior: /blank, /iphone, e /modern. Se um tema não padrão estiver ativo, seus arquivos substituirão qualquer coisa no tema padrão, mas não importa qual tema não padrão esteja ativo, qualquer parte do tema padrão do pacote genérico que não tenha sido substituída pelo tema não padrão ainda serão executados e, além disso, eles substituirão qualquer coisa /base/default. Finalmente, qualquer parte não substituída da /base/defaultexecução é executada.

No entanto, criticamente, nenhuma parte do pacote de design genérico será executada se você estiver usando um pacote de design personalizado. O sistema de fallback vai direto de {customdesignpackage}/{customthemename}para {customdesignpackage}/defaultpara base/default. (A menos que não esteja entendendo isso corretamente; corrija-me se estiver errado.)

Dito isto, excluir o pacote de design genérico completamente sem ter um pacote de design personalizado no lugar seria imprudente, pois o pacote de design genérico possui alguns elementos de capa que ainda são necessários.

CommaToast
fonte