Top Banner
DRUPAL as a framework Samuel Solís @estoyausente linkedin.com/in/samuelsolisfuentes
30

Drupal as a framework

Dec 14, 2014

Download

Software

Samuel Solís

Diapositivas de la charla Drupal como framework, dada en el grupo phpMAD, en Abril de 2014.
Hablamos del patrón de diseño que usa Drupal7, el que usa Drupal8, sus diferencias y como afecta eso a la hora de desarrollar módulos utilizando Drupal.
Podéis ver el vídeo aquí: https://www.youtube.com/watch?v=-aI18i506MM
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Drupal as a framework

DRUPAL as a framework

Samuel Solís

@estoyausente linkedin.com/in/samuelsolisfuentes

Page 2: Drupal as a framework

Drupal as a framework Samuel Solís | @estoyausente

What is DRUPAL?

Page 3: Drupal as a framework

Drupal as framework Samuel Solís | @estoyausente

CMSs Frameworks

Drupal as a framework Samuel Solís | @estoyausente

Page 4: Drupal as a framework

Drupal as framework Samuel Solís | @estoyausente

CMSs Frameworks¿CMF?

Drupal as a framework Samuel Solís | @estoyausente

Page 5: Drupal as a framework

Drupal as framework Samuel Solís | @estoyausente

Drupal inside

Drupal as a framework Samuel Solís | @estoyausente

Page 6: Drupal as a framework

Drupal as framework Samuel Solís | @estoyausente

diff drupal7 drupal8

- PAC (presentation-abstraction-control)! + MVC! + Orient-Object code! + PHP standards! + Symfony2 component! + Twig! + Build-in web services!

Drupal as a framework Samuel Solís | @estoyausente

Page 7: Drupal as a framework

Drupal as framework Samuel Solís | @estoyausente

PAC

Drupal as a framework Samuel Solís | @estoyausente

Page 8: Drupal as a framework

Drupal as framework Samuel Solís | @estoyausente

Drupal7’s PAC

http://dsheiko.com/

Drupal as a framework Samuel Solís | @estoyausente

Page 9: Drupal as a framework

Drupal as framework Samuel Solís | @estoyausente

http://dsheiko.com/

Drupal as a framework Samuel Solís | @estoyausente

Page 10: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

! block_example/! ├── block_example.info ├── block_example.install ├── block_example.module └── block_example.test

tree block_example

Drupal as a framework Samuel Solís | @estoyausente

Page 11: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

function block_example_block_info() {!$blocks['example_configurable_text'] = !! array(! 'info' => t('Example),! 'cache' => DRUPAL_CACHE_PER_ROLE,!);!return $blocks;!} !

vi block_example.module

Drupal as a framework Samuel Solís | @estoyausente

Page 12: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

function block_example_block_configure($delta = '') {! $form = array();! if ($delta == ‘example_configurable_text’){! $form['block_example_string'] = array(! '#type' => ‘textfield',! '#title' => t('Block contents’),! '#size' => 60,! '#description' => t('This text example'),! '#default_value' => variable_get('block_example_string', t('Some example content.’)),! ); ! } return $form;!}

Drupal as a framework Samuel Solís | @estoyausente

Page 13: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

function block_example_block_save($delta = '', $edit = array()) {! if ($delta == ‘example_configurable_text’){!! variable_set(‘block_example_string’,!! $edit[‘block_example_string’]);! }!}!

Drupal as a framework Samuel Solís | @estoyausente

Page 14: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

function block_example_block_view($delta = '') { switch ($delta) {! case ‘example_configurable_text':! $block['subject'] = t('Title'); $block['content'] = block_example_contents();! break; ! }! return $block;!}!

Drupal as a framework Samuel Solís | @estoyausente

Page 15: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

function block_example_contents() { return variable_get(‘block_example_string’);!}!

Drupal as a framework Samuel Solís | @estoyausente

Page 16: Drupal as a framework
Page 17: Drupal as a framework

Drupal as framework Samuel Solís | @estoyausente

Drupal8’s MVC

Drupal as a framework Samuel Solís | @estoyausente

Page 18: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

block_example/ ├── block_example.info.yml ├── block_example.module ├── block_example.routing.yml └── lib └── Drupal └── block_example ├── Controller │   └── BlockExampleController.php ├── Plugin │   └── Block │   ├── ExampleConfigurableTextBlock.php │   ├── ExampleEmptyBlock.php │   └── ExampleUppercaseBlock.php └── Tests ├── BlockExampleMenuTest.php └── BlockExampleTest.php

tree block_example

Drupal as a framework Samuel Solís | @estoyausente

Page 19: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

block_example/ ├── block_example.info.yml ├── block_example.module ├── block_example.routing.yml └── lib └── Drupal └── block_example ├── Controller │   └── BlockExampleController.php ├── Plugin │   └── Block │   ├── ExampleConfigurableTextBlock.php │   ├── ExampleEmptyBlock.php │   └── ExampleUppercaseBlock.php └── Tests ├── BlockExampleMenuTest.php └── BlockExampleTest.php

tree block_example

Drupal as a framework Samuel Solís | @estoyausente

PSR 0

Page 20: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

function block_example_menu_link_defaults() { $links['block_example'] = array( 'link_title' => 'Block Example’, 'route_name' => ‘block_example.description', ); return $links; }

vi block_example.module

Drupal as a framework Samuel Solís | @estoyausente

Page 21: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

block_example.description: path: ‘examples/block_example’ defaults: _content: '\Drupal\block_example\Controller\BlockExampleController::description' requirements: _access: 'TRUE'

vi block_example.routing.yml

Drupal as a framework Samuel Solís | @estoyausente

Page 22: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

namespace Drupal\block_example\Controller; class BlockExampleController { public function description() { $build = array( '#markup' => t(‘Descripion'), ); return $build; } }

vi BlockExampleController.php

Drupal as a framework Samuel Solís | @estoyausente

Page 23: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

namespace Drupal\block_example\Plugin\Block; use Drupal\block\Annotation\Block; use Drupal\block\BlockBase; use Drupal\Core\Annotation\Translation;

vi BlockExampleConfigurableText.php

Drupal as a framework Samuel Solís | @estoyausente

Page 24: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

class ExampleConfigurableTextBlock extends BlockBase { !public function defaultConfiguration() { return array( 'block_example_string' => t(‘Default'), ); } !

Drupal as a framework Samuel Solís | @estoyausente

Page 25: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

public function blockForm($form, &$form_state) { $form['block_example_string_text'] = array( '#type' => ‘textfield', '#title' => t('Block contents’), '#size' => 60, '#description' => t(‘Description'), '#default_value' => $this->configuration[‘block_example_string'], ); return $form; } !!

Drupal as a framework Samuel Solís | @estoyausente

Page 26: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

public function blockSubmit($form, &$form_state) { $this->configuration['block_example_string'] = $form_state[‘values']['block_example_string_text']; }

Drupal as a framework Samuel Solís | @estoyausente

Page 27: Drupal as a framework

Drupal for devs Samuel Solís | @estoyausente

public function build() { return array( '#type' => ‘markup', '#markup' => $this->configuration[‘block_example_string'], ); } !}//end class

Drupal as a framework Samuel Solís | @estoyausente

Page 28: Drupal as a framework
Page 29: Drupal as a framework

Drupal as framework Samuel Solís | @estoyausente

Drush

Drupal as a framework Samuel Solís | @estoyausente

Page 30: Drupal as a framework

Samuel Solís@estoyausente