SlideShare uma empresa Scribd logo
1 de 19
VIEWS for HACKERS an overview of Views programming v1.3 Karim Ratib (infojunkie@drupal) There's a module for that!
OBJECTIVES OF THIS TALK conceptual grasp of Views internal architecture ability to read Views and add-ons code ability to start coding Views add-ons
WHO AM I? Drupal user since 2005 infojunkie (uid 48424) Module author/maintainer since 2007 Views Bulk Operations Views Hacks Sheetnode Feeds Oauth Feeds Topics ... Drupal freelancer since 2008 There's a module for that! Vancouver, BC
OUTLINE CONTEXT  problem trivia definition   ARCHITECTURE overview components workflow file structure    EXAMPLES anatomy of Views add-ons
CONTEXT // problem coding node lists is boring coding node lists with filters is boring + 1 coding node lists with different themes is boring x 10 ... merlinofchaos chose to code all this for us!
CONTEXT // trivia   ,[object Object],  ,[object Object],   wc -l `find ./ -type f`     ,[object Object]
http://drupal.org/project/modules?filters=tid:89 ,[object Object],[object Object],      282K           Drupal      397K       CCK       269K   
CONTEXT // definition Views is a  SQL query generator and  renderer
ARCHITECTURE // overview // 1 SELECT n.title, u.name FROM {node} n INNER JOIN  {users} u ON n.uid = u.uid WHERE  n.status = 1 AND u.uid = arg(1) ORDER BY n.changed DESC hook_menu() => nodes/list theme('table', $results)
ARCHITECTURE // overview // 2 SELECT n.title, u.name  field FROM {node} n  base table = view type INNER JOIN  {users} u ON n.uid = u.uid  relationship WHERE  n.status = 1  filter AND u.uid = arg(1)  argument ORDER BY n.changed DESC  sort hook_menu() => nodes/list  display (page) theme('table', $results)  style (table)
ARCHITECTURE // overview // 3 same concepts are found on the Views UI view type, display, style, fields, filters, etc.
ARCHITECTURE // components // 1 containment relationships
ARCHITECTURE // components // 2 plugin type relationships
ARCHITECTURE // components // 3 handler type relationships
ARCHITECTURE // workflow BUILD init components, get arguments, generate SQL view::build() hook_views_pre_build(), post_build() hook_views_query_alter() EXECUTE execute SQL, store results  view::execute() hook_views_pre_execute(), post_execute() RENDER execute theme functions view::render() hook_views_pre_render(), post_render()
ARCHITECTURE // file structure  views /   Drupal façade      ./includes   core: view, query, base classes      ./handlers   SQL add-ons: fields, filters, arguments,                                    relationships, sort      ./plugins   non-SQL add-ons: display, style, row,                                   arg default, arg validator, access, cache, query (3.x), exposed form (3.x), pager (3.x)      ./theme   theme and preprocessor files        ./modules   data models + specialized handlers          ./node          ./user          ./taxonomy ...
EXAMPLES // views_block Exposing Drupal block data model to Views hook_views_api() inform Views that we exist (in mymodule.module) hook_views_data() define our data model (in mymodule.views.inc) hook_views_handlers() declare our field handlers (in mymodule.views.inc) hook_views_default_views() define our default views (in mymodule.views_default.inc) handlers classes define our field handlers (in individual files)
EXAMPLES // views_flipped_table Provide new style plugin to render view results hook_views_api() inform Views that we exist (in mymodule.module) hook_views_plugins() declare our style plugin (in mymodule.views.inc) theme template as declared above (in separate file) theme preprocessor corresponding to theme template (in mymodule.module)
EXAMPLES // views_autosubmit Auto-submit exposed form elements hook_views_api() not needed because we're bypassing Views! hook_form_views_exposed_form_alter() form altering code for Views exposed filters (in mymodule.module) Drupal.behaviors.views_autosubmit() bind to form input change to auto-submit the form (in mymodule.js)

Mais conteúdo relacionado

Destaque

Anahata as Heart-centered Consciousness
Anahata as Heart-centered ConsciousnessAnahata as Heart-centered Consciousness
Anahata as Heart-centered ConsciousnessRobert Beshara
 
Overview of Metabletics
Overview of MetableticsOverview of Metabletics
Overview of MetableticsRobert Beshara
 
Trees In The Database - Advanced data structures
Trees In The Database - Advanced data structuresTrees In The Database - Advanced data structures
Trees In The Database - Advanced data structuresLorenzo Alberton
 
Checkdesk: Collaborative Verification in Action
Checkdesk: Collaborative Verification in ActionCheckdesk: Collaborative Verification in Action
Checkdesk: Collaborative Verification in ActionKarim Ratib
 

Destaque (6)

Meditation
MeditationMeditation
Meditation
 
Anahata as Heart-centered Consciousness
Anahata as Heart-centered ConsciousnessAnahata as Heart-centered Consciousness
Anahata as Heart-centered Consciousness
 
Overview of Metabletics
Overview of MetableticsOverview of Metabletics
Overview of Metabletics
 
Self and identities
Self and identitiesSelf and identities
Self and identities
 
Trees In The Database - Advanced data structures
Trees In The Database - Advanced data structuresTrees In The Database - Advanced data structures
Trees In The Database - Advanced data structures
 
Checkdesk: Collaborative Verification in Action
Checkdesk: Collaborative Verification in ActionCheckdesk: Collaborative Verification in Action
Checkdesk: Collaborative Verification in Action
 

Semelhante a Views for hackers v1.3

Drupal distributions - how to build them
Drupal distributions - how to build themDrupal distributions - how to build them
Drupal distributions - how to build themDick Olsson
 
Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...
Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...
Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...Carl Brown
 
Drupal tips 'n tricks
Drupal tips 'n tricksDrupal tips 'n tricks
Drupal tips 'n tricksJohn Tsevdos
 
Patterns in Python
Patterns in PythonPatterns in Python
Patterns in Pythondn
 
Killer Scenarios with Data Lake in Azure with U-SQL
Killer Scenarios with Data Lake in Azure with U-SQLKiller Scenarios with Data Lake in Azure with U-SQL
Killer Scenarios with Data Lake in Azure with U-SQLMichael Rys
 
Intro to iOS Development • Made by Many
Intro to iOS Development • Made by ManyIntro to iOS Development • Made by Many
Intro to iOS Development • Made by Manykenatmxm
 
Object-oriented programming (OOP) with Complete understanding modules
Object-oriented programming (OOP) with Complete understanding modulesObject-oriented programming (OOP) with Complete understanding modules
Object-oriented programming (OOP) with Complete understanding modulesDurgesh Singh
 
Opensource gis development - part 5
Opensource gis development - part 5Opensource gis development - part 5
Opensource gis development - part 5Andrea Antonello
 
Breaking down data silos with the open data protocol
Breaking down data silos with the open data protocolBreaking down data silos with the open data protocol
Breaking down data silos with the open data protocolWoodruff Solutions LLC
 
Making views - DrupalGov Canberra 2017
Making views - DrupalGov Canberra 2017Making views - DrupalGov Canberra 2017
Making views - DrupalGov Canberra 2017Donna Benjamin
 
Ch.1 oop introduction, classes and objects
Ch.1 oop introduction, classes and objectsCh.1 oop introduction, classes and objects
Ch.1 oop introduction, classes and objectsITNet
 
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)Konstantin Komelin
 

Semelhante a Views for hackers v1.3 (20)

Drupal 8 Hooks
Drupal 8 HooksDrupal 8 Hooks
Drupal 8 Hooks
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Drupal distributions - how to build them
Drupal distributions - how to build themDrupal distributions - how to build them
Drupal distributions - how to build them
 
Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...
Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...
Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...
 
B13 Investigating oracle by Julian Dyke
B13 Investigating oracle by Julian DykeB13 Investigating oracle by Julian Dyke
B13 Investigating oracle by Julian Dyke
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Drupal tips 'n tricks
Drupal tips 'n tricksDrupal tips 'n tricks
Drupal tips 'n tricks
 
Dn D Custom 1
Dn D Custom 1Dn D Custom 1
Dn D Custom 1
 
Dn D Custom 1
Dn D Custom 1Dn D Custom 1
Dn D Custom 1
 
Patterns in Python
Patterns in PythonPatterns in Python
Patterns in Python
 
Killer Scenarios with Data Lake in Azure with U-SQL
Killer Scenarios with Data Lake in Azure with U-SQLKiller Scenarios with Data Lake in Azure with U-SQL
Killer Scenarios with Data Lake in Azure with U-SQL
 
Intro to iOS Development • Made by Many
Intro to iOS Development • Made by ManyIntro to iOS Development • Made by Many
Intro to iOS Development • Made by Many
 
Object-oriented programming (OOP) with Complete understanding modules
Object-oriented programming (OOP) with Complete understanding modulesObject-oriented programming (OOP) with Complete understanding modules
Object-oriented programming (OOP) with Complete understanding modules
 
Opensource gis development - part 5
Opensource gis development - part 5Opensource gis development - part 5
Opensource gis development - part 5
 
Breaking down data silos with the open data protocol
Breaking down data silos with the open data protocolBreaking down data silos with the open data protocol
Breaking down data silos with the open data protocol
 
Making views - DrupalGov Canberra 2017
Making views - DrupalGov Canberra 2017Making views - DrupalGov Canberra 2017
Making views - DrupalGov Canberra 2017
 
Lobos Introduction
Lobos IntroductionLobos Introduction
Lobos Introduction
 
Ch.1 oop introduction, classes and objects
Ch.1 oop introduction, classes and objectsCh.1 oop introduction, classes and objects
Ch.1 oop introduction, classes and objects
 
Best practices tekx
Best practices tekxBest practices tekx
Best practices tekx
 
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)
 

Último

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 

Último (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

Views for hackers v1.3

  • 1. VIEWS for HACKERS an overview of Views programming v1.3 Karim Ratib (infojunkie@drupal) There's a module for that!
  • 2. OBJECTIVES OF THIS TALK conceptual grasp of Views internal architecture ability to read Views and add-ons code ability to start coding Views add-ons
  • 3. WHO AM I? Drupal user since 2005 infojunkie (uid 48424) Module author/maintainer since 2007 Views Bulk Operations Views Hacks Sheetnode Feeds Oauth Feeds Topics ... Drupal freelancer since 2008 There's a module for that! Vancouver, BC
  • 4. OUTLINE CONTEXT problem trivia definition   ARCHITECTURE overview components workflow file structure   EXAMPLES anatomy of Views add-ons
  • 5. CONTEXT // problem coding node lists is boring coding node lists with filters is boring + 1 coding node lists with different themes is boring x 10 ... merlinofchaos chose to code all this for us!
  • 6.
  • 7.
  • 8. CONTEXT // definition Views is a SQL query generator and renderer
  • 9. ARCHITECTURE // overview // 1 SELECT n.title, u.name FROM {node} n INNER JOIN {users} u ON n.uid = u.uid WHERE n.status = 1 AND u.uid = arg(1) ORDER BY n.changed DESC hook_menu() => nodes/list theme('table', $results)
  • 10. ARCHITECTURE // overview // 2 SELECT n.title, u.name field FROM {node} n base table = view type INNER JOIN {users} u ON n.uid = u.uid relationship WHERE n.status = 1 filter AND u.uid = arg(1) argument ORDER BY n.changed DESC sort hook_menu() => nodes/list display (page) theme('table', $results) style (table)
  • 11. ARCHITECTURE // overview // 3 same concepts are found on the Views UI view type, display, style, fields, filters, etc.
  • 12. ARCHITECTURE // components // 1 containment relationships
  • 13. ARCHITECTURE // components // 2 plugin type relationships
  • 14. ARCHITECTURE // components // 3 handler type relationships
  • 15. ARCHITECTURE // workflow BUILD init components, get arguments, generate SQL view::build() hook_views_pre_build(), post_build() hook_views_query_alter() EXECUTE execute SQL, store results view::execute() hook_views_pre_execute(), post_execute() RENDER execute theme functions view::render() hook_views_pre_render(), post_render()
  • 16. ARCHITECTURE // file structure views / Drupal façade     ./includes core: view, query, base classes     ./handlers SQL add-ons: fields, filters, arguments,                                    relationships, sort      ./plugins non-SQL add-ons: display, style, row,                                  arg default, arg validator, access, cache, query (3.x), exposed form (3.x), pager (3.x)      ./theme theme and preprocessor files      ./modules data models + specialized handlers          ./node         ./user         ./taxonomy ...
  • 17. EXAMPLES // views_block Exposing Drupal block data model to Views hook_views_api() inform Views that we exist (in mymodule.module) hook_views_data() define our data model (in mymodule.views.inc) hook_views_handlers() declare our field handlers (in mymodule.views.inc) hook_views_default_views() define our default views (in mymodule.views_default.inc) handlers classes define our field handlers (in individual files)
  • 18. EXAMPLES // views_flipped_table Provide new style plugin to render view results hook_views_api() inform Views that we exist (in mymodule.module) hook_views_plugins() declare our style plugin (in mymodule.views.inc) theme template as declared above (in separate file) theme preprocessor corresponding to theme template (in mymodule.module)
  • 19. EXAMPLES // views_autosubmit Auto-submit exposed form elements hook_views_api() not needed because we're bypassing Views! hook_form_views_exposed_form_alter() form altering code for Views exposed filters (in mymodule.module) Drupal.behaviors.views_autosubmit() bind to form input change to auto-submit the form (in mymodule.js)
  • 20. Karim Ratib (infojunkie@drupal) There's a module for that! http://there is a module for that.com Thank you!