Como criar um layout de módulo para ser exibido em todos os temas


13

Aqui está a situação: Eu tenho vários módulos criados por você, todos testados e funcionando usando o tema padrão. Então nós compramos e instalamos um novo tema. Mudou para o novo tema e os módulos não são mostrados. Após vários testes de tentativa / falha, descobri que precisava copiar os arquivos de layout e modelo correspondentes para as pastas correspondentes do tema instalado recentemente.

Então, minha pergunta é: o que devo fazer para que todos os meus módulos funcionem com qualquer tema instalado após a instalação do módulo?


1
Se você colocar seus arquivos de layout no design / frontend / base / default / ... eles vai ser mostrado qualquer que seja o tema é
Sander Mangel

Respostas:


17

Coloque tudo no base/default caminhos.

Exemplo:

app/design/frontend/base/default

skin/frontend/base/default


Ai! não pensou nisso, você está certo, testará assim que chegar ao escritório.
Yaroslav

+1 - Existem muitos módulos rotulados como "comunidade" que não seguem essa prática e deveriam.
Psp2

O modelo base foi introduzido no Magento 1.4. para resolver exatamente esse problema. Nas versões anteriores, copiar os arquivos de modelos, se você não estivesse usando o pacote padrão, era a maneira de fazê-lo.
Kristof at Fooman

5

A dura verdade é que você não pode realmente garantir que eles serão. Colocar seus arquivos base/default(ou default/defaultse eles substituem os modelos principais - como você não deseja sobrescrever arquivos básicos com uma instalação de módulo, embora isso o force a manter duplicatas para a edição empresarial) garantirá que eles se tornem os substitutos, mas os arquivos de tema serão sempre seja a prioridade de nível mais alto.

A maioria dos módulos vem com um guia de instalação, que inclui a menção de copiar os arquivos de modelo para o tema do usuário, se eles tiverem um personalizado. É o melhor que você pode fazer.


4

Uma coisa que usamos algumas vezes é o modlue de [Fabrizio Branca] [1] [Custom Fallback] [2]. É um módulo muito útil para especificar sua própria hierarquia de fallback de tema personalizado. Uma coisa que você pode fazer é especificar:

  1. custom/theme

  2. base/default

  3. default/default

Em seguida, qualquer módulo que coloque seus próprios modelos no default/defaulttema. Não funcionará se eles estiverem tentando substituirbase/default pacotes.

Você pode especificar qualquer número de pacotes / temas na hierarquia de fallback personalizada.

[1]: http://www.fabrizio-branca.de/ [2]: http://www.fabrizio-branca.de/custom-design-fallbacks-in-magento.html


2

Qualquer arquivo de modelo e layout base/defaultserá carregado, a menos que seja substituído em algum lugar ao longo do caminho. No entanto, se o seu módulo personalizado for um widget de algum tipo, verifique se ele é repetido sempre que necessário. Se, por exemplo, você estiver fazendo alterações exibidas na página do produto getChildHtml, essas chamadas também deverão estar no tema correspondente. Se, no entanto, seus modelos de módulo são páginas por si só e não são carregados base/default, algo bloqueia a configuração do layout e você deve encontrar o que.


Muito interessante o comentário sobre o getChild, tenho de fato alguns telefonemas desse tipo.
Yaroslav

1

Não há uma resposta simples para isso. Depende dos módulos que você possui. Por exemplo, algumas empresas de módulos, substituindo os arquivos principais. Portanto, você deve primeiro verificar quais arquivos disponível nos app/etc/modulese app/code/local/Mage, app/code/community/Magepastas. Como você deve saber, a primeira pasta é uma pasta de inicialização do módulo que você pode desativar ou ativar os módulos relacionados aos arquivos xml. As duas últimas pastas (se disponíveis) são pastas de substituição de código principal.

Em seguida, abra um dos arquivos xml desse etc/modulesdiretório disponível . Você verá algo como abaixo:

<?xml version="1.0"?>
<config>
<modules>
    <Company_Namespace>
        <active>true</active>
        <codePool>local</codePool>
    </Company_Namespace>
</modules>

Aqui estão as partes importantes são Companye Namespace. Ao visitar as pastas app/code/localou app/code/community, você verá uma pasta nomeada Companye seguida por uma subpasta denominada Namespace.

Ao pesquisar, Namespacevocê verá uma subpasta chamada /etc. Esta pasta mantém o arquivo de configuração relacionado ao módulo config.xml. Este arquivo possui linhas de configuração relacionadas ao módulo. Você pode consultar quais arquivos relacionados a este módulo.

Como eu disse na minha primeira linha, é difícil de gerenciar.


Eu acho que você perdeu o objetivo da pergunta. Ele estava perguntando sobre atualizações de layout. A melhor prática é usar um caminho base / padrão / yourmodule.
Mark Shust
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.