I'm developing Magento 2.1 application with two logos:
- Light logo on the home page.
- Dark logo for all other pages.
By default, theme uses dark logo. I've created a custom page layout for home page. In this layout, I attempted to override logo's logo_file
argument. After flushing cache and all static assets, home page does not show logo defined in page layout.
Magento_Theme/layout/default.xml
...
<referenceContainer name="header-wrapper" htmlClass="bmg-header-container bmg-header-inverse container">
<!-- logo -->
<container name="header-logo-container" htmlTag="div" htmlClass="header-logo-container">
<referenceBlock name="logo">
<arguments>
<argument name="logo_file" xsi:type="string">images/logo_dark_sm.png</argument>
<argument name="logo_img_width" xsi:type="number">164</argument>
<argument name="logo_img_height" xsi:type="number">59</argument>
</arguments>
</referenceBlock>
</container>
<!-- /logo -->
...
</referenceContainer>
...
Attempt 1 – Magento_Theme/page_layout/custom_home.xml
...
<referenceContainer name="header-wrapper">
<referenceContainer name="header-logo-container">
<referenceBlock name="logo">
<arguments>
<argument name="logo_file" xsi:type="string">images/logo_light_sm.png</argument>
</arguments>
</referenceBlock>
</referenceContainer>
</referenceContainer>
...
Attempt 2 – Magento_Theme/page_layout/custom_home.xml
...
<referenceContainer name="header-logo-container">
<referenceBlock name="logo">
<arguments>
<argument name="logo_file" xsi:type="string">images/logo_light_sm.png</argument>
</arguments>
</referenceBlock>
</referenceContainer>
...
Any guidance would be much appreciated!
Best Answer
Create helper to change logo dynamically
Override default.xml in your theme and add helper in logo_file argument
In your helper, you can get logo based on current url like this.