Gajendra sharma Drupal Module development

Preview:

Citation preview

My first Drupal module!

Why not?

About @ Gajendra Sharma

• Started as PHP developer with custom CMS •“You need Linux” they said •I know Drupal since version 5.x

Email: gajen.ksharma@gmail Skype: gajendrakumarsharma1688 LinkedIn: www.linkedin.com/in/gajendrasharma

Drupal

•  Available from drupal.org.

•  Runs on every machine with

PHP, supported database

and web server.

•  Very customizable

(themes, modules).

•  Good documented.

•  No limits.

A whole bunch of modules

Which one to use?

Missing a module?

Three kinds of modules (3 Cs)

•  Core

–  Shipped with Drupal

–  Approved by core developers and community

•  Contributed

–  Written by community

–  Shared under the same GNU Public License

•  Custom

–  Created by website developer

Where to?

Drupal

Core Modules Core Themes

Contributed

Contributed Themes

Modules

Custom Module Custom Theme

/sites/[all|mysite.com]/custom

Module name

•  Should be a UNIQUE “short name”

•  Used in all file and function names

•  Must start with a letter

•  Only lower-case letters and underscores

•  We will use name: “dc_stat”

–  For display current node/user stats

Create a folder + module file

•  Module name “dc_stats”.

•  Create empty folder:

–  /sites/*/modules/custom/dc_stats/

•  Create new file “dc_stats.module” with

opening PHP tag and NO closing tag!!

•  Create new file “dc_stats.info” for

meta information.

*.info

•  Required for every module!

•  Standard .ini file format – key/value pairs

name = Drupal statistic!

description = Provides some statistic data.!

core = 7.x!

package = Damjan Cvetan!

Other optional keys:

stylesheets, scripts, files, dependencies, …

Checkpoint

•  Navigate to Modules section on your site

•  You should see your module

•  Enable it!

Coding standards

•  Use an indent of 2 spaces, no tabs!

•  UNIX line ending (\n)

•  Omit closing “?>” PHP tag

•  Constants should be all-uppercase

•  Comments are your friends!

Half way there

Hook(s)

hook – [hoo k], noun Ÿ a

curved or angular piece of

metal or other hard

substance for catching,

pulling, holding, or

suspending something.

•  Fundamental to Drupal

How does it work?

Foreach (enabled_module):!

module_name_menu();!

end foreach;!

Cal

l dis

pat

ch

Call for hook: hook_menu()

Drupal runFme

locale_menu()!

user_menu()!

contact_menu()!

help_menu()!

…!

…!

dc_stats_menu()!

…!

…!

trigger_menu()!

path_menu()!

Drupal runFme

Hooks line up!

•  hook_help() – Provides

available documentation.

•  hook_menu() – For paths registration in order to define how URL request are handled.

•  hook_init() – Run at the beginning of

page request.

•  hook_cron() – Called whenever a cron

run happens.

•  More at http://api.drupal.org/

API.drupal.org

•  Drupal developer’s documentation.

•  Doc for Drupal 4.6+.

•  Describes function calls, their

parameters and return values.

•  You can see the code and “who” is

calling this code within Drupal.

•  http://api.drupal.org

Let’s code

•  Define callback function dc_stats_page()

as follows:

funcFon dc_stats_page(){

return "Hello world! You’re awesome!”;

}

•  This will return defined string on call.

•  Put this code in dc_stats.module file.

Hey Drupal! Come in!

•  Register path with hook_menu().

•  We will use basic return array structure.

funcFon dc_stats_menu(){ $items['dc/stats-page'] = array( 'Ftle' => 'Stats info page',

'page callback' => 'dc_stats_page', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK,

);

return $items;

}

Visit URL: /dc/stats-page to see if it works.

(You might need to clear cache first.)

Get some real data

funcFon dc_stats_page(){ drupal_set_Ftle("Drupal staFsFcs"); $node_count = $db_node_count; $user_count = $db_users_count; $header = array("InformaFon", "Value");

$rows[] = array('Number of nodes:', $node_count);

$rows[] = array('Number of users:', $user_count);

return theme_table(array( 'header' => $header,

'rows' => $rows,

)); // return

}

Happy ending

•  Refresh your page and see your work.

•  You can do much more – I’m certain!

•  Use your PHP + any other knowledge

with existing Drupal functions, hooks

and variables!

Links to consider

•  http://api.drupal.org

http://drupalcontrib.org/

•  http://buildamodule.com/

•  http://drupal.org/project/devel

–  A suit of modules containing fun for

module developers and themers.

Books

•  Drupal 7 Development by Example

•  Beginning Drupal 7

•  Drupal 7 Module Development

•  …

•  …

Q & A

Recommended