SlideShare une entreprise Scribd logo
1  sur  43
toon@puresign.be
                   Drupal FieldAPI
   @toonketels     Pure Sign Breakfast Presentation 16/02/2012
Overview
           ‣   Entities
           ‣   Fields
           ‣   Anatomy of a field
           ‣   Creating a new fieldtype
           ‣   Why using the Field API
           ‣   Resources
Entities
Entities are the things, the data, the information,
 the “stuff”, that we want do deal with in our
                Drupal application.




                                           http://www.istos.it/comment/2882




                                         Entities
Entities
           ‣   An abstraction for content
           ‣   Entities & bundles
           ‣   Created because not everything is a
               node
           ‣   What makes node powerful is their
               fieldability
Fields
The smallest data items we add to entities.




                                       Fields
Field type



    Field



Field instance




 Layers of abstraction
Fields types
               ‣   Contains business logic of field
               ‣   Is conserned with:
                   -   What happens with data loaded
                       from storage layer?
                   -   What should happen with data
                       inputted by user to storage layer?
               ‣   Examples:
                   -   List
                   -   Text
                   -   Price
                   -   Link
Field types
Fields
         ‣   Data structure holding some settings


         ‣   A name and a type
             ‣   Link: field_website


         ‣   Some cannot be reverted, influence
             on db


         ‣   Settings apply everywhere field is
             used
Field
Field
Field
Field instance
                 ‣   A field attached to a bundle


                 ‣   Adds bundle specific settings


                 ‣   bundle_fieldname
Field
Field
Anatomy of a Field
Field



                        Display
Input widget
                       formatter




               Anatomy of a field
Creating a new fieldtype
3 parts
          ‣   Defining a field


          ‣   Defining an input widget


          ‣   Defining a formatter
Field
        ‣   hook_field_info()
        ‣   hook_field_schema()
        ‣   hook_field_validate()
        ‣   hook_field_is_empty()
Widget
         ‣   hook_field_widget_info()
         ‣   hook_field_widget_form()
Formatter
            ‣   hook_field_formatter_info()
            ‣   hook_field_formatter_view()
Formatter
Code example
Why using the Field API
Why?
       ‣   It’s the way it goes...
Reusability
              ‣   Module: enable on any site


              ‣   We define a type
                  ‣   Can be attached to any entity
                      bundle
                  ‣   User can customize it
                  ‣   Create an instance
Pluggable      ‣   Decoupling
architecture
                   ‣   Field data
                   ‣   Input widget
                   ‣   Display


               ‣   Other devs can
                   ‣   Create input widgets
                   ‣   Create formatters
                   ‣   Alter (alter hooks)
Storage    ‣   We don’t write sql
agnostic
               ‣   Data retrieval done for us
               ‣   Only implement schema


           ‣   Storage engine independent
Settings for
free           ‣   Settings for free
                   ‣   Required
                   ‣   Help text
                   ‣   Defaults
                   ‣   Single - multiple - max
Settings for free
Single multiple, max number
Consistent UI build for us
UI
     ‣   Configure field
     ‣   Input widget
     ‣   Selection of formatter
Views integration
Views
integration   ‣   Display field
                  ‣   Multiple field settings
              ‣   Filter criteria
                  ‣   compound_one
                  ‣   compound_two
                  ‣   delta
              ‣   Sort criteria
                  ‣   compound_one
                  ‣   compound_two
                  ‣   delta
Features exportability
Display & DS   ‣   Works with DS
                    ‣   (better: DS works with fields)
Resources
Resources
            ‣   http://drupal.org/node/707832
            ‣   http://api.drupal.org/api/drupal/
                modules!field!field.module/group/
                field/7
            ‣   http://api.drupal.org/api/examples/
                field_example
                %21field_example.module/7
toon@puresign.be
   @toonketels     Questions?

Contenu connexe

Similaire à Pure Sign Breakfast Presentations - Drupal FieldAPI

Protocol Buffers and Hadoop at Twitter
Protocol Buffers and Hadoop at TwitterProtocol Buffers and Hadoop at Twitter
Protocol Buffers and Hadoop at TwitterKevin Weil
 
What's New in Drupal 8: Entity Field API
What's New in Drupal 8: Entity Field APIWhat's New in Drupal 8: Entity Field API
What's New in Drupal 8: Entity Field APIDrupalize.Me
 
PiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in PythonPiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in PythonMax Klymyshyn
 
Building Highly Customizable iOS Applications on Top of a Core Codebase
Building Highly Customizable iOS Applications on Top of a Core CodebaseBuilding Highly Customizable iOS Applications on Top of a Core Codebase
Building Highly Customizable iOS Applications on Top of a Core CodebaseSupercharge
 
Fighting legacy with hexagonal architecture and frameworkless php
Fighting legacy with hexagonal architecture and frameworkless phpFighting legacy with hexagonal architecture and frameworkless php
Fighting legacy with hexagonal architecture and frameworkless phpFabio Pellegrini
 
Drupal jam 2017 services
Drupal jam 2017 servicesDrupal jam 2017 services
Drupal jam 2017 servicesErik Stielstra
 
Fork 4 Developers
Fork 4 DevelopersFork 4 Developers
Fork 4 DevelopersFork-CMS
 
GraphQL vs. (the) REST
GraphQL vs. (the) RESTGraphQL vs. (the) REST
GraphQL vs. (the) RESTcoliquio GmbH
 
Grails EE
Grails EEGrails EE
Grails EEGR8Conf
 
2015 09-02 - transaction log prototype
2015 09-02 - transaction log prototype2015 09-02 - transaction log prototype
2015 09-02 - transaction log prototypeDavid Heath
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Mack Hardy
 
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten ZiegelerNew and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegelermfrancis
 
Cisco connect montreal 2018 saalvare md-program-xr-v2
Cisco connect montreal 2018 saalvare md-program-xr-v2Cisco connect montreal 2018 saalvare md-program-xr-v2
Cisco connect montreal 2018 saalvare md-program-xr-v2Cisco Canada
 
Loading Huge Amounts of Data
Loading Huge Amounts of DataLoading Huge Amounts of Data
Loading Huge Amounts of DataVaticle
 
How to generate code coverage reports in xcode with slather
How to generate code coverage reports in xcode with slatherHow to generate code coverage reports in xcode with slather
How to generate code coverage reports in xcode with slatherallanh0526
 
Bug bites Elephant? Test-driven Quality Assurance in Big Data Application Dev...
Bug bites Elephant? Test-driven Quality Assurance in Big Data Application Dev...Bug bites Elephant? Test-driven Quality Assurance in Big Data Application Dev...
Bug bites Elephant? Test-driven Quality Assurance in Big Data Application Dev...inovex GmbH
 

Similaire à Pure Sign Breakfast Presentations - Drupal FieldAPI (20)

Protocol Buffers and Hadoop at Twitter
Protocol Buffers and Hadoop at TwitterProtocol Buffers and Hadoop at Twitter
Protocol Buffers and Hadoop at Twitter
 
What's New in Drupal 8: Entity Field API
What's New in Drupal 8: Entity Field APIWhat's New in Drupal 8: Entity Field API
What's New in Drupal 8: Entity Field API
 
PiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in PythonPiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in Python
 
Building Highly Customizable iOS Applications on Top of a Core Codebase
Building Highly Customizable iOS Applications on Top of a Core CodebaseBuilding Highly Customizable iOS Applications on Top of a Core Codebase
Building Highly Customizable iOS Applications on Top of a Core Codebase
 
Fighting legacy with hexagonal architecture and frameworkless php
Fighting legacy with hexagonal architecture and frameworkless phpFighting legacy with hexagonal architecture and frameworkless php
Fighting legacy with hexagonal architecture and frameworkless php
 
Drupal jam 2017 services
Drupal jam 2017 servicesDrupal jam 2017 services
Drupal jam 2017 services
 
Fork 4 Developers
Fork 4 DevelopersFork 4 Developers
Fork 4 Developers
 
GraphQL vs. (the) REST
GraphQL vs. (the) RESTGraphQL vs. (the) REST
GraphQL vs. (the) REST
 
Grails EE
Grails EEGrails EE
Grails EE
 
Dynamic binding
Dynamic bindingDynamic binding
Dynamic binding
 
Into to drupal8
Into to drupal8Into to drupal8
Into to drupal8
 
2015 09-02 - transaction log prototype
2015 09-02 - transaction log prototype2015 09-02 - transaction log prototype
2015 09-02 - transaction log prototype
 
Doc store
Doc storeDoc store
Doc store
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten ZiegelerNew and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
 
ArangoDB
ArangoDBArangoDB
ArangoDB
 
Cisco connect montreal 2018 saalvare md-program-xr-v2
Cisco connect montreal 2018 saalvare md-program-xr-v2Cisco connect montreal 2018 saalvare md-program-xr-v2
Cisco connect montreal 2018 saalvare md-program-xr-v2
 
Loading Huge Amounts of Data
Loading Huge Amounts of DataLoading Huge Amounts of Data
Loading Huge Amounts of Data
 
How to generate code coverage reports in xcode with slather
How to generate code coverage reports in xcode with slatherHow to generate code coverage reports in xcode with slather
How to generate code coverage reports in xcode with slather
 
Bug bites Elephant? Test-driven Quality Assurance in Big Data Application Dev...
Bug bites Elephant? Test-driven Quality Assurance in Big Data Application Dev...Bug bites Elephant? Test-driven Quality Assurance in Big Data Application Dev...
Bug bites Elephant? Test-driven Quality Assurance in Big Data Application Dev...
 

Dernier

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
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
 
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
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
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
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
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
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 

Dernier (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
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
 
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
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
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
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
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?
 
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...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

Pure Sign Breakfast Presentations - Drupal FieldAPI

  • 1. toon@puresign.be Drupal FieldAPI @toonketels Pure Sign Breakfast Presentation 16/02/2012
  • 2. Overview ‣ Entities ‣ Fields ‣ Anatomy of a field ‣ Creating a new fieldtype ‣ Why using the Field API ‣ Resources
  • 4. Entities are the things, the data, the information, the “stuff”, that we want do deal with in our Drupal application. http://www.istos.it/comment/2882 Entities
  • 5. Entities ‣ An abstraction for content ‣ Entities & bundles ‣ Created because not everything is a node ‣ What makes node powerful is their fieldability
  • 7. The smallest data items we add to entities. Fields
  • 8. Field type Field Field instance Layers of abstraction
  • 9. Fields types ‣ Contains business logic of field ‣ Is conserned with: - What happens with data loaded from storage layer? - What should happen with data inputted by user to storage layer? ‣ Examples: - List - Text - Price - Link
  • 11. Fields ‣ Data structure holding some settings ‣ A name and a type ‣ Link: field_website ‣ Some cannot be reverted, influence on db ‣ Settings apply everywhere field is used
  • 12. Field
  • 13. Field
  • 14. Field
  • 15. Field instance ‣ A field attached to a bundle ‣ Adds bundle specific settings ‣ bundle_fieldname
  • 16. Field
  • 17. Field
  • 18. Anatomy of a Field
  • 19. Field Display Input widget formatter Anatomy of a field
  • 20. Creating a new fieldtype
  • 21. 3 parts ‣ Defining a field ‣ Defining an input widget ‣ Defining a formatter
  • 22. Field ‣ hook_field_info() ‣ hook_field_schema() ‣ hook_field_validate() ‣ hook_field_is_empty()
  • 23. Widget ‣ hook_field_widget_info() ‣ hook_field_widget_form()
  • 24. Formatter ‣ hook_field_formatter_info() ‣ hook_field_formatter_view()
  • 27. Why using the Field API
  • 28. Why? ‣ It’s the way it goes...
  • 29. Reusability ‣ Module: enable on any site ‣ We define a type ‣ Can be attached to any entity bundle ‣ User can customize it ‣ Create an instance
  • 30. Pluggable ‣ Decoupling architecture ‣ Field data ‣ Input widget ‣ Display ‣ Other devs can ‣ Create input widgets ‣ Create formatters ‣ Alter (alter hooks)
  • 31. Storage ‣ We don’t write sql agnostic ‣ Data retrieval done for us ‣ Only implement schema ‣ Storage engine independent
  • 32. Settings for free ‣ Settings for free ‣ Required ‣ Help text ‣ Defaults ‣ Single - multiple - max
  • 36. UI ‣ Configure field ‣ Input widget ‣ Selection of formatter
  • 38. Views integration ‣ Display field ‣ Multiple field settings ‣ Filter criteria ‣ compound_one ‣ compound_two ‣ delta ‣ Sort criteria ‣ compound_one ‣ compound_two ‣ delta
  • 40. Display & DS ‣ Works with DS ‣ (better: DS works with fields)
  • 42. Resources ‣ http://drupal.org/node/707832 ‣ http://api.drupal.org/api/drupal/ modules!field!field.module/group/ field/7 ‣ http://api.drupal.org/api/examples/ field_example %21field_example.module/7
  • 43. toon@puresign.be @toonketels Questions?

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n