Aprendiendo Drupal 8 desde 0 - Parte I

drupal8_post1.jpg
Solucionex
04
Sep 18

Con este post iniciamos una serie de posts donde aprenderemos drupal 8 desde 0, desde su configuración hasta desarrollo de módulos custom. Comenzamos!!

Para iniciar nuestro proyecto debemos tener instalado composer, si no lo tenemos instalado haremos lo siguiente para instalarlo (Linux/Mac):

curl -sS https://getcomposer.org/installer | php

Posteriormente hacemos que composer funcione de manera global en nuestro equipo (lo cual os recomendamos):

mv composer.phar /usr/local/bin/composer

Una vez instalado composer ejecutamos el siguiente comando en nuestra terminal para descargarnos nuestro proyecto drupal base:

composer create-project drupal-composer/drupal-project:8.x-dev blog-posts --stability dev --no-interaction --no-install

blog-posts será el nombre del proyecto por lo que cada uno podéis usar el nombre que queráis.

Una vez hecho esto y accederemos a la carpeta y haciendo uso de git realizaremos el primer commit:

git init
git add -A
git commit -m “Initial commit”

Ahora preparamos los ficheros para el trabajo del proyecto en desarrollo.

Accedemos a la carpeta web/sites/default y editamos el fichero development.services.yml

Le añadiremos a parameters los siguientes items (cuidado con copiar y pegar, tener muy en cuenta las tabulaciones en los yml que pueden dar problemas)

 twig.config:
    debug: true
    auto_reload: true
    cache: false

Esto hará que podamos debugear correctamente los ficheros twig y veamos las suggestions (sugerencias a la hora de sobreescribir ficheros twig que veremos más adelante) lo cual facilita mucho el desarrollo.

Por lo que el fichero development.services.yml nos quedará del siguiente modo:

parameters:
  twig.config:
    debug: true
    auto_reload: true
    cache: false
  http.response.debug_cacheability_headers: true
services:
  cache.backend.null:
    class: Drupal\Core\Cache\NullBackendFactory


Ahora accedemos a web/sites/default y editamos el fichero settings.php

En este añadiremos:

$config['config_split.config_split.dev']['status'] = FALSE;
(En próximos posts explicaremos para qué sirve)

Posteriormente añadiremos la configuración del fichero settings.php donde pondremos en:

database: La base de datos que hayamos creado en nuestro entorno de producción.
username: Nombre de usuario de la base de datos de producción.
password: Contraseña de usuario de la base de datos de producción.
host: IP del servidor de base de datos de producción.

$databases['default']['default'] = array (
  'database' => 'blog_posts',
  'username' => 'root',
  'password' => 'root',
  'prefix' => '',
  'host' => 'localhost',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
);

Y descomentamos estas líneas y las añadimos al final del fichero por debajo de la configuración que hemos añadido anteriormente.

if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
  include $app_root . '/' . $site_path . '/settings.local.php';
}

Por último editamos el fichero settings.local.php para sobreescribir configuración del settings.php por la que usaremos en el entorno de desarrollo. En settings.local.php añadiremos

$config['config_split.config_split.dev']['status'] = TRUE;
(En próximos posts explicaremos para qué sirve)

y añadimos nuestra configuración de la base de datos de desarrollo:

$databases['default']['default'] = array (
  'database' => 'blog_posts',
  'username' => 'root',
  'password' => 'root',
  'prefix' => '',
  'host' => 'localhost',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
);

Ya con todos los cambios realizados, añadiremos a git el fichero development.services que nos aparecerá con cambios (Ejecutamos git status y lo veremos que aparece como cambio), podemos ver los cambios que tiene haciendo uso de git diff 

git diff web/sites/development.services.yml
git add web/sites/development.services.yml
git commit -m "MODIFY development.services.yml"

Una vez configurados los entornos procedemos a la instalación de drupal lo cual veremos en el siguiente post.

NOTA: Los ficheros settings no irán en el control de versiones por motivos de seguridad (entre otros) por lo cual a producción subiremos el fichero settings.php (No subiremos el settings.local.php)