Magento2 - custom _theme.xml
Question
I tried to change the _theme.xml of a custom theme based on the blank theme like described in this article: http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/css-topics/css-practice.html
But if I refresh the frontend it doesn't changed. The cache is disabled.
Heres my code: composer.json
{
"name": "my/blank",
"description": "N/A",
"require": {
"php": "~5.5.0|~5.6.0|~7.0.0",
"magento/theme-frontend-blank": "100.0.*",
"magento/framework": "100.0.*"
},
"type": "magento2-theme",
"version": "100.0.2",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"autoload": {
"files": [
"registration.php"
]
}
}
registration.php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::THEME,
'frontend/my/blank',
__DIR__
);
theme.xml
<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
<title>My Blank</title>
<parent>Magento/blank</parent>
<media>
<preview_image>media/preview.jpg</preview_image>
</media>
Solution
For custom theme apply please follow below steps
Create a theme directory
To create the directory for your theme:
- Go to /app/design/frontend.
- Create a new directory named according to your vendor name: /app/design/frontend/.
Under the vendor directory, create a directory named according to your theme. (e.g. mytheme)
in theme directory structure looks like this
app/design/frontend/ ├── <Vendor>/ (my) │ │ ├──...<theme>/ (themename) │ │ │ ├── ...etc │ │ │ ├── ...media │ │ │ ├── ...web | | | | ├── ...css | | | | ├── ...images | | | | ├── ...js │ │ │ ├── registration.php │ │ │ ├── theme.xml
Declare your theme
Add or copy from an existing theme.xml to your theme directory
app/design/frontend/<Vendor>/<theme>
Configure it using the following example:
<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
<title>blank</title> <!-- your theme's name -->
<parent>Magento/blank</parent> <!-- the parent theme, in case your theme inherits from an existing theme -->
<media>
<preview_image>media/preview.jpg</preview_image> <!-- the path to your theme's preview image -->
</media>
</theme>
Register your theme
in your theme directory add a registration.php file with the following content:
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::THEME,
'frontend/<Vendor>/<theme>',
__DIR__
);
Where is your vendor name, is the theme code.
Configure Your theme
<your Magento install dir>dev\tools\grunt\configs\themes.js
themename: {
area: 'frontend',
name: 'my/themename',
locale: 'en_US',
files: [
'css/styles-m',
'css/styles-l'
],
dsl: 'less'
},
flush your cache apply your theme from admin Store > configuration > design
OTHER TIPS
once you create custom theme two thing has to be done
1.clear cache
2. login to admin side then only it will add your custom theme