You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
2.2 KiB

  1. <?php
  2. /**
  3. * Ce fichier contient les cas d'utilisation des pipelines.
  4. *
  5. * @package SPIP\ZGALA\Pipelines
  6. */
  7. if (!defined('_ECRIRE_INC_VERSION')) {
  8. return;
  9. }
  10. /**
  11. * Suppression des blocs head et head_js de la liste des blocs pouvant, par défaut,
  12. * accueillir des noisettes.
  13. *
  14. * @pipeline noizetier_blocs_defaut
  15. *
  16. * @param array $blocs Liste blocs par défaut concernés par le NoiZetier
  17. *
  18. * @return array Liste des blocs modifiés. On supprime les blocs head et head_js.
  19. */
  20. function zgala_noizetier_blocs_defaut($blocs) {
  21. static $blocs_exclus = array('head', 'head_js');
  22. if ($blocs) {
  23. $blocs = array_diff($blocs, $blocs_exclus);
  24. }
  25. return $blocs;
  26. }
  27. /**
  28. * Passage de variables de configuration en paramètres des SCSS.
  29. *
  30. * @pipeline scss_variables
  31. *
  32. * @param array $data Tableau des variables déjà collectées
  33. *
  34. * @return array Tableau des variables complété
  35. */
  36. function zgala_scss_variables($data) {
  37. include_spip('inc/config');
  38. // Calculer les variables de paramétrage du layout :
  39. // -- on ne fournit que les variables non nulles car le fichier SCSS possèdent déjà des valeurs par défaut.
  40. // -- comme on revient systématiquement dans ce pipeline pour chaque compilation de fichier SCSS, on utilise
  41. // une statique pour éviter de recalculer les variables n fois.
  42. static $layout = [];
  43. if (!$layout) {
  44. $config = lire_config('zgala/layout', []);
  45. if ($config) {
  46. // Id du layout
  47. if (!empty($config['layout_id'])) {
  48. $layout['layout-id'] = $config['layout_id'];
  49. }
  50. // Largeur de la page en pixels si celle-ci est fixe
  51. if (!empty($config['page_width'])) {
  52. $layout['layout-page-width'] = $config['page_width'] . 'px';
  53. }
  54. // Largeur fluide des blocs
  55. if (!empty($config['liquid_width'])) {
  56. foreach ($config['liquid_width'] as $_bloc => $_width) {
  57. $layout["layout-${_bloc}-width-liquid"] = $_width . 'fr';
  58. }
  59. }
  60. // Largeur fixe des blocs
  61. if (!empty($config['fixed_width'])) {
  62. foreach ($config['fixed_width'] as $_bloc => $_width) {
  63. $layout["layout-${_bloc}-width-fixed"] = $_width . 'px';
  64. }
  65. }
  66. }
  67. }
  68. // Ajouter les variables de paramétrage du layout
  69. if ($layout) {
  70. $data = array_merge($data, $layout);
  71. }
  72. return $data;
  73. }