Grav - Temas básicos

Los temas controlan el aspecto de su sitio Grav. Los temas en Grav se crean con el potente motor de plantillas Twig .

Páginas de contenido y plantillas Twig

Las páginas que crea hacen referencia a un archivo de plantilla específico por nombre o configurando la variable de encabezado de la plantilla para la página. Se recomienda utilizar el nombre de la página para simplificar el mantenimiento.

Después de instalar el paquete Grav Base, encontrará el defauld.mdarchivo en la carpeta user / pages / 01.home. El nombre del archivo, es decir,default le dice a Grav que esta página debe ser renderizada con la plantilla twig default.html.twig colocado dentro del themes/<mytheme>/templates carpeta.

Por ejemplo, si tiene un archivo llamado contact.md, se renderizará con la plantilla de ramitas como themes/<mytheme>/templates/contact.html.twig.

Organización temática

En las siguientes secciones, discutiremos sobre la organización del tema, es decir, su definición, configuración y más.

Definición y configuración

La información sobre el tema se definirá en user/themes/antimatter/blueprints.yamlLas definiciones de archivos y formularios que se utilizarán en el panel de administración se proporcionan opcionalmente. Verá el siguiente contenido enuser/themes/antimatter/blueprints.yaml archivo para Antimatter theme.

name: Antimatter
version: 1.6.0
description: "Antimatter is the default theme included with **Grav**"
icon: empire
author:
   name: Team Grav
   email: [email protected]
   url: http://getgrav.org
homepage: https://github.com/getgrav/grav-theme-antimatter
demo: http://demo.getgrav.org/blog-skeleton
keywords: antimatter, theme, core, modern, fast, responsive, html5, css3
bugs: https://github.com/getgrav/grav-theme-antimatter/issues
license: MIT

form:
   validation: loose
   fields:
      dropdown.enabled:
         type: toggle
         label: Dropdown in navbar
         highlight: 1
         default: 1
         options:
            1: Enabled
            0: Disabled
         validate:
            type: bool

Para utilizar las opciones de configuración del tema, debe proporcionar la configuración predeterminada en un archivo llamado user/themes/<mytheme>/<mytheme>.yaml.

Example

enable: true

Eventos de temas y complementos

La capacidad del tema para interactuar con Grav a través de la arquitectura de complementos es otra característica poderosa de Grav. Para lograr esto, simplemente creeuser/themes/<mytheme>/<mytheme>.php (por ejemplo, antimatter.php para el tema de Antimateria predeterminado) y use el siguiente formato.

<?php
namespace Grav\Theme;

use Grav\Common\Theme;

class MyTheme extends Theme {
   public static function getSubscribedEvents() {
      return [
         'onThemeInitialized' => ['onThemeInitialized', 0]
      ];
   }
   public function onThemeInitialized() {
      if ($this->isAdmin()) {
         $this->active = false;
         return;
      }
      
      $this->enable([
         'onTwigSiteVariables' => ['onTwigSiteVariables', 0]
      ]);
   }
   public function onTwigSiteVariables() {
      $this->grav['assets']
         ->addCss('plugin://css/mytheme-core.css')
         ->addCss('plugin://css/mytheme-custom.css');

      $this->grav['assets']
         ->add('jquery', 101)
         ->addJs('theme://js/jquery.myscript.min.js');
   }
}

Plantillas

La estructura del tema Grav no tiene reglas establecidas, excepto que debe haber plantillas de ramitas asociadas en plantillas / carpeta para el contenido de todos y cada uno de los tipos de página.

Debido a este estrecho acoplamiento entre el contenido de la página y la plantilla twig, es bueno crear temas generales basados ​​en los paquetes Skeleton disponibles en la página de descargas .

Suponga que desea admitir una plantilla modular en su tema, debe crear modular/carpeta y almacenar archivos de plantillas de ramitas en su interior. Si desea admitir formularios, debe crearform/ carpeta y almacene plantillas de formulario en ella.

Planos

Para definir formularios para opciones y configuración para cada archivo de plantilla. blueprints/se utiliza la carpeta. Estos no serán editables a través delAdministrator Panely se usa opcionalmente. El tema es completamente funcional sinblueprints carpeta.

SCSS / MENOS / CSS

Si desea desarrollar un sitio con SASS o LESS, debe crear subcarpetas en user/themes/<mytheme>/scss/o less/ si quieres MENOS junto con una carpeta css /.

Para archivos generados automáticamente que se compilan desde SASS o LESS, el css-compiled/se utiliza la carpeta. En el tema de la antimateria,scss se utiliza una variante de SASS.

Siga estos pasos para instalar SASS en su máquina.

  • En la raíz del tema, escriba el comando que se indica a continuación para ejecutar el script de shell scss.

$ ./scss.sh
  • Escriba el siguiente comando para ejecutarlo directamente.
$ scss --sourcemap --watch scss:css-compiled

los css-compiled/ contendrá todos los archivos scss compilados y el archivo css se generará dentro de su tema.

Otras carpetas

Se recomienda crear por separado images/, fonts/ y js/ carpetas en tu user/themes/<mytheme>/ carpeta para las imágenes, fuentes y archivos JavaScript utilizados en su tema.

Ejemplo de tema

La estructura general de carpetas del Antimatter El tema que discutimos hasta ahora se muestra a continuación.