SlideShare a Scribd company logo
1 of 31
Drupal8
Hooks&EntiTYAPI
Hooks are functions
that are called for
each module when
system events
happen, e.g. page
load or user login
Hooks
Drupal7VsDRUPal8
Number of hooks in Drupal 7 : 352
Number of hooks in Drupal 8 : 338
Deprecated hooks : 83
New hooks in Drupal 8 : 56
Renamed hooks : at least 4
SOMEIMPORTANTDEPRECATEDHOOKS–hook_menu
hook_menu() -> Drupal 8 APIs should start with
defining the routes for the items.
<?php
# Drupal 7 menu item
$items['admin/content/book'] = array(
'title' => 'Books',
'description' => "Manage your site's book outlines.",
'page callback' => 'book_admin_overview',
'access arguments' => array('administer book outlines'),
'type' => MENU_LOCAL_TASK,
'file' => 'book.admin.inc',
);
?>
SOMEIMPORTANTDEPRECATEDHOOKS–Hook_menu
# Drupal 8 book.routing.yml snippet
book.admin:
path: '/admin/content/book'
defaults:
_controller: ‘DrupalbookControllerBookController::adminOverview'
_title: 'Books'
requirements:
_permission: 'administer book outlines‘
# Drupal 8 book.links.task.yml snippet
book.admin:
route_name: book.admin
title: 'Books'
base_route: system.admin_content
SOMEIMPORTANTDEPRECATEDHOOKS–hook_menu
hook_init() -> Drupal 8 has adopted symfony as a
part of its core. It uses Symfony kernel and events
to do the same now.
<?php
function mymodule_init() {
if (!empty($_GET['redirect-me'])) {
drupal_goto('http://example.com/');
}
}
?>
SOMEIMPORTANTDEPRECATEDHOOKS–hook_menu
mymodule.services.yml
services:
mymodule_event_subscriber:
class: DrupalmymoduleEventSubscriberMymoduleSubscriber
tags:
- {name: event_subscriber}
Src/ EventSubscriber/ MymoduleSubscriber.php
<?php
namespace DrupalmymoduleEventSubscriber;
use SymfonyComponentHttpFoundationRedirectResponse;
use SymfonyComponentHttpKernelKernelEvents;
use SymfonyComponentHttpKernelEventGetResponseEvent;
use SymfonyComponentEventDispatcherEventSubscriberInterface;
class MymoduleSubscriber implements EventSubscriberInterface {
public function checkForRedirection(GetResponseEvent $event) {
if ($event->getRequest()->query->get('redirect-me')) {
$event->setResponse(new RedirectResponse('http://example.com/'));
}
}
/**
* {@inheritdoc}
*/
static function getSubscribedEvents() {
$events[KernelEvents::REQUEST][] = array('checkForRedirection');
return $events;
}
}
?>
SOMEIMPORTANTDEPRECATEDHOOKS–hook_menu
If your module just needs to add css and/or
javascript, hook_page_attachments should be
used in.
function MYMODULE_page_attachments(array &$attachments) {
$attachments ['#attached']['library'][] =
'modulename/libraryname';
}
SOMEIMPORTANTDEPRECATEDHOOKS–hook_block
hook_block_configure , hook_block_info,
hook_block_view ->
A "plugin" is just a new way of creating
reusable elements in Drupal. Blocks are now
created with plugins.
modules/yourmodule/src/Plugin/Block/YourBlo
ckName.php
SOMEIMPORTANTDEPRECATEDHOOKS–hook_block
<?php
/**
* Provides a 'Hello' Block
*
* @Block(
* id = "hello_block",
* admin_label = @Translation("Hello block"),
* )
*/
namespace Drupalhello_worldPluginBlock;
use DrupalCoreBlockBlockBase;
class HelloBlock extends BlockBase {
/**
* {@inheritdoc}
*/
public function build() {
return array(
'#markup' => $this->t('Hello, World!'),
);
}
}
?>
EXAMPLE–MAILAPI
/**
* Implements hook_mail().
*/
function d8mail_mail($key, &$message, $params) {
$options = array(
'langcode' => $message['langcode'],
);
switch ($key) {
case 'node_insert':
$message['from'] = Drupal::config('system.site')->get('mail');
$message['subject'] = t('Node created: @title', array('@title' => $params['node_title']), $options);
$message['body'][] = SafeMarkup::checkPlain($params['message']);
break;
}
}
EXAMPLE–MAILAPI/**
* Implements hook_entity_insert().
*/
function d8mail_entity_insert(DrupalCoreEntityEntityInterface $entity) {
if ($entity->getEntityTypeId() !== 'node' || ($entity->getEntityTypeId() === 'node' && $entity->bundle() !== 'article')) {
return;
}
$mailManager = Drupal::service('plugin.manager.mail');
$module = 'd8mail';
$key = 'node_insert';
$to = Drupal::currentUser()->getEmail();
$params['message'] = $entity->get('body')->value;
$params['node_title'] = $entity->label();
$langcode = Drupal::currentUser()->getPreferredLangcode();
$send = true;
$result = $mailManager->mail($module, $key, $to, $langcode, $params, NULL, $send);
if ($result['result'] !== true) {
$message = t('There was a problem sending your email notification to @email for creating node @id.', array('@email' => $to, '@id' => $entity->id()));
drupal_set_message($message, 'error');
Drupal::logger('d8mail')->error($message);
return;
}
$message = t('An email notification has been sent to @email for creating node @id.', array('@email' => $to, '@id' => $entity->id()));
drupal_set_message($message);
Drupal::logger('d8mail')->notice($message);
}
EXAMPLE–MAILAPI/**
* Implements hook_mail_alter().
*/
function d8mail_mail_alter(&$message) {
switch ($message['key']) {
case 'node_insert':
$message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed; delsp=yes';
break;
}
}
EXAMPLE–VIEWSAPI<?php
use DrupalviewsPluginviewsqueryQueryPluginBase;
use DrupalviewsViewExecutable;
function my_examples_views_query_substitutions(ViewExecutable $view){
$account = Drupal::currentUser();
return array(
'***CURRENT_TIME***' => REQUEST_TIME,
);
//echo "<pre>";print_r($view->getQuery());echo "</pre>";exit();
}
function my_examples_views_query_alter(ViewExecutable $view,QueryPluginBase $query) {
if ($view->id() == 'first_view') {
// Traverse through the 'where' part of the query.
foreach ($query->where as &$condition_group) {
foreach ($condition_group['conditions'] as &$condition) {
// If this is the part of the query filtering on title, chang the
// condition to filter on node ID.
if ($condition['field'] == 'node_field_data.title') {
$condition = array(
'field' => 'node_field_data.title',
'value' => 'Test 2',
'operator' => '=',
);
}
}
}
}
}
We can build Entity
types, which can
make Bundles, to
which we can add
Fields and then
create Entities.
Entities
EntityAPI
What’s an entity?
An entity type is a base class
A bundle is an extended class
A field is a class member,
property, variable or field
instance (depending on your naming
preference)
An entity is an object or instance
of a base or extended class
Drupal 7 Entity Types?
Nodes (content)
Comments
Files
Taxonomy terms
Taxonomy vocabularies
Users
37COREENTITYTYPES–DRUPAL8
Action
Block
Breakpoint
BreakpointGroup
Contact(Category)
Comment
CustomBlock
CustomBlockType
View
DateFormat
Editor
EntityDisplay
EntityFormDisplay
EntityFormMode
EntityViewMode
Feed
Field
Field Instance
Node
NodeType
PictureMapping
RdfMapping
Role
ShortcutSet
Term
Tour
User
Vocabulary
File
FilterFormat
ImageStyle
(Aggregator)Item
Language
Menu
MenuLink
Message
Migration
11DUETONEWFEATURES–DRUPAL8
Action
Block
Breakpoint
BreakpointGroup
Contact(Category)
Comment
CustomBlock
CustomBlockType
View
DateFormat
Editor
EntityDisplay
EntityFormDisplay
EntityFormMode
EntityViewMode
Feed
Field
Field Instance
Node
NodeType
PictureMapping
RdfMapping
Role
ShortcutSet
Term
Tour
User
Vocabulary
File
FilterFormat
ImageStyle
(Aggregator)Item
Language
Menu
MenuLink
Message
Migration
20DUETOENTIFYINGEXISTINGFEATURES–DRUPAL8
Action
Block
Breakpoint
BreakpointGroup
Contact(Category)
Comment
CustomBlock
CustomBlockType
View
DateFormat
Editor
EntityDisplay
EntityFormDisplay
EntityFormMode
EntityViewMode
Feed
Field
Field Instance
Node
NodeType
PictureMapping
RdfMapping
Role
ShortcutSet
Term
Tour
User
Vocabulary
File
FilterFormat
ImageStyle
(Aggregator)Item
Language
Menu
MenuLink
Message
Migration
Drupal8hasconfigurationManagement!!!
Configuration
Stored in YAML files, not database
Canonical workflow: Change on dev,
Deploy to prod
Content
Stored in database
Canonical workflow: Changes on
prod constantly.
Drupal is not just a Content Management System: It’s Content & Configuration
Management System 
Twofamiliesofentitytypes
Content
Comment
CustomBlock
Feed
File
(Aggregator)Item
MenuLink
Message
Node
Term
User
Configuration
Action
Block
Contact(Category)
Breakpoint
BreakpointGroup
DateFormat
Editor
EntityDisplay
EntityFormDisplay
NodeType
PictureMapping
RdfMapping
Role
ShortcutSet
Tour
Vocabulary
EntityFormMode
EntityViewMode
Field Instance
Field
CustomBlockType
View
FilterFormat
ImageStyle
Language
Menu
Migration
Twofamiliesofentitytypes
Content
1) Revisionable
2) Uses content translation api
3) Fieldable
4) All data is the field and
follows the field data model
5) Integrated with REST
6) ID is autogenerated, stable,
non-recyclable
Config
1) Non Revisionable
2) Uses config translation api
3) Not Fieldable
4) Data is PHP scalars/arrays and
follows a type-defined schema.
5) Not integrated with REST
6) ID is a machine name that can
be edited & recycled.
What’snotanentity?
1) Singular config (settings)
2) Keyvalue (state, tempstore)
3) Non-kv state (batch, config_snapshot, flood, queue, semaphore, sequences)
4) Session (sessions)
5) History/statistics (comment_entity_statistics, history, node_counter, tracker…)
6) Log (Watchdog)
7) Other (ban_ip, book, content_translation, file_usage, forum, node_access, url_alias)
EntityLIFECYCLE
//Create, Save, Load, Delete
$entity = entity_create($type,$values);
$entity->DOSTUFF();
$entity->save();
$entity = entity_create($type,$id);
$entity->DOSTUFF();
$entity->save();
$entity->delete();
// also
$entities = entity_load_multiple_by_properties($type,$values);
EntityLIFECYCLEHooks
hook_entity_create() hook_TYPE_create()
ook_entity_presave() hook_TYPE_presave()
hook_entity_insert() hook_TYPE_insert()
hook_entity_load() hook_TYPE_load()
hook_entity_update() hook_TYPE_update()
hook_entity_predelete() hook_TYPE_predelete()
hook_entity_delete() hook_TYPE_delete()
Other entity hooks deals with access, view, revision, translation, bundle,…
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Entity!entity.api.ph
p/group/entity_api/8
EXAMPLE–ENTITYAPI<?php
use DrupalCoreEntityDisplayEntityViewDisplayInterface;
use DrupalCoreEntityEntityInterface;
use DrupalCoreFormFormStateInterface;
use DrupalnodeEntityNodeType;
use DrupalnodeNodeTypeInterface;
/**
* Implements hook_form_BASE_FORM_ID_alter().
*/
function reusable_forms_form_node_type_form_alter(&$form, FormStateInterface $form_state) {
$form['reusable_forms'] = array(
'#type' => 'details',
'#title' => t('Reusable forms'),
'#group' => 'additional_settings',
);
$node_type = $form_state->getFormObject()->getEntity();
$form['reusable_forms']['reusable_forms_enabled'] = array(
'#type' => 'checkbox',
'#title' => t('Enable reusable forms'),
'#description' => t('Check this box if you would like a reusable form on this node type.'),
'#default_value' => $node_type->getThirdPartySetting('reusable_forms', 'enabled', 0),
);
EXAMPLE–ENTITYAPI$form_plugins = Drupal::service('plugin.manager.reusable_forms')->getDefinitions();
$options = [];
foreach ($form_plugins as $name => $plugin) {
$options[$name] = $plugin['name'];
}
$form['reusable_forms']['reusable_forms_plugin'] = array(
'#type' => 'radios',
'#title' => t('Available forms'),
'#default_value' => $node_type->getThirdPartySetting('reusable_forms', 'plugin', 'basic_form'),
'#options' => $options,
'#description' => t('The available forms you can choose from for this node type.'),
'#states' => array(
'visible' => array(
':input[name="reusable_forms_enabled"]' => array('checked' => TRUE),
),
),
);
$form['#entity_builders'][] = 'reusable_forms_form_node_type_form_builder';
}
EXAMPLE–ENTITYAPI/**
* Entity form builder for the node type form to map some values to third party
* settings
*/
function reusable_forms_form_node_type_form_builder($entity_type, NodeTypeInterface $type, &$form, FormStateInterface $form_state) {
if ($form_state->getValue('reusable_forms_enabled') === 1) {
$type->setThirdPartySetting('reusable_forms', 'enabled', 1);
$type->setThirdPartySetting('reusable_forms', 'plugin', $form_state->getValue('reusable_forms_plugin'));
return;
}
$type->unsetThirdPartySetting('reusable_forms', 'enabled');
$type->unsetThirdPartySetting('reusable_forms', 'plugin');
}
EXAMPLE–ENTITYAPI/**
* Implements hook_entity_extra_field_info().
*/
function reusable_forms_entity_extra_field_info() {
$extra = array();
$bundles = NodeType::loadMultiple();
$bundles = array_filter($bundles, function($bundle){
return $bundle->getThirdPartySetting('reusable_forms', 'enabled') === 1;
});
foreach ($bundles as $bundle) {
$extra['node'][$bundle->Id()]['display']['reusable_form'] = array(
'label' => t('Reusable form'),
'description' => t('Reusable form'),
'weight' => 100,
'visible' => TRUE,
);
}
return $extra;
}
/**
* Implements hook_ENTITY_TYPE_view().
*/
function reusable_forms_node_view(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode, $langcode) {
LetsseesomeDemo
THANKYOU

More Related Content

What's hot

Dependency injection - phpday 2010
Dependency injection - phpday 2010Dependency injection - phpday 2010
Dependency injection - phpday 2010Fabien Potencier
 
Rich Internet Applications con JavaFX e NetBeans
Rich Internet Applications  con JavaFX e NetBeans Rich Internet Applications  con JavaFX e NetBeans
Rich Internet Applications con JavaFX e NetBeans Fabrizio Giudici
 
The State of Lithium
The State of LithiumThe State of Lithium
The State of LithiumNate Abele
 
Building Lithium Apps
Building Lithium AppsBuilding Lithium Apps
Building Lithium AppsNate Abele
 
Lithium: The Framework for People Who Hate Frameworks, Tokyo Edition
Lithium: The Framework for People Who Hate Frameworks, Tokyo EditionLithium: The Framework for People Who Hate Frameworks, Tokyo Edition
Lithium: The Framework for People Who Hate Frameworks, Tokyo EditionNate Abele
 
Blocks In Drupal
Blocks In DrupalBlocks In Drupal
Blocks In Drupalguest6fb0ef
 
Jooctrine - Doctrine ORM in Joomla!
Jooctrine - Doctrine ORM in Joomla!Jooctrine - Doctrine ORM in Joomla!
Jooctrine - Doctrine ORM in Joomla!Herman Peeren
 
Lithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate FrameworksLithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate FrameworksNate Abele
 
Ant_quick_guide
Ant_quick_guideAnt_quick_guide
Ant_quick_guideducquoc_vn
 
Designing a JavaFX Mobile application
Designing a JavaFX Mobile applicationDesigning a JavaFX Mobile application
Designing a JavaFX Mobile applicationFabrizio Giudici
 
Drupal Module Development
Drupal Module DevelopmentDrupal Module Development
Drupal Module Developmentipsitamishra
 
The Zen of Lithium
The Zen of LithiumThe Zen of Lithium
The Zen of LithiumNate Abele
 
Drupal 7 Theming - Behind the scenes
Drupal 7 Theming - Behind the scenes Drupal 7 Theming - Behind the scenes
Drupal 7 Theming - Behind the scenes ramakesavan
 
Drupal Development
Drupal DevelopmentDrupal Development
Drupal DevelopmentJeff Eaton
 
Drupal Development (Part 2)
Drupal Development (Part 2)Drupal Development (Part 2)
Drupal Development (Part 2)Jeff Eaton
 
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...Atlassian
 
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...Atlassian
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial EnAnkur Dongre
 
The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010Fabien Potencier
 
Dependency Injection with PHP and PHP 5.3
Dependency Injection with PHP and PHP 5.3Dependency Injection with PHP and PHP 5.3
Dependency Injection with PHP and PHP 5.3Fabien Potencier
 

What's hot (20)

Dependency injection - phpday 2010
Dependency injection - phpday 2010Dependency injection - phpday 2010
Dependency injection - phpday 2010
 
Rich Internet Applications con JavaFX e NetBeans
Rich Internet Applications  con JavaFX e NetBeans Rich Internet Applications  con JavaFX e NetBeans
Rich Internet Applications con JavaFX e NetBeans
 
The State of Lithium
The State of LithiumThe State of Lithium
The State of Lithium
 
Building Lithium Apps
Building Lithium AppsBuilding Lithium Apps
Building Lithium Apps
 
Lithium: The Framework for People Who Hate Frameworks, Tokyo Edition
Lithium: The Framework for People Who Hate Frameworks, Tokyo EditionLithium: The Framework for People Who Hate Frameworks, Tokyo Edition
Lithium: The Framework for People Who Hate Frameworks, Tokyo Edition
 
Blocks In Drupal
Blocks In DrupalBlocks In Drupal
Blocks In Drupal
 
Jooctrine - Doctrine ORM in Joomla!
Jooctrine - Doctrine ORM in Joomla!Jooctrine - Doctrine ORM in Joomla!
Jooctrine - Doctrine ORM in Joomla!
 
Lithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate FrameworksLithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate Frameworks
 
Ant_quick_guide
Ant_quick_guideAnt_quick_guide
Ant_quick_guide
 
Designing a JavaFX Mobile application
Designing a JavaFX Mobile applicationDesigning a JavaFX Mobile application
Designing a JavaFX Mobile application
 
Drupal Module Development
Drupal Module DevelopmentDrupal Module Development
Drupal Module Development
 
The Zen of Lithium
The Zen of LithiumThe Zen of Lithium
The Zen of Lithium
 
Drupal 7 Theming - Behind the scenes
Drupal 7 Theming - Behind the scenes Drupal 7 Theming - Behind the scenes
Drupal 7 Theming - Behind the scenes
 
Drupal Development
Drupal DevelopmentDrupal Development
Drupal Development
 
Drupal Development (Part 2)
Drupal Development (Part 2)Drupal Development (Part 2)
Drupal Development (Part 2)
 
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
 
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial En
 
The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010
 
Dependency Injection with PHP and PHP 5.3
Dependency Injection with PHP and PHP 5.3Dependency Injection with PHP and PHP 5.3
Dependency Injection with PHP and PHP 5.3
 

Similar to Drupal 8 Hooks

Drupal 8: Theming
Drupal 8: ThemingDrupal 8: Theming
Drupal 8: Themingdrubb
 
Entities in drupal 7
Entities in drupal 7Entities in drupal 7
Entities in drupal 7Zsolt Tasnadi
 
Debugging in drupal 8
Debugging in drupal 8Debugging in drupal 8
Debugging in drupal 8Allie Jones
 
Your Entity, Your Code
Your Entity, Your CodeYour Entity, Your Code
Your Entity, Your CodeDrupalDay
 
Drupal 7 entities & TextbookMadness.com
Drupal 7 entities & TextbookMadness.comDrupal 7 entities & TextbookMadness.com
Drupal 7 entities & TextbookMadness.comJD Leonard
 
8 things to know about theming in drupal 8
8 things to know about theming in drupal 88 things to know about theming in drupal 8
8 things to know about theming in drupal 8Logan Farr
 
Drupal vs WordPress
Drupal vs WordPressDrupal vs WordPress
Drupal vs WordPressWalter Ebert
 
Osiąganie mądrej architektury z Symfony2
Osiąganie mądrej architektury z Symfony2 Osiąganie mądrej architektury z Symfony2
Osiąganie mądrej architektury z Symfony2 3camp
 
Introduction And Basics of Modules in Drupal 7
Introduction And Basics of Modules in Drupal 7 Introduction And Basics of Modules in Drupal 7
Introduction And Basics of Modules in Drupal 7 Dhinakaran Mani
 
Drupal Module Development - OSI Days 2010
Drupal Module Development - OSI Days 2010Drupal Module Development - OSI Days 2010
Drupal Module Development - OSI Days 2010Siva Epari
 
Extending and Customizing Open Atrium
Extending and Customizing Open AtriumExtending and Customizing Open Atrium
Extending and Customizing Open AtriumNuvole
 
Build powerfull and smart web applications with Symfony2
Build powerfull and smart web applications with Symfony2Build powerfull and smart web applications with Symfony2
Build powerfull and smart web applications with Symfony2Hugo Hamon
 
Drupal 7 Entity & Entity API
Drupal 7 Entity & Entity APIDrupal 7 Entity & Entity API
Drupal 7 Entity & Entity API均民 戴
 
Exploring Symfony's Code
Exploring Symfony's CodeExploring Symfony's Code
Exploring Symfony's CodeWildan Maulana
 
Drupal 8, Where Did the Code Go? From Info Hook to Plugin
Drupal 8, Where Did the Code Go? From Info Hook to PluginDrupal 8, Where Did the Code Go? From Info Hook to Plugin
Drupal 8, Where Did the Code Go? From Info Hook to PluginAcquia
 
D7 theming what's new - London
D7 theming what's new - LondonD7 theming what's new - London
D7 theming what's new - LondonMarek Sotak
 

Similar to Drupal 8 Hooks (20)

Drupal 8: Theming
Drupal 8: ThemingDrupal 8: Theming
Drupal 8: Theming
 
Entities in drupal 7
Entities in drupal 7Entities in drupal 7
Entities in drupal 7
 
Debugging in drupal 8
Debugging in drupal 8Debugging in drupal 8
Debugging in drupal 8
 
Your Entity, Your Code
Your Entity, Your CodeYour Entity, Your Code
Your Entity, Your Code
 
Your Entity, Your Code
Your Entity, Your CodeYour Entity, Your Code
Your Entity, Your Code
 
Drupal 7 entities & TextbookMadness.com
Drupal 7 entities & TextbookMadness.comDrupal 7 entities & TextbookMadness.com
Drupal 7 entities & TextbookMadness.com
 
8 things to know about theming in drupal 8
8 things to know about theming in drupal 88 things to know about theming in drupal 8
8 things to know about theming in drupal 8
 
Drupal vs WordPress
Drupal vs WordPressDrupal vs WordPress
Drupal vs WordPress
 
Doctrine and NoSQL
Doctrine and NoSQLDoctrine and NoSQL
Doctrine and NoSQL
 
Osiąganie mądrej architektury z Symfony2
Osiąganie mądrej architektury z Symfony2 Osiąganie mądrej architektury z Symfony2
Osiąganie mądrej architektury z Symfony2
 
Introduction And Basics of Modules in Drupal 7
Introduction And Basics of Modules in Drupal 7 Introduction And Basics of Modules in Drupal 7
Introduction And Basics of Modules in Drupal 7
 
Drupal Module Development - OSI Days 2010
Drupal Module Development - OSI Days 2010Drupal Module Development - OSI Days 2010
Drupal Module Development - OSI Days 2010
 
Extending and Customizing Open Atrium
Extending and Customizing Open AtriumExtending and Customizing Open Atrium
Extending and Customizing Open Atrium
 
Build powerfull and smart web applications with Symfony2
Build powerfull and smart web applications with Symfony2Build powerfull and smart web applications with Symfony2
Build powerfull and smart web applications with Symfony2
 
Drupal 7 Entity & Entity API
Drupal 7 Entity & Entity APIDrupal 7 Entity & Entity API
Drupal 7 Entity & Entity API
 
Exploring Symfony's Code
Exploring Symfony's CodeExploring Symfony's Code
Exploring Symfony's Code
 
Doctrine for NoSQL
Doctrine for NoSQLDoctrine for NoSQL
Doctrine for NoSQL
 
Drupal 8, Where Did the Code Go? From Info Hook to Plugin
Drupal 8, Where Did the Code Go? From Info Hook to PluginDrupal 8, Where Did the Code Go? From Info Hook to Plugin
Drupal 8, Where Did the Code Go? From Info Hook to Plugin
 
D7 theming what's new - London
D7 theming what's new - LondonD7 theming what's new - London
D7 theming what's new - London
 
Alfredo-PUMEX
Alfredo-PUMEXAlfredo-PUMEX
Alfredo-PUMEX
 

Recently uploaded

Insurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usageInsurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usageMatteo Carbone
 
👉Chandigarh Call Girls 👉9878799926👉Just Call👉Chandigarh Call Girl In Chandiga...
👉Chandigarh Call Girls 👉9878799926👉Just Call👉Chandigarh Call Girl In Chandiga...👉Chandigarh Call Girls 👉9878799926👉Just Call👉Chandigarh Call Girl In Chandiga...
👉Chandigarh Call Girls 👉9878799926👉Just Call👉Chandigarh Call Girl In Chandiga...rajveerescorts2022
 
Value Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsValue Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsP&CO
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Neil Kimberley
 
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...amitlee9823
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756dollysharma2066
 
Falcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to ProsperityFalcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to Prosperityhemanthkumar470700
 
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...Aggregage
 
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRLBAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRLkapoorjyoti4444
 
Famous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st CenturyFamous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st Centuryrwgiffor
 
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...amitlee9823
 
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service BangaloreCall Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangaloreamitlee9823
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with CultureSeta Wicaksana
 
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756dollysharma2066
 
Uneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration PresentationUneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration Presentationuneakwhite
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityEric T. Tung
 
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...lizamodels9
 
A DAY IN THE LIFE OF A SALESMAN / WOMAN
A DAY IN THE LIFE OF A  SALESMAN / WOMANA DAY IN THE LIFE OF A  SALESMAN / WOMAN
A DAY IN THE LIFE OF A SALESMAN / WOMANIlamathiKannappan
 

Recently uploaded (20)

Insurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usageInsurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usage
 
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabiunwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
 
👉Chandigarh Call Girls 👉9878799926👉Just Call👉Chandigarh Call Girl In Chandiga...
👉Chandigarh Call Girls 👉9878799926👉Just Call👉Chandigarh Call Girl In Chandiga...👉Chandigarh Call Girls 👉9878799926👉Just Call👉Chandigarh Call Girl In Chandiga...
👉Chandigarh Call Girls 👉9878799926👉Just Call👉Chandigarh Call Girl In Chandiga...
 
Value Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsValue Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and pains
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023
 
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
 
Falcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to ProsperityFalcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to Prosperity
 
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
 
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRLBAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
 
Famous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st CenturyFamous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st Century
 
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
 
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service BangaloreCall Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
 
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with Culture
 
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
 
Uneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration PresentationUneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration Presentation
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League City
 
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
 
A DAY IN THE LIFE OF A SALESMAN / WOMAN
A DAY IN THE LIFE OF A  SALESMAN / WOMANA DAY IN THE LIFE OF A  SALESMAN / WOMAN
A DAY IN THE LIFE OF A SALESMAN / WOMAN
 

Drupal 8 Hooks