Create Module Folder Structure:
app / code / [Vendor] / [ModuleName]
app / code / [Vendor] / [ModuleName] / etc
app / code / [Vendor] / [ModuleName] / view / frontend / layou
Create Module files:
app / code / [Vendor] / [ModuleName] / registration.php
app / code / [Vendor] / [ModuleName] / etc / module.xml
app / code / [Vendor] / [ModuleName] / view / frontend / layout / cms_index_index.xml
registration.php
<?php
\ Magento\Framework\Component\ComponentRegistrar :: register (
\ Magento\Framework\Component\ComponentRegistrar :: MODULE ,
'[Vendor]_[ModuleName]' ,
__DIR__
);
module.xml
<?xml version="1.0"?>
<config xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "../../../../../vendor/magento/framework/Module/etc/module.xsd" >
<module name= "[Vendor]_[ModuleName]" setup_version= "0.0.1" />
</config>
cms_index_index.xml
<?xml version="1.0"?>
<page xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "../../../../../vendor/magento/framework/Module/etc/module.xsd" >
<head>
<css src= "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" src_type= "url" />
<script src= "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" src_type= "url" />
</head>
Enable Module (SSH to magento root):
php -f bin/magento module:enable --clear-static-content [Vendor]_[ModuleName]
php -f bin/magento setup:upgrad
Deploy static resources (SSH to magento root):
php bin/magento setup:static-content:deploy
Page source code result:
<link rel= "stylesheet" type= "text/css" media= "all" href= "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script type= "text/javascript" src= "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" ></script>
Adding CSS to a specific CMS page using Layout Update XML
If you want to insert css to only one specific cms page, there is opened Magento2 bug (https://github.com/magento/magento2/issues/4454), which dont allow you to insert <head> block using Layou XML update.
You need to update
vendor/magento/framework/View/Layout/etc/page_layout.xsd
You need to add
<xs:include schemaLocation= "urn:magento:framework:View/Layout/etc/head.xsd" />
<xs:include schemaLocation= "urn:magento:framework:View/Layout/etc/body.xsd" />
<xs:element name= "head" type= "headType" minOccurs= "0" maxOccurs= "unbounded" />
<xs:element name= "body" type= "bodyType" minOccurs= "0" maxOccurs= "unbounded" />
Complete file:
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema" >
<xs:include schemaLocation= "urn:magento:framework:View/Layout/etc/elements.xsd" />
<xs:include schemaLocation= "urn:magento:framework:View/Layout/etc/head.xsd" />
<xs:include schemaLocation= "urn:magento:framework:View/Layout/etc/body.xsd" />
<xs:complexType name= "pageLayoutType" >
<xs:sequence minOccurs= "0" maxOccurs= "unbounded" >
<xs:element ref= "referenceContainer" minOccurs= "0" maxOccurs= "unbounded" />
<xs:element ref= "container" minOccurs= "0" maxOccurs= "unbounded" />
<xs:element ref= "update" minOccurs= "0" maxOccurs= "unbounded" />
<xs:element ref= "move" minOccurs= "0" maxOccurs= "unbounded" />
<xs:element name= "head" type= "headType" minOccurs= "0" maxOccurs= "unbounded" />
<xs:element name= "body" type= "bodyType" minOccurs= "0" maxOccurs= "unbounded" />
</xs:sequence>
</xs:complexType>
<xs:element name= "layout" type= "pageLayoutType" >
<xs:unique name= "containerKey" >
<xs:selector xpath= ".//container" />
<xs:field xpath= "@name" />
</xs:unique>
</xs:element>
</xs:schema>
Now you can go to your CMS page and Layout update XML section add
<head>
<css src= "css/brands.css" />
</head>