ctools_plugin_example.module
Working sample module to demonstrate CTools 3 plugins.
This sample module is only intended to demonstrate how external modules can provide ctools plugins. There is no useful functionality, and it's only intended for developers or for educational use.
As far as possible, everything is kept very simple, not exercising all of the capabilities of CTools or Panels.
Although the ctools documentation suggests that strict naming conventions be followed, this code attempts to follow only the conventions which are required (the hooks), in order to demonstrate the difference. You can certainly use the conventions, but it's important to know the difference between a convention and a requirement.
The advanced_help module is required, because both CTools and this module provide help that way.
There is a demonstration panel provided at /ctools_plugin_example/123
File
-
ctools_plugin_example/
ctools_plugin_example.module
View source
<?php
/**
* @file
* Working sample module to demonstrate CTools 3 plugins.
*
* This sample module is only intended to demonstrate how external modules can
* provide ctools plugins. There is no useful functionality, and it's only
* intended for developers or for educational use.
*
* As far as possible, everything is kept very simple, not exercising all of
* the capabilities of CTools or Panels.
*
* Although the ctools documentation suggests that strict naming conventions
* be followed, this code attempts to follow only the conventions which are
* required (the hooks), in order to demonstrate the difference. You can
* certainly use the conventions, but it's important to know the difference
* between a convention and a requirement.
*
* The advanced_help module is required, because both CTools and this module
* provide help that way.
*
* There is a demonstration panel provided at /ctools_plugin_example/123
*/
/**
* Implements hook_menu.
*/
function ctools_plugin_example_menu() {
$items = array();
$items["admin/settings/ctools_plugin_example"] = array(
'title' => 'CTools plugin example',
'description' => t("Demonstration code, advanced help, and a demo panel to show how to build ctools plugins."),
'page callback' => 'ctools_plugin_example_explanation_page',
'access arguments' => array(
'administer site configuration',
),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
/**
* Implements hook_ctools_plugin_directory().
*
* It simply tells panels where to find the .inc files that define various
* args, contexts, content_types. In this case the subdirectories of
* ctools_plugin_example/panels are used.
*/
function ctools_plugin_example_ctools_plugin_directory($module, $plugin) {
if ($module == 'ctools' && !empty($plugin)) {
return "plugins/{$plugin}";
}
}
/**
* Implement hook_ctools_plugin_api().
*
* If you do this, CTools will pick up default panels pages in
* <modulename>.pages_default.inc.
*/
function ctools_plugin_example_ctools_plugin_api($module, $api) {
// @todo -- this example should explain how to put it in a different file.
if ($module == 'panels_mini' && $api == 'panels_default') {
return array(
'version' => 1,
);
}
if ($module == 'page_manager' && $api == 'pages_default') {
return array(
'version' => 1,
);
}
}
/**
* Just provide an explanation page for the admin section.
*
* @return unknown_type
*/
function ctools_plugin_example_explanation_page() {
$content = '<p>' . t("The CTools Plugin Example is simply a developer's demo of how to create plugins for CTools. It provides no useful functionality for an ordinary user.") . '</p>';
$content .= '<p>' . t('There is a demo panel demonstrating much of the functionality provided at
<a href="@demo_url">CTools demo panel</a>, and you can find documentation on the examples at
!ctools_plugin_example_help.
CTools itself provides documentation at !ctools_help. Mostly, though, the code itself is intended to be the teacher.
You can find it in %path.', array(
'@demo_url' => url('ctools_plugin_example/xxxxx'),
'!ctools_plugin_example_help' => theme('advanced_help_topic', array(
'module' => 'ctools_plugin_example',
'topic' => 'Chaos-Tools--CTools--Plugin-Examples',
'type' => 'title',
)),
'!ctools_help' => theme('advanced_help_topic', array(
'module' => 'ctools',
'topic' => 'plugins',
'type' => 'title',
)),
'%path' => drupal_get_path('module', 'ctools_plugin_example'),
)) . '</p>';
return $content;
}
Functions
Title | Deprecated | Summary |
---|---|---|
ctools_plugin_example_ctools_plugin_api | Implement hook_ctools_plugin_api(). | |
ctools_plugin_example_ctools_plugin_directory | Implements hook_ctools_plugin_directory(). | |
ctools_plugin_example_explanation_page | Just provide an explanation page for the admin section. | |
ctools_plugin_example_menu | Implements hook_menu. |