Drupal 8 y aplicaciones móviles

Luis Fonseca y Joaquín Bravo - Axai.mx

Instalar composer

# https://getcomposer.org/download/
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

# https://getcomposer.org/doc/00-intro.md#globally
sudo mv composer.phar /usr/local/bin/composer

Crear un nuevo proyecto

composer create-project drupal/drupal public --prefer-dist
# public es el nombre de la carpeta
# mejor usar ~8.0 en vez de 8.2.0-beta3
# --prefer-dist = baja .zip en lugar de git

# si tu Internet es lento
wget -c https://ftp.drupal.org/files/projects/drupal-8.3.0.tar.gz
mv drupal-8.2.0-beta3 public

Crear repositorio de git

git init
cp example.gitignore .gitignore

vim .gitignore
# edit .gitignore line 15 to ignore:
core
vendor
modules/contrib
themes/contrib

git add .
git commit -m "Initial commit"

Don't Hack Core!

Con esto evitamos hacer modificaciones al core o a los módulos contribuidos porque no estan en nuestro repositorio.

 

Si quieres usar parches al core o a módulos, usa https://github.com/cweagans/composer-patches

y así las modifcaciones viven en composer.json

Agregar Drupal Console

composer require drupal/console:~1.0
./vendor/drupal/console/bin/drupal check
alias drupal=./vendor/drupal/console/bin/drupal
drupal list

# Esto modifico composer.json y composer.lock
git add composer.*
git commit -m "Add drupal console"

Instalar Drupal!

drupal site:install
drupal server

Exportar la configuración

# En sites/default/settings.php

# Generated value
$config_directories['sync'] = 'sites/default/files/config_HASH/sync';

# Update with new value 
$config_directories['sync'] = 'sites/default/sync';

# Después correr en la consola:
drupal config:export
git status
git add sites/default/sync
git commit -m "Agregar configuracion a git"

Para descargar módulos

# Editar composer.json
# al final antes de la última llave:
    },
    "repositories": [ {
        "type": "composer",
        "url": "https://packages.drupal.org/8"
    } ]
}

¿Dónde descargarlos?

# editar composer.json en la llave "extra"
"extra": {
  ...
  },
  "installer-paths": {
    "modules/contrib/{$name}": [
      "type:drupal-module"
    ],
    "themes/contrib/{$name}": [
      "type:drupal-theme"
    ] 
  }
},

Descargar módulos

# Siempre, por curiosidad
git status
git diff
git add composer.json
git commit -m "Agregar repo de drupal a composer.json"

composer require drupal/restui:~1.0
composer require drupal/image_raw_formatter:~1.0
composer require drupal/admin_toolbar:~1.0

git status
git diff
git add composer.*
git commit -m "Agregar módulos de rest y admin_toolbar"

Instalar y exportar config

# Desde la interfaz web o...
drupal module:install hal restui basic_auth
drupal module:install image_raw_formatter
drupal module:install admin_toolbar

drupal config:export

git status
git diff
git add sites/default/sync
git commit -m "Habilitar modulos (rest, admin_toolbar)"

Habilitar REST para node

# Desde la interfaz web
http://127.0.0.1:8088/admin/config/services/rest

Habilitar GET para "Content" con:
- hal_json
- basic_auth

Crear contenido

drupal create:nodes

curl "http://127.0.0.1:8088/node/1?_format=hal_json"

# Crear un usuario
https://gist.github.com/jackbravo/6a06e99ec409e2cc537afdce57c2df90

Crear vista

curl --user admin:admin "http://127.0.0.1:8088/rest/views/articles"

Exportar la vista

# Recuerden, por curiosidad:
git status
git diff

# Para exportar
drupal config:export
git status
git add sites/default/sync
git commit -m "Exportar vista REST a la configuración"

Referencias

Android con Drupal 8 como backend

Ciclo de la aplicación

  • Base de datos y su estructura de tablas para SQLite
  • Consumir el web service y conversión a formato Json
  • Guardar los datos en SQLite y en el cache (Imagenes).
  • Creación de la aplicación.

Instancia a IssueCollection

Crear nuevo hilo

Consulta a SQLite

Llamada al web service

Guardar datos en SQLite

Creación de Base de datos y las tablas

 

Creación de adaptador para pasar la informacion a los componentes Android

Layout principal

Listview articulos

Detalle articulo

drupal8-rest-apps

By jackbravo

drupal8-rest-apps

  • 1,369