The Views Context
FreeThis screencast covers the following topics:
- Creating a Context display type in Views.
- Placing individual View rows in your custom page.
- Displaying other View render elements in your custom page (such as the pager or header).
- Using the View context to load further contextual object.
This screencast covers the following topics:
- Adding new contextual objects with manual selection.
- Adding new contextual objects with relationships.
- Chaining contextual objects, with the example of loading a node term, and then loading the term top level parent (or not).
This tutorial covers the following topics:
- The Contextual Administration module and variant type.
- Auto-populating node reference fields for new nodes.
- A quick glance at other functionality in Contextual Administration: vocabulary administration pages, user administration pages, quick content handling pages, and more.
- Using the local actions menu type.
This screencast covers the following topics:
- Creating custom paths with Page manager
- Defining required and optional wildcards in a path
- Loading contextual objects from path arguments
- Creating access rules for custom pages
- Creating menu tabs, local actions and other visible menu items
- Making menu items only show in certain circumstances, such as only on selected node types
Panel Pane Settings
FreeThis screencast covers the following topics:
- Using visibility rules to determine when panes should show
- Using per-pane or per-page caching
- Setting caching granularity to per context or per argument
- Editing basic pane settings
- Moving panes between different panel regions
- Some layout settings for panes
More View Panes
FreeThis screencast covers the following topics:
- Setting name, description and category for view panes
- Overriding the title of the view
- Overriding the number of items to display
- Some other override options
- The "context is optional" setting for argument input/contextual filter value input
This screencast covers the following topics:
- Setting up contextual filters with Views Content Panes
- Getting argument input (contextual filter value) to a Views Content Pane
- Embedding a Views content pane in a panel
This screencast covers the following topics:
- What is Panels?
- Selecting Panels layout
- Disabling block regions on a panel page
- Adding content to a panel
- Outputting individual node fields in a panel page
- Manually setting the title on a panel page
- Inheriting page title from a panel pane
This screencast covers the following topics:
- How to create additional variants to a custom page
- How to set selection rules with more than one condition
- Why the order of variants is important, and how to change their order
This screencast covers the following topics about the Page Manager module, which is a module included within CTools.
- The basic framework of Page manager – creating custom paths and assigning content/reactions to them
- Mentioning some modules that can be used with Page manager, such as Panels and Contextual administration
- Overriding node templates to allow customized content/reaction
- Introduction to variants
- Introduction to selection rules
- Using the HTTP response code variant type, and using it for redirections
- Introduction to context or contextual objects
In this introductory video we go over what you should already know to get the most out of this series. We also describe topics covered in each of the 13 episodes – over 2 hours in total.
Each episode covers just one concept, when possible, so you can get the most out of them without getting overwhelmed.
If you need to brush up on Views, you can watch our Intro to Views for Drupal 7 series.
In this chapter we learn about changing the definition of a database table after it has already been installed. This example expands on the previous chapters by adding a new field to the table to collect the date a user last visited a node. We learn more about hook_update_N() as well as db_add_field().
In this chapter we learn other ways to interact with our database beyond the simple db_select() query from the earlier video. This example walks through writing a module that that saves and displays data about how many times a user has visited a specific page. We learn about db_select(), db_insert(), db_update(), db_merge(), db_delete() and introduce the concept of "get and set" helper functions.
In this chapter we learn how to get data out of the database and display it. The example walks through writing a module that creates a page that displays how many nodes are published and unpublished for each content type in our site. We use the db_select() function to accomplish this.
In this excerpt from the Overview of Drupal 7, Angie Byron, talks about the Database API in Drupal 7. This was a round table discussion with other Lullabots on the line who ask and answer questions, in addition to Angie's presentation. This lays a good foundation for how the database system works in Drupal and sets you up for the hands-on tutorials that follow.
Additional resources
In this chapter we learn how to create a new database table. This example walks through creating a module that defines the the properties of our new table and also programatically creating that table. We learn about hook_schema() and hook_update_N() in our module's install file.
Trainers note: This video starts out with a module that implements hook_node_view() and stores data about views in the $_SESSION variable. It also states that we built this earlier in the series. However, that's not true. We did talk about hook_node_view() in https://drupalize.me/videos/event-driven-hook-system, but we never actually wrote the $_SESSION handling part. So, if you're following along and want the same sample code we start with make sure you download the code attached to this node.
This video goes through the process of changing some of the properties of a form with the hook_form_alter() function. This hook is a very powerful tool to be able to modify existing Drupal forms, created by core or contributed modules, and tailor them to your needs.
This video shows how to target a specific form with the hook_form_FORM_ID_alter and creating a customized validation function for a form.
Note: There is a typo in this video. (The code is correct in the downloadable example file attached to the previous video.)
In the demo_validate_password()
function, the following line shown in the video if (in_array($form['values']['pass'], $badpasswords)) {
should be if (in_array($form_state['values']['pass'], $badpasswords)) {
.
This video goes through the process of creating a configuration form in order to save settings to the variables table in the database, and how to integrate those variables into your module.
Correction
The $item
array in the function demo_menu()
should be named $items
, to match the return $items;
line. (Either that or return $items;
should be fixed to return $item;
.) Just make sure the array you are building matches the name of the variable you are returning.
Additional resources
This videos goes through the process of creating a form with Drupal Forms API that is single select list that has a validation, submission and redirect functionality.
NOTE:
Their is a typo in the code displayed in the video. The function
function form_fun_cake(&$form_state)
is missing the $form paramater and should instead be
function form_fun_cake($form, &$form_state)
Curious about when you're supposed to translate "title" and when you should leave it alone? Here's the answer: You don't need to translate the 'title' attribute of an array that defines a menu item because Drupal will take care of that automatically. In fact, you shouldn't translate those as they'll end up getting double translated if you do. This is because Drupal end's up using this string of text in a number of different ways some of which don't actually need to be translated and others that do like for example when it's the title of a page or the text of a link in the menu system. The #title (and #description) property for elements in Form API array however are your responsibility to translate.