2 options
Drupal 10 module development : develop and deliver engaging and intuitive enterprise-level apps / Daniel Sipos.
- Format:
- Book
- Author/Creator:
- Sipos, Dániel, author.
- Language:
- English
- Subjects (All):
- Drupal (Computer file).
- Web sites--Authoring programs.
- Web sites.
- Web site development.
- Open source software.
- Physical Description:
- 1 online resource (580 pages)
- Edition:
- Fourth edition.
- Place of Publication:
- Birmingham, England : Packt Publishing, [2023]
- Biography/History:
- Sipos Daniel: Daniel Sipos is a senior web developer specializing in Drupal. He's been working with Drupal sites since version 6, and started out, like many others, as a site builder. He's a self-taught programmer with many years of experience working professionally on complex Drupal 7 and 8 projects. In his spare time, he runs webomelette, a Drupal website where he writes technical articles, tips, and techniques related to Drupal development.
- Summary:
- Embark on a journey of Drupal module development with the latest edition of this must-have guide written by Daniel Sipos – a Drupal community member! This fourth edition is meticulously revised to cover the latest Drupal 10 enhancements that will help you build custom Drupal modules with an understanding of code deprecations, changing architecture, data modeling, multilingual ecosystem, and so on. You'll begin with understanding the core components of Drupal 10 architecture, discovering its subsystems and unlocking the secrets of creating your first Drupal module. Further, you'll delve into Drupal logging and mailing systems, creating theme hooks, and rendering a layout. As you progress, you'll work with different types of data storage, custom entities, field types, and work with Database APIs for lower-level database queries. You'll learn to reap the power of JavaScript and ensure that your code works seamlessly on multilingual sites. You'll also learn to create custom views, automate tests for your functionalities, and write secure code for your Drupal apps. By the end of this book, you'll have gained confidence in developing complex modules that can solve even the most complex business problems and might even become a valuable contributor to the Drupal community!
- Contents:
- Cover
- Title Page
- Copyright and Credits
- Contributors
- Table of Contents
- Preface
- Chapter 1: Developing for Drupal
- Introducing Drupal (for developers)
- How did we get to Drupal 10?
- Developing for Drupal
- Technologies that drive Drupal
- PHP
- Databases and MySQL
- The web server
- Drupal architecture
- Drupal's major subsystems
- Tools for developing in Drupal
- Summary
- Chapter 2: Creating Your First Module
- Creating a module
- Your first hook implementation
- Route and controller
- Services
- Using services in Drupal
- Injecting the service into our Controller
- Invoked Controllers
- The Form API
- Altering forms
- Custom submit handlers
- Rendering forms
- Service dependencies
- Blocks
- Our first block plugin
- Block configuration
- Working with links
- The URL
- The link
- Which way to link?
- Event Dispatcher and redirects
- Redirecting from a Controller
- Redirecting from a subscriber
- Dispatching events
- Chapter 3: Logging and Mailing
- Logging
- The Drupal logging theory
- Our own logger channel
- Our own logger
- Logging for Hello World
- Logging recap
- Mail API
- The theory behind the Mail API
- Implementing hook_mail()
- Sending emails
- Altering someone else's emails
- Custom mail plugins
- Mail API recap
- Tokens
- The Token API
- Using tokens
- Defining new tokens
- Tokens recap
- Chapter 4: Theming
- Business logic versus presentation logic
- Twig
- Theme hooks
- Theme hook suggestions
- Render arrays
- The structure of a render array
- The render pipeline
- Assets and libraries
- Libraries
- Common theme hooks
- Lists
- Links
- Tables
- Attributes
- Layouts
- Defining layouts
- Rendering a layout
- Theming our Hello World module
- Chapter 5: Menus and Menu Links
- The menu system
- Menus.
- Menu links
- MenuLink trees
- Rendering menus
- Working with menu links
- Defining menu links
- Manipulating menu links
- Defining local tasks
- Defining local actions
- Defining contextual links
- Chapter 6: Data Modeling and Storage
- Different types of data storage
- The State API
- TempStore
- Private TempStore
- Shared TempStore
- Tempstore recap
- The UserData API
- Configuration API
- Introduction
- Configuration storage
- Configuration recap
- Entities
- Content versus configuration entity types
- Entity type plugins
- Fields
- Entity types recap
- TypedData
- Why TypedData?
- What is TypedData?
- The low-level API
- Content entities
- TypedData recap
- Interacting with the Entity API
- Querying entities
- Loading entities
- Reading entities
- Manipulating entities
- Creating entities
- Rendering content entities
- Pseudo-fields
- Entity validation
- Chapter 7: Your Own Custom Entity and Plugin Types
- Our custom content entity type
- Entity updates
- Our custom plugin type
- Our custom configuration entity type
- The Importer plugin
- Content entity bundles
- Our own Drush command
- Chapter 8: The Database API
- The Schema API
- Running queries
- Select queries
- Pagers
- Insert queries
- Update queries
- Delete queries
- Transactions
- Query alters
- Update hooks
- Post update hooks
- Chapter 9: Custom Fields
- A recap of Field type plugins
- Field type
- Field widget
- Field formatter
- Field settings
- Using our custom field type as a base field
- Chapter 10: Access Control
- Introduction to the Drupal access system
- Roles and permissions under the hood
- Defining permissions
- Checking the user credentials
- Route access
- Custom route access
- Programmatically checking access on routes.
- Bonus - dynamic route options for access control
- CSRF protection on routes
- Altering routes
- Entity access
- Injecting services into Entity handlers
- Entity access hooks
- Field access
- Entity access in routes
- Node access grants
- Block access
- Chapter 11: Caching
- Introduction to caching
- Cacheability metadata
- Cache tags
- Cache contexts
- max-age
- Using the cache metadata
- Placeholders and lazy building
- Lazy builders
- Using the Cache API
- Creating our own cache bin
- Chapter 12: JavaScript and the Ajax API
- JavaScript in Drupal
- Drupal behaviors
- Drupal settings
- The Ajax API
- Ajax links
- Ajax in forms
- The States (Form) system
- Chapter 13: Internationalization and Languages
- Introduction to the multilingual ecosystem
- Language
- Content translation
- Configuration translation
- Interface translation
- Internationalization
- Content entities and the translation API
- Chapter 14: Batches, Queues, and Cron
- Batch-powered update hooks
- Batch operations
- Creating the batch
- Cron
- Queues
- Introduction to the Queue API
- Cron-based queues
- Processing a queue programmatically
- The Lock API
- Chapter 15: Views
- Entities in Views
- Exposing custom data to Views
- Views data
- Custom Views field
- Field configuration
- Custom Views filter
- Custom Views argument
- Views theming
- Views hooks
- Chapter 16: Working with Files and Images
- The filesystem
- Stream wrappers
- Managed versus unmanaged files
- Using the File and Image fields
- Working with managed files
- Attaching managed files to entities
- Helpful functions for dealing with managed files
- Managed file uploads
- Our own stream wrapper
- Working with unmanaged files
- Private filesystem
- Images.
- Image toolkits
- Image styles
- Rendering images
- Chapter 17: Automated Testing
- Testing methodologies in Drupal
- PHPUnit
- Registering tests
- Unit tests
- Mocked dependencies
- Kernel tests
- TeamCleaner test
- CsvImporter test
- Functional tests
- Configuration for Functional tests
- Hello World page test
- Hello World form test
- Functional JavaScript tests
- Time test
- Chapter 18: Drupal Security
- Cross-Site Scripting (XSS)
- Sanitization methods in Drupal
- Double escaping
- SQL Injection
- Cross-Site Request Forgery (CSRF)
- Index
- Other Books You May Enjoy.
- Notes:
- Includes index.
- Description based on print version record.
- ISBN:
- 9781837638178
- 1837638179
- OCLC:
- 1376194150
The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.