Structure PHP
Le thème Momentum comprend plusieurs fichiers PHP déjà préconfigurés qui respectent la structure hiérarchique de WordPress. Voici un schéma présentant cette structure :
Voici une liste des fichiers PHP et une courte description de chacun :
- 404.php : La page 404 par défaut.
- archive.php : La section des archives par défaut, pour les articles de blogs archivés par exemple.
- footer.php : Le footer par défaut.
- functions.php : Le fichier de base de tous les thèmes WordPress. Ce dernier appel d’autre sous-fichiers qui sont dans le dossier /configure :
- acf.php, admin.php, configure.php, cpt-taxonomy.php, js-css.php,
- shortcodes.php et utilities.php. C’est l’ensemble de ces fichiers qui constituent les fonctions et la configuration PHP du thème.
- header.php : Le header par défaut.
- home.php : La page d’accueil par défaut.
- index.php : Le fichier le plus générique si aucun autre template n’est trouvé. Le dernier template de la liste, il ne devrait pas servir en général.
- page-commander.php : Template de commande Woocommerce.
- page-panier.php : Template de panier Woocommerce.
- page.php : Le fichier le plus important, c’est dans celui-ci que tout le contenu pour monter les pages du site web devrait se retrouver.
- search.php : Template de base pour les résultats de recherche. NOTE : Il faut ajouter l’extension ACF better search : https://wordpress.org/plugins/acf-better-search/ pour pouvoir chercher dans les contenus dynamiques ACF pro.
- searchform.php : Le formulaire de recherche.
- searchpage.php : La page qui contient/appel le formulaire de recherche.
- single-product.php : Page d’un produit simple Woocommerce.
- single.php : Article de blog ou autre contenu s’apparentant à ce template.
- woocommerce.php : Template de base Woocommerce qui prend la place par défaut de tous les autres template. Voir les commentaires dans ce fichier pour mieux comprendre.
Le dossier /woocommerce/… comprend tous les templates PHP Woocommerce. Ces fichiers remplacent par défaut ceux de Woocommerce directement. Veuillez vous référer à la documentation de Woocommerce afin de comprendre comment modifier ceux-ci. Normalement, il ne devrait pas y avoir de modifications à faire dans ces fichiers, sauf pour répondre à un besoin spécifique d’un client. Momentum offre une base solide pour utiliser woocommerce en prenant pour acquis que le modèle Woocommerce est respecté.
Navigation WordPress
[php]
function _custom_theme_register_menu()
{
register_nav_menus(
array(
‘main-menu’ => __( ‘Menu principal’ ),
//’menu-footer’ => __( ‘Menu footer’ ),
)
);
}
add_action( ‘init’, ‘_custom_theme_register_menu’ );
[/php]
Pour appeler un menu défini par ce fichier, vous pouvez vous référer à header.php qui fait déjà référence à main-menu par le code suivant.
[php]
[/php]
Il suffit de remplacer « main-menu » par « menu-footer » pour appeler un autre menu. Vous pouvez aussi changer la classe CSS que ce menu utilisera.
La structure des menus est définie par la fonction Cinetic_Walker dans le fichier : /configure/configure.php. Si vous avez besoin de modifier cette structure je vous invite à vous référer à la documentation WordPress à ce sujet.
Pagination WordPress
Section à définir…
Structure Javascript
Les fichiers JS se trouvent dans le dossier : /assets/src/js/… . main.js est le fichier principal de la structure JS de Momentum. C’est ce fichier qui appelle tous les autres modules. Les fonctions sont divisées dans plusieurs autres fichiers dont le nom est précédé par « _ » exemple : _accordion.js . Ces autres fichiers sont des sous-fichiers qui comprennent des fonctions spécifiques à des éléments comme dans le cas présent des accordéons. Nous verrons en détail ces fichiers plus bas.
main.js et ses sous-fichiers se composent de la façon suivante :
Importation de « packages » NodeJS
JQuery, pour écrire certaine fonctionne plus simplement : https://api.jquery.com/
BarbaJS, gestion des transitions de pages en PJax, celà permet de transformer le site web en single page app (comme avec React ou Angular) : https://barba.js.org/docs/getstarted/intro/
GSAP, pour des animations web plus poussées : https://greensock.com/docs/
Locomotive Scroll, pour des animations basées sur le scrolling de la page : https://github.com/locomotivemtl/locomotive-scroll
JS
[php]
// Packages
import $ from ‘jquery’;
import barba from ‘@barba/core’;
import gsap from ‘gsap’;
import LocomotiveScroll from ‘locomotive-scroll’;
[/php]
Importation de sous-fichiers
JS
[php]
// Files
const pagetransition = require(‘./_transition’);
const slider = require(‘./_slider’);
const accordion = require(‘./_accordion’);
const navigation = require(‘./_navigation’);
const refreshPlugins = require(‘./_refreshPlugins’);
const excludeLinks = require(‘./_excludeLinks’);
const fixPageHeight = require(‘./_fixPageHeight’);
[/php]
Le reste des fonctions afin de faire fonctionner les modules et les sous-fichiers.
Ajouter une nouvelle librairie NODE JS
Étape 1 : Trouvez une librairie que vous voudriez ajouter à votre projet. Exemple : https://github.com/OwlCarousel2/OwlCarousel2 Owl Carousel (Une alternative à Swiper Slider). Veuillez bien lire leur documentation et tentez de trouver comment installer le module avec NODE (npm).
JS dans le fichier _carousel.js que vous venez de créer.
[php]
import ‘owl.carousel’;
[/php]
Étape 4 : Créez une nouvelle fonction dans le fichier. C’est dans cette nouvelle fonction que nous allons définir les options d’Owl Carousel, toujours en se référant à leur documentation.
[php]
function initCarousel() {}
[/php]
Étape 5 : Définir les options dans la fonction initCarousel()
[php]
function initCarousel() {
$(‘.c-carousel’).owlCarousel({
items: 1,
nav: true,
dots: false,
loop: false,
// autoplay: true,
// autoplayTimeout: 5000,
// autoplayHoverPause: ‘true’,
smartSpeed: 500,
// Classes
refreshClass: ‘c-carousel-refresh’,
loadingClass: ‘c-carouel-loading’,
loadedClass: ‘c-carousel-loaded’,
rtlClass: ‘c-carousel-rtl’,
dragClass: ‘c-caoursel-drag’,
grabClass: ‘c-carousel-grab’,
stageClass: ‘c-carousel-stage’,
stageOuterClass: ‘c-carousel-stage-outer’,
navContainerClass: ‘c-carousel-nav’,
navClass: [‘c-carousel-prev’, ‘c-carousel-next’],
dotClass: ‘c-carousel-dot’,
dotsClass: ‘c-carousel-dots’,
autoHeightClass: ‘c-carousel-height’,
itemClass: ‘c-carousel-item’,
// Nav Buttons
navText: [‘ ‘, ‘ ‘],
responsive : {
// breakpoint from 0 up
700 : {
items: 2,
},
1000 : {
items: 3,
}
}
});
}
[/php]
Étape 6 : Ensuite, vous devez exporter votre fonction afin de l’importer dans le fichier main.js.
[php]
module.exports = {
initCarousel
};
[/php]
Étape 7 : Dans main.js, importez le fichier _carousel.js avec les autres fichiers.
[php]
// Files
const pagetransition = require(‘./_transition’);
const slider = require(‘./_slider’);
const accordion = require(‘./_accordion’);
const navigation = require(‘./_navigation’);
const refreshPlugins = require(‘./_refreshPlugins’);
const excludeLinks = require(‘./_excludeLinks’);
const fixPageHeight = require(‘./_fixPageHeight’);
const carousel = require(‘./_carousel’);
[/php]
Étape 8 : Dans barba.hooks.after importez votre fonction initCarousel. Faites la même chose dans init() : premier chargement de la page.
[php]
// Barba After enter
barba.hooks.after(() => {
// Give a small delay before reinit external files / functions
setTimeout(() => {
// Init Slider
slider.slidersInit();
// Init Accordions
accordion.accordionsInit();
accordion.accordionFixPageHeight();
// Init Navigation
navigation.navigationInit();
// Refresh Plugins
refreshPlugins.refreshPlugins();
// Fix Page height
fixPageHeight.fixPageHeight(scroll);
// Init Carousel
carousel.initCarousel();
}, 150);
// App initial setup
const App = {
// App.init
init() {
// Give a small delay before reinit external files / functions
setTimeout(() => {
// Init Slider
slider.slidersInit();
// Init Accordions
accordion.accordionsInit();
accordion.accordionFixPageHeight();
// Init Navigation
navigation.navigationInit();
// Fix Page height
fixPageHeight.fixPageHeight(scroll);
// Exclude pages from barba
excludeLinks.excludeLinks();
}, 450);
[/php]
Étape 9 : Importer le CSS dans le fichier main.scss. Créez vous-même un nouveau fichier _carousel.scss dans le dossier /objects et mettez-y les styles du fichier CSS de votre nouvelle librairie.
SCSS
[php]
@import “objects/carousel”;
[/php]
Étape 10 : Vous pouvez maintenant utiliser Owl Carousel :
PHP
[php]
[/php]
NOTE : Vous pouvez vous référer au projet ESM qui utilise justement Owl Carousel à la place de Swiper Slider, si vous souhaitez analyser un fonctionnement plus complexe.
BarbaJS
Barba.js est une petite bibliothèque facile à utiliser qui vous aide à créer des transitions fluides entre les pages de votre site Web. Il permet à votre site Web de fonctionner comme un SPA (application à page unique) et aide à réduire le délai entre vos pages, à minimiser les requêtes HTTP du navigateur et à améliorer l’expérience Web de votre utilisateur.
Documentation de BarbaJS
https://barba.js.org/docs/getstarted/intro/
Momentum utilise Barba pour gérer les transitions de pages. Il faut réinitialiser les fonctions à chaque transition de page, car Barba ne recharge pas les scripts entre les pages. Il faut donc le faire manuellement. Le point négatif est qu’il rend l’utilisation des plugins difficile, car les scripts des plugins ne sont pas rechargés entre les pages. La solution simple est d’exclure de Barba les pages qui contiennent des plugins afin d’obliger un chargement complet de la page pour initialiser les scripts des plugins. Si le site utilise beaucoup de plugins, je conseil même de ne pas utiliser Barba pour ce projet.
La structure est simple, au premier chargement du site web c’est dans la fonction suivante qu’il faut initialiser toutes les fonctions qu’on veut :
JS
[php]
// App initial setup
const App = {
// App.init
init() {
[/php]
Cette fonction est appelée quand le site web est prêt et complètement chargé, par cette autre fonction. On regarde si le CSS est complètement chargé. Si c’est le cas, on appelle la fonction init() afin d’initialiser les fonctions définies dans cette fonction.
[php]
// Website is loaded
window.onload = () => {
// Theme CSS file
const $style = document.getElementById(‘theme-css’);
// Check if CSS is loaded
if ($style.isLoaded) {
// Init the app
App.init();
} else {
$style.addEventListener(‘load’, () => {
// Init the app
App.init();
});
}
};
[/php]
C’est la fonction barba.init() qui met en marche Barba et gère les transitions de page qui sont dans le fichier _transition.js.
[php]
// Barba init & transitions setup
barba.init({
sync: true,
prefetchIgnore: true,
transitions: [{
async leave() {
const done = this.async();
pagetransition.transitionLeave($(‘[data-barba-namespace]’));
await delay(1200);
done();
},
async enter() {
pagetransition.transitionEnter($(‘[data-barba-namespace]’));
},
async once() {
pagetransition.transitionFirstLoad($(‘[data-barba-namespace]’));
}
}]
});
[/php]
Cette fonction prépare le changement de page en ajoutant les classes de transition sur la balise HTML et en enlevant l’instance de Locomotive Scroll dans la page qui s’apprête à changer.
[php]
// Barba Before leave
barba.hooks.before(() => {
// Destroy current Locomotive Scroll Instance
scroll.destroy();
// Site is loading
$(‘html’).removeClass(‘is-loaded is-ready’);
$(‘html’).addClass(‘is-loading’);
});
[/php]
C’est dans barba.hooks.after, après la transition qu’on appelle les fonctions qui doivent être réinitialisées.
[php]
// Barba After enter
barba.hooks.after(() => {
// Give a small delay before reinit external files / functions
setTimeout(() => {
// Init Slider
slider.slidersInit();
// Init Accordions
accordion.accordionsInit();
accordion.accordionFixPageHeight();
// Init Navigation
navigation.navigationInit();
// Refresh Plugins
refreshPlugins.refreshPlugins();
// Fix Page height
fixPageHeight.fixPageHeight(scroll);
// Init Carousel
carousel.initCarousel();
}, 150);
setTimeout(() => {
$(‘html’).addClass(‘is-loaded is-ready’);
$(‘html’).removeClass(‘is-loading’);
$(‘html’).removeAttr(‘style’);
// Exclude pages from barba
excludeLinks.excludeLinks();
}, 300);
// Create new Locomotive Scroll after new page is loaded
scroll = new LocomotiveScroll({
el: document.querySelector(‘[data-scroll-container]’),
smooth: true
});
// Potentially fix some Locomotive Scroll madness
window.dispatchEvent(new Event(‘resize’));
});
[/php]
Pour mieux comprendre BarbaJS je vous invite à lire la documentation suivante :
Locomotive Scroll
Détection d’éléments dans la fenêtre d’affichage et défilement fluide avec effets de parallaxe. « Scroll-hijacking » est une pratique controversée qui peut entraîner des problèmes d’utilisabilité, d’accessibilité et de performances. Veuillez utiliser de manière responsable.
Documentation
https://github.com/locomotivemtl/locomotive-scroll
Si le projet Momentum utilise Locomotive Scroll, chaque
[php]
Voici un exemple rapide de « parallax » avec Locomotive Scroll. « data-scroll-speed »
PHP
[php]
What’s up?
[/php]
Pour un usage plus complexe, veuillez vous référer à la documentation de Locomotive Scroll.
Swiper Slider
Voici comment déclarer un nouveau slider en javascript dans le fichier « _slider.js »
JS
[php]
if ($(‘.swiper-container’).length) {
const swiper = new Swiper(‘.swiper-container’, {
grabCursor: true,
// If we need pagination
pagination: {
el: ‘.swiper-pagination’
},
// Navigation arrows
navigation: {
nextEl: ‘.swiper-button-next’,
prevEl: ‘.swiper-button-prev’,
},
scrollbar: {
el: ‘.swiper-scrollbar’,
draggable: true,
},
});
swiper.init();
}
[/php]
Pour toute autre question, ou pour voir l’ensemble des options offertes par Swiper Slider vous pouvez vous référer à la documentation suivante.
Accordéons
Section à définir
Navigation
La navigation est dépendante du fichier JS « _navigation.js ». C’est dans ce fichier que les fonctions liées à la navigation se trouvent.
[php]
function navigationInit() {
// Search
$(‘.c-header_nav_search-button’).on(‘click’, (/* event */) => {
if (!$(‘.c-header_search’).hasClass(‘is-active’)) {
$(‘.c-header_search .c-form_input’).focus();
}
// $(event.currentTarget).toggleClass(‘is-active’);
$(‘.c-header_search’).toggleClass(‘is-active’);
$(‘.o-mini-cart, .c-header_nav_cart-button’).removeClass(‘is-active’);
});
// Main reset
$(‘main’).on(‘click’, () => {
$(‘.c-header_search’).removeClass(‘is-active’);
$(‘.o-mini-cart, .c-header_nav_cart-button’).removeClass(‘is-active’);
});
// Toggler
$(‘.c-header_nav_toggler’).on(‘click’, (event) => {
$(event.currentTarget).toggleClass(‘is-active’);
$(‘.c-mobile_nav’).toggleClass(‘is-active’);
});
// Mini cart
$(‘.c-header_nav_cart-button’).on(‘click’, (event) => {
$(event.currentTarget).toggleClass(‘is-active’);
$(‘.o-mini-cart’).toggleClass(‘is-active’);
$(‘.c-header_search’).removeClass(‘is-active’);
});
$(‘body’).on(‘click’, ‘.o-mini-cart .close’, () => {
$(‘.o-mini-cart, .c-header_nav_cart-button’).removeClass(‘is-active’);
});
}
[/php]
Ce fichier prend en charge la navigation de base présente dans Momentum. Si vous devez aller plus loin vous devrez développer vous même vos fonctions pour gérer la navigation.
Structure SCSS
Bien que Momentum soit l’ensemble des éléments cités plus haut, la partie principale de la plateforme est la structure SCSS. Pour en apprendre plus sur le SCSS, veuillez vous référer à la documentation suivante : https://sass-lang.com/documentation. La partie SCSS de Momentum est basée sur le « Locomotive Boilerplate » https://github.com/locomotivemtl/locomotive-boilerplate, développé par l’entreprise Locomotive à Montréal. Momentum est une version bonifiée de cette structure et base SCSS pour nos projets. Les fichiers SCSS se trouvent dans le dossier : /assets/src/scss/… et sont divisé dans la structure suivante :
- settings : Variables globales, paramètres à l’échelle du site.
- tools : Fonctions et mixins à l’échelle du site.
- generic : Ensembles de règles peu spécifiques et étendus (par exemple, les réinitialisations).
- elements : Éléments HTML non classés (par exemple, a {}, blockquote {},address {}).
- objects : Objets, abstractions et modèles de conception (par exemple, .o-layout {}).
- components : Blocs discrets et complets de l’interface utilisateur (par exemple, .c-carousel {}). C’est la seule chose pour laquelle Momentum ne fournit pas de code, car c’est entièrement votre terrain.
- utilities : Sélecteurs très spécifiques et très explicites. Remplacements et classes d’assistance (par exemple, .u-hidden {}).
Vous devez suivre, au mieux, cette structure au moment d’ajouter des nouveaux fichiers SCSS dans un projet Momentum. C’est dans le fichier « main.scss » qu’il faut ensuite lier ces nouveaux fichiers pour que Momentum soit capable de les compiler dans le projet.
Settings (Guide de style)
La première étape, qu’on appelle « guide de style » consiste à mettre en place les paramètres et la configuration globale du projet à partir de la maquette. C’est dans le fichier « config.scss » que les options globales du site web sont définies. Momentum utilise des variables SCSS pour rendre la modification plus simple et rapide à travers tout le site web.
La palette de couleurs par exemple est sous forme de variables, afin de pouvoir mettre à jour tous les éléments utilisant ces variables, directement en changeant les valeurs.
SCSS
[php]
$white: #FFFFFF;
$black: #191919;
$primary: #0099ff;
$secondary: #0099ff;
[/php]
Dans ce fichier, on y définit les éléments suivants, avant de débuter la programmation des sections selon la maquette graphique :
- Couleurs.
- Fonts.
- Tailles des typos.
- Transitions d’animations CSS et vitesse d’animation
- Espacements : « $unit » et « $unit-small » sont des valeurs TRÈS importantes! Les espacements dans momentum sont basés sur ces 2 valeurs (elles ont rarement besoin d’être modifiées).
- Breakpoints, ces valeurs ne devraient jamais être modifiées.
Tools (Fonctions et mixins importantes)
« _include-media.scss »
Momentum apporte une façon simplifiée de déclarer les @media en CSS. Cette approche est basée sur les Breakpoints définis dans le fichier « _config.scss ». Vous pouvez utiliser le snippet « mq » dans VS Code dans un fichier SCSS et la structure suivante vous sera déjà proposée.
SCSS
[php]
@include media(“
« _fluid-typo.scss » et « _fluid.scss »
Sont composés de fonctions responsives pour gérer les textes et divers espacements de façon fluide (ça permet de gagner quelques pixels importants selon la largeur de l’écran). C’est un peu une alternative aux media queries basé sur 4 valeurs : largeur d’écran minimum, largeur d’écran maximum, valeur minimum et valeur maximum.
SCSS
[php]
@include fluid-type($from-small, $to-enormous, $min-font-size-h1, $max-font-size-h1);
@include fluid-marginBottom($from-small, $to-enormous, $unit-small/2, $unit-small);
[/php]
La formule est simple : à 700px le texte est de 27px, à 1200px le texte est de 42px et entre ces 2 valeurs le texte est variable pour se rendre à l’un ou l’autre. Donc à 950px le texte devrait être de 34,5px. Le même principe s’applique aux propriétés CSS suivantes :
Grosseur des textes
SCSS
[php]
@include fluid-type($from-small, $to-huge, $min-font-size-p, $max-font-size-p);
[/php]
Padding, Padding X, Padding Y, Padding Top, bottom, left, right
[php]
@include fluid-padding($from-small, $to-huge, $unit, $unit-large);
@include fluid-paddingX($from-small, $to-huge, $unit, $unit-large);
@include fluid-paddingLeft($from-small, $to-huge, $unit, $unit-large);
[/php]
Voici la liste de toutes les propriétés qui peuvent utiliser le fluid :
- Type
- Padding
- Margin
- Width
- Height
- Top, bottom, left, right
Vous pouvez vous référer aux fichiers « _fluid-typo.scss » et « _fluid.scss » pour la liste complète des fonctions ou pour en ajouter des nouvelles.
Generic (Basic styles)
La section « generic » comprend des bases de codes génériques d’où sont nom. Normalement, il n’y a pas grand chose à ajouter ou à éditer dans cette structure de fichiers. Sauf si vous voulez mettre en place les bases pour une nouvelle librairie à intégrer dans Momentum, comme ce fut le cas pour Woocommerce par exemple.
Elements (Fonts et Layers)
« _fonts.scss »
Momentum offre la possibilité d’utiliser des fonts custom sous forme de fichiers au lieu de prendre des Google fonts. C’est dans ce fichier qu’il faut définir les fonts. Les fonts doivent être au format woff ou woff2 et déposés dans le dossier : /assets/src/fonts/… .
SCSS
[php]
@include font-face(
“Basier”,
“fonts/basiercircle-regular-webfont”,
(“woff”, “woff2”)
) {
font-style: normal;
font-weight: $normal;
}
[/php]
Si vous voulez utiliser des Google fonts à la place il faut définir dans header.php le lien Google fonts dans la balise.
PHP
[php]
[/php]
Dans les 2 cas, il faut définir les fonts dans le fichier « _config.scss » et cette procédure fait partie de l’étape Guide de style.
SCSS
[php]
$font-p: ‘Roboto’, sans-serif;
$font-h: ‘Roboto’, sans-serif;
$font-alt: ‘Robot’, sans-serif;
[/php]
« _page.scss »
Le seul élément important dans cette section est ce qui peut être appelé « Layers ». En fait, cette section définit les z-index des sections principales de Momentum. Si vous devez ajouter une nouvelle section exemple : une modal box, et que vous désirez que celle-ci se place par dessus tous les autres éléments, vous pouvez vous référer à ce fichier pour connaître ou modifier les valeurs z-index des autres éléments. Je vous conseille aussi de définir le z-index de votre nouvelle section ici, car il est plus facile de savoir quelle section est au-dessus ou en dessous des autres.
SCSS
[php]
.c-header {
z-index: 1002;
}
.c-nouvelle-section {
z-index: 1003;
}
[/php]
Objects
« _preloader.scss »
Ce fichier gère le style du preloader de momentum qui s’affiche avant que le site soit complètement chargé et au moment des transitions des pages gérés avec BarbaJS. Vous pouvez éditer ce fichier si vous voulez apporter des changements au preloader. Veuillez noter que le preloader possède aussi des styles inline dans le fichier « header.php ». Vous devez aussi changer ces styles. La raison pour laquelle il y a du inline style html c’est pour éviter de voir certains éléments une fraction de section pour les gens visitant le site pour la première fois. Cette technique prend en charge les styles directement et évide de voir du blanc une fraction de seconde, par exemple.
Inline style dans header.php
PHP
[php]
div class=”o-preloader” style=”position: fixed; top: 0; bottom: 0; left: 0; right: 0; background-color: #191919; z-index: 1004;”>
Ce fichier est lié directement à Locomotive Scroll. Ce sont les styles de base pour le bon fonctionnement de la librairie. Ce fichier est facultatif si jamais Locomotive Scroll n’est pas utilisé sur le projet actuel. Il est donc conseillé de commenter ce fichier dans « main.scss » pour qu’il ne soit pas compilé. Il ne devrait normalement jamais y avoir de modifications à apporter à ce fichier. Il se peut, par contre, si Locomotive Scroll est mis à jour dans Momentum qu’une nouvelle version de ce fichier doit être mise en place.
Objects – Container
« _container.scss »
Ce fichier est un fichier très important dans la structure de Momentum. Dans les langages de programmation, le mot * conteneur * est généralement utilisé pour les structures qui peuvent contenir plus d’un élément. Un * wrapper * est plutôt quelque chose qui s’enroule autour d’un seul objet. Son nom le dit, il définit le container du site web si on en a besoin. La classe CSS pour utiliser le container est : .o-container. Le container peut s’utiliser directement dans une
SCSS
[php]
.o-container {
margin-right: auto;
margin-left: auto;
@include fluid-paddingX($from-small, $to-enormous, $unit-small/2, $unit*2);
max-width: rem($container-width + ($padding * 2));
}
[/php]
Le container restreint la largeur maximale d’une section par un max-width qui peut être ajusté au besoin. Il peut ne pas être utilisé si on veut une section qui va toujours prendre toute la largeur de l’écran peu importe la largeur de celle-ci.
Objects – Layout (système de colonnes)
« _layout.scss »
Système de mise en page en forme de grille. Voici un exemple rapide de la structure normale d’une section :
PHP
[php]
[/php]
.o-layout
c’est simple, c’est une rangée. .o-layout_item c’est une colonne. Donc, à chaque .o-layout débutera une nouvelle rangée. .o-layout peut recevoir des classes additionnels et voici la liste avec une description de chacun :
- .-gutter : Ajoute une marge entre les colonnes d’une largeur de $unit.
- .-gutter-small : Même principe, sauf que la valeur est de $unit-small.
- .-center : Centre les colonnes .o-layout_item.
- .-right : Aligne les colonnes .o-layout_item à droite.
- .-left : Aligne les colonnes .o-layout_item à gauche.
- .-flex : Change pour du flex, display: flex.
.o-layout_item
C’est une colonne. Pour contrôler la largeur des colonnes et ce de façon responsive, il faut utiliser les classes dans la structure suivante. Normalement les maquettes respectent une base de 12 colonnes. Un système de classe sous forme de fractions permet de rapidement aligner les colonnes basées sur les maquettes graphiques. Si on veut, par exemple, deux colonnes qui prennent ½ chacune avec un espacement entre chaque colonne, il faut utiliser un .-gutter sur le .o-layout et ajouter la classe .u-1/2@from-medium. Le @from-medium est facultatif, mais c’est de cette façon qu’on peut gérer rapidement le responsive des colonnes. Dans le cas présent .u-1/2@from-medium indique à la colonne de prendre ½ de l’espace en haut de 1000px. Sous 1000px la colonne prendra toute la largeur de l’espace disponible.
Les fractions et le responsive du système de colonnes se trouve dans le fichier _widths.scss dans le dossier utilities.
SCSS
[php]
.u-1\/2\@from-tiny {
@media (min-width: $from-tiny) {
width: span(1/2);
}
}
[/php]
Deux colonnes de ½ en haut de 1000px avec une marge de $unit entre les 2.
PHP
[php]
[/php]
Vous pouvez utiliser toutes les fractions possibles basées sur 12 colonnes.
Objects – Ratio
« _ratio.scss »
Des blocs de contenu limités par des ratios, pour conserver les médias (par exemple, les images, les vidéos) dans leurs proportions correctes. La classe .o-ratio est principalement utilisée sur les background images .c-bg-img. Voici comment afficher une image qui se trouve dans le dossier /assets/src/img/… de Momentum dans un ratio 16:9. Pour ajouter des ratios supplémentaires ou voir la liste de ceux déjà présents, veuillez vous référer au fichier du même nom, mais dans le dossier utilities.
SCSS
[php]
$aspect-ratios: (
(2:1),
(1:2),
(4:3),
(3:4),
(16:9),
(9:16),
) !default;
[/php]
Veuillez noter que les images placées dans le dossier /assets/src/img/… sont optimisées et compilées dans le dossier /assets/dist/img/… . Il faut donc toujours utiliser le dossier DIST et non SRC pour appeler les ressources
PHP
[php]
[/php]
Cette fonction PHP va simplement chercher le dossier Root du Thème Momentum.
PHP
[php]
[/php]
Objects – Text
« _text.scss »
Il n’y a pas grand chose à dire sur cette section, mais la classe .o-text est utilisée quand nous avons un champ ACF qui est un éditeur de contenus (WYSIWYG). Si le champ éditable est un WYSIWYG, on englobe le php par cette classe. Il est donc facile d’appliquer des styles CSS spécifiques à ce type de contenus. Voici un exemple :
PHP
[php]
[/php]



