Stylesheets (SCSS)
Create and Embed Custom Stylesheets
SCSS files should be stored in the Resources/public/css/
folder of a bundle and registered in the Resources/config/oro/assets.yml
configuration file:
css:
inputs:
- 'bundles/acmedemo/css/colors.scss'
- 'bundles/acmedemo/css/top-menu.scss'
- 'bundles/acmedemo/css/popups.scss'
- 'bundles/acmedemo/css/product-view-page.scss'
You can import Sass modules from node_modules. Just prepend them with a ~ to tell Webpack that this is not a relative import.
css:
inputs:
- '~prismjs/themes/prism-coy.css'
To apply changes, run the command:
php bin/console oro:assets:install --symlink
In this example, all four SCSS files from your bundle along with all the other files from the Oro Platform
and third-party bundles will be merged and dumped to the public/css/oro.css
file.
If you want to keep your CSS code separately, you can dump all your SCSS files to another compiled file.
To do that, define a new entry point in assets.yml
acme_styles: # entry point name
inputs:
- 'bundles/acmedemo/css/colors.scss'
- 'bundles/acmedemo/css/top-menu.scss'
- 'bundles/acmedemo/css/popups.scss'
- 'bundles/acmedemo/css/product-view-page.scss'
output: 'css/acme.css' # new output file path relative to the public/ folder
Use the corresponding placeholder to put compiled CSS file to the head of your document
placeholders:
placeholders:
head_style:
items:
acme_css:
order: 150
items:
acme_css:
template: "@AcmeDemo/acme_css.html.twig"
and finally, add the template for rendering the style tag.
<link rel="stylesheet" media="all" href="{{ asset('css/acme.css') }}" />
Warning
You can also put your code in CSS files which will be compiled together with SCSS files. However, keep in mind that the CSS loader is deprecated by the node-sass
npm module, and it will stop working after the module update.
Development Tips
The application uses a Webpack tool for assets building. It supports a quite useful feature of mapping compiled CSS to SCSS sources. So, in browser’s web inspector (e.g., Google Chrome), you can see which SCSS code is styling an element directly.
The assets building takes some time, so it is better to build only the theme that is currently required. To speed up the process, add a theme name after the build command.
php bin/console oro:assets:build admin.oro
Also, you can use the watch mode to rebuild assets automatically after some SCSS file is changed.
Just add the --watch
(or -w
) option to the build command.
php bin/console oro:assets:build --watch
Refer to Asset Commands for more information.