Como ativar o tema de administração personalizado no Magento 2

9

Segui as instruções aqui: Como criar um tema de administrador para o Magento2

e aqui: Como alterar o tema de administração de back-end no Magento 2.0.7 +

e ainda não entendo o que devo fazer para que meu tema apareça no back-end. Eu criei meu tema app/design/adminhtml/Vendor/themenamee ele tem um theme.xmle um registration.php(o mesmo que o meu tema de front-end, que está funcionando muito bem). No entanto, as instruções acima falam sobre um etc/di.xmlque eu não tenho idéia de onde colocar (ou essa é a solução?)

O Google não me levou a lugar algum, os documentos oficiais do Magento 2 são péssimos (como sempre), então não há ajuda lá.

Então, resumo summa: como ativar meu tema de administrador personalizado?

Kampaviineri
fonte

Respostas:

12

Obrigado @Alex! Sua solução funcionou para mim! Eu posso ver pela fonte que a área de administração está usando meu tema agora.

Passos:

  1. crie um novo tema no app/design/adminhtml/Vendor/Themename. Nesse diretório, crie um theme.xml:

<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd"> <title>My Theme Tile</title> <parent>Magento/backend</parent> </theme>

E um registration.php:

<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::THEME, 'adminhtml/Vendor/Themename', __DIR__ );

  1. Crie um novo módulo para implantar seu tema ou use algum módulo existente; de qualquer maneira, em seus módulos, module.xml adicione o sequenceelemento xml para garantir que seu tema seja carregado por último.

<config> <module name="My_Custommodule" setup_version="2.0.0"> <sequence> <module name="Magento_Theme"/> </sequence> </module> </config>

e em seus módulos personalizados, etc/di.xmladicione o fragmento que especifica o tema do administrador a ser usado: <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\Theme\Model\View\Design"> <arguments> <argument name="themes" xsi:type="array"> <item name="adminhtml" xsi:type="string">Vendor/Themename</item> </argument> </arguments> </type> </config>

  1. corra setup:upgradee pronto! Verifique qual tema está sendo usado pela fonte de visualização: todos os arquivos css e js agora devem ser carregados a partir de/pub/static/adminhtml/Vendor/Themename/[language]/....

No entanto, todas as páginas de administração parecem ter estilos ausentes . Estou no modo de desenvolvedor e fiz um setup:static-content:deploy [languages](sem erros), mas isso não resolveu o problema. Eu tive esse mesmo problema no frontend também, mas não consigo me lembrar de como o corrigi. Preciso copiar arquivos js e css do magento-backendmódulo para fazer isso funcionar?

PROBLEMA RESOLVIDO : parece que encontrei este problema: Maneira correta de atualizar o pai de um tema no Magento 2 onde, se eu instalar meu tema e depois mudar o pai para outra coisa theme.xml, ele não será atualizado no banco de dados e não será necessário efeito. Inicialmente, eu coloquei o Magento / blank no elemento pai, e isso obviamente não funcionou, e alterá-lo para Magento / back-end mais tarde também não ajudou (como no link acima). Então, entrei no banco de dados e configurei o parent_id para o meu tema manualmente. E assim, tudo funciona :)

Kampaviineri
fonte
Eu posso ver (comparando com outra instalação com o tema padrão do administrador) que /pub/static/adminhtml/Magento/backend/[language]/css/styles.css não é mencionado na fonte. Os vendor/magento/magento-backend/viewarquivos de layout e de layout também não são mencionados lá. Aparentemente, está especificado, vendor/magento/theme-adminhtml-backend/Magento_Backend/layout/default.xmlmas como faço para aparecer também no meu tema?
Kampaviineri
Seu tema é herdado do Magento Backend ou não?
8284 Alex
@ Alex sim, como você pode ver no meu theme.xmlacima, e agora eu tenho quase trabalhando: eu criei um app/design/adminhtml/Vendor/Themename/Magento_Theme/layout/default.xmle nesse arquivo eu especifiquei <css src="css/styles.css" /> Então eu copiei o arquivo css para o meu tema vendor/magento/theme-adminhtml-backend/web/css/styles.csse agora eu posso vê-lo a fonte e as coisas estão melhor. No entanto, algo crucial ainda parece estar faltando, o back-end agora tem estilos, mas o layout está todo ferrado.
Kampaviineri
Podemos ter um exemplo de link do tema Admin no GitHub?
Ankit Shah
2

Para aplicar o tema Admin, você precisa criar um novo módulo e especificá-lo lá:

  1. Verifique se você está no modo de desenvolvedor.
  2. Crie um MyVendor_MyBackendThememódulo separado . (semelhante ao https://github.com/magento/magento2-samples/tree/master/sample-module-minimal por exemplo, mas não se esqueça de editar o module.xmle registration.phpse você decidir usá-lo). Em module.xmlespecifique que o Magento_Thememódulo carrega antes do módulo adicionando:
    <nome do módulo = "MyVendor_MyBackendTheme" setup_version = "2.0.1">
        <sequência>
            <nome do módulo = "Magento_Theme" />
        </sequence>
    </module>
  1. Adicione o <module>/etc/di.xml, onde adicione o seguinte nó:
<type name = "Magento \ Theme \ Model \ View \ Design">
    <argumentos>
         <nome do argumento = "themes" xsi: type = "array">
             <nome do item = "adminhtml" xsi: type = "string"> your_vendor_dir / your_theme_dir </item>
         </argument>
     </arguments> 
</type>
  1. Execute o magento setup:upgradecomando

  2. Abra o Admin e veja o novo tema aplicado (espero :):).

Alex
fonte
ps: nós planejamos adicionar o doc oficial em breve
Alex
Então você quer dizer que tenho que criar um módulo completo (além do meu tema) apenas para implantar o meu tema de administrador? Que loucura é essa !?
Kampaviineri 07/07
Eu tenho outro módulo que criei para esta loja virtual, presumo que posso usá-lo para especificar o tema do administrador. Vai deixar você sabe como isso panelas para fora :)
Kampaviineri
Sim, é claro que você pode usar o módulo personalizado existente.
8286 Alex
1
HI @Alex Obrigado pela explicação. Podemos ter um exemplo de tema de administração no github?
Ankit Shah