Sunday, August 7, 2011

Custom drupal module drupal 6 , drupal 7, drupal 8 - Check differences

Drupal follows the modular structure.Features of drupal can be extended and implemented by adding a module in it without touching drupal core script.

Steps to make drupal module drupal 6

1) Make a new file with name module_name.info (it contain following )
; $Id$
name = Test Module
description = Allows users to implement new features.
core = 6.x
package = Drupal Development

It has few line which contain information about module like module name, description of module , drupal version it supports, and package you want to keep this module
2) Make one installation directory . If you want to add some mysql table in
module than need of this file
It contain few installation function
a) function table_name_install(){
drupal_install_schema('table_name');
}
b) uninstall function , when module will uninstall than it delete table from
database
function annotate_uninstall() {
drupal_uninstall_schema('table_name');
}
c) Implementation of hook_schema()
function module_name_schema() {
$schema['test_description'] = array(
'description' => t('Stores node test_description that users write.'),
'fields' => array(
'nid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
'description' => t('The {node}.nid to which the test_description applies.'),
),
'uid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
'description' => t('The {user}.uid of the user who created the test_description.')
),
'note' => array(
'description' => t('The text of the test description.'),
'type' => 'text',
'not null' => TRUE,
'size' => 'big'
),
'primary key' => array(
'nid', 'uid'
),
);


return $schema;
}

3) create another file with name module_name.module
We need to read this first before making a new module
http://api.drupal.org/api/drupal/includes--module.inc/group/hooks/6
here it is a list of available drupal hooks

Allow modules to interact with the Drupal core.

Drupal's module system is based on the concept of "hooks". A hook is a PHP function that is named foo_bar(), where "foo" is the name of the module (whose filename is thus foo.module) and "bar" is the name of the hook. Each hook has a defined set of parameters and a specified result type.

To extend Drupal, a module need simply implement a hook. When Drupal wishes to allow intervention from modules, it determines which modules implement a hook and calls that hook in all enabled modules that implement it.

Now view the hook_menu which enable the menu in drupal
function module_name_menu() {
$items['admin/settings/annotate'] = array(
'title' => 'Annotation settings',
'description' => 'description of module menu',
'page callback' => 'drupal_get_form',// will set the drupal form which will be implemented later
'page arguments' => array('module_name_admin_settings'),
'access arguments' => array('administer site configuration'),
'type' => MENU_NORMAL_ITEM,
'file' => 'module_name.admin.inc',
);

return $items;
}


Steps to make drupal module drupal 7

Create Custom Module

In your modules directory (sites/all/modules) create a folder for your module. For this example our module will be called anshulblockmodule, so we would create the directory sites/all/modules/anshulblockmodule. Your module can be called whatever you like, just make sure that when following this tutorial your replace "myblockmodule" with your modules name.

1. Create a .info file

All modules in Drupal require a .info file to let Drupal know that our module exists, what it's name is, as well as other information about our module. In your module folder (sites/all/modules/anshulblockmodule), create a file named anshulblockmodule.info. In myblockmodule.info enter the following:

name = AsnhulBlockModule 
description = Tutorial Modules for beginners 
package = Tutorial Modules 
core = 7.x 

The Explanation

This is how the above breaks down:
  • name is the human readable name of your module. This is required for all modules, It is shown on the modules administration page.
  • description is a short message explaining what this module does. This is also visible on the modules administration page.
  • core describes which version of Drupal this module works with. This is required and should be "7.x" for all Drupal 7 modules.
  • package is optional, but I recommend it. The main purpose of this is to define what category to list the module in on the module admin page.
There are other variables you can define in this file, but these are the main four I put in all modules I create. For more information on module .info files check out Writing module.info files.

2. Create a .module file

There are two files which every module must have. First is the .info file, which we already created. The second is the .module file. Despite the file's extension it is really a PHP script. This file is evaluated every time Drupal a Drupal page is load. The main purpose of this file is to define functions which implement hooks. Hooks are evaluated during different Drupal events and can be called by Drupal itself or other custom modules. (For further reading on hooks: Hooks 101)
For our module we will create a new file in our module's directory (sites/all/modules/anshulblockmodule) called anshulblockmodule.module. This file will implement two hooks, one to let Drupal know that we are defining a new block, and one to let Drupal know what the block's content is. The file will contain the following: 
<?php
/**
 * Declare what blocks are provided by this module.
 * Implements hook_block_info().
 */
function anshulblockmodule_block_info(){
    $block['static_content'] = array(
        'info' => t('Drupal tutorial'),
        'cache' => DRUPAL_NO_CACHE,
    );
    return $block;
}

/**
 * Define what our block is going to look like.
 * Implements hook_block_view().
 */
function anshulblockmodule_block_view($block_key){
    $block = array();

    if($block_key == 'static_content'){ //We only want to define the content of OUR block
        //This is the title of the block.
        $block['subject'] = t('lorem ipsum sit');

        //Define the block content.
        $block['content'] = t('lorem ipsum ').(strtotime("2015-10-21")-time()).t(' seconds.');
    }

    return $block;
}

 In this way can create custom block and can put anywhere in template.

It is very useful to fetch any content as block content from drupal instead od creating views everytime. it increase the performance of drupal website. you can set the cache_Get and cache_Set method for caching. we will those example later.

Thursday, July 7, 2011

Tutorial for view Module

How to work with drupal view

What is Views

The Views module provides a flexible method for Drupal site designers to control how lists and tables of content (nodes in Views 1, almost anything in Views 2) are presented. Traditionally, Drupal has hard-coded most of this, particularly in how taxonomy and tracker lists are formatted.

This tool is essentially a smart query builder that, given enough information, can build the proper query, execute it, and display the results. It has four modes, plus a special mode, and provides an impressive amount of functionality from these modes.
Among other things, Views can be used to generate reports, create summaries, and display collections of images and other content.

You need Views if

  • You like the default front page view, but you find you want to sort it differently.
  • You like the default taxonomy/term view, but you find you want to sort it differently; for example, alphabetically.
  • You use /tracker, but you want to restrict it to posts of a certain type.
  • You like the idea of the 'article' module, but it doesn't display articles the way you like.
  • You want a way to display a block with the 5 most recent posts of some particular type.
  • You want to provide 'unread forum posts'.
  • You want a monthly archive similar to the typical Movable Type/Wordpress archives that displays a link to the in the form of "Month, YYYY (X)" where X is the number of posts that month, and displays them in a block. The links lead to a simple list of posts for that month.
Views can do a lot more than that, but those are some of the obvious uses of Views.



This screencast covers the installation and configuration of the views module, as well as:
  • Creating a new view (both page and block)
  • Adding arguments to the url for a page view
  • Using views to create an RSS feed
  • Using fields to customize the layout of list and table views
  • Overview of filters and exposed filters
  • Basic Performance considerations of views
This is the script for the screencast:

Install

This screen cast is going to teach you the basics of using the views module in drupal. First we have to download the views module. To do this, go tohttp://www.drupal.org/project/views and click on download.
Once the download is complete, extract the views module.
Once the extraction is finished, move the files into the modules folder.

Configuration of the Views Module

To configure views, go to the modules page, scroll down, and make sure that all the views components are enabled. Once everything is working as it should, there should be an extra tab under site building - views.

Creating a View

Say i want to create a blog replica using views. To do this, go to views, and click add. Enter a name. Because this is going to be a page and not a block, I have to select 'provide page view' under page. Enter a url and a title as you see fit. Because I want the most recent posts to come first, I have to add a particular sort criteria - node created time, and change the default sorting to descending.

Build first application with drupal

As a php programmer installing drupal is not a big deal . is it ?  Now what ?
Let move in by making a website for giving informatoin about company , correct ..
so what you think what should be in basic website for giving informatin about any comapny.according to me there should be 5 ,6 page about company infomation , 1 contact form , company logo , google map for company location
SO let start step by step
1) Enable some of needed module profile , path , taxonomy , search ,php filter
2) start with adding content admin /node/add/page
Put tile in tile label Title: * - Hello welcom to anshul.com

next - put description of your company in content area.
In drupal there are 3 types of default filter available for
content called as "Input format"   a) Filtered HTML b)Full HTML    c) PHP code

In our case we should choose full HTML to make content more beautiful and to be rich text format.
(Note- you can use http://drupal.org/project/fckeditor )

for wysiwyg editor
3) make a menu setting if you want this content to be display on click of menu put a menu name at menu setting

4)Comment setting - Put comment setting acording to content . for our website we are making this first content for front page so we will not allow user to comment

5) Remember path setting option only come when you enable path module from drupal admin

save the page ,wow we have page ready :) without hassel!! we have menu created with search engine optimized url great.. Thanks to drupal

now for contact us page
a)Enable core module "contact" from drupal module
b) add category /admin/build/contact/add
put the required information like email email, autoreply message etc


c) now add the permission to contact form >user managemnt -> permission
/admin/user/permissions
allow which type of users you want to the contact form should access
d) contact form is ready now
www.yourdomain.com/contact

you never get this easiyness of contact form in any CMS
E) Now make a menu admin/build/menu
 ->add new menu item /admin/build/menu/add
  - url of page
- title of menu

 for google Map on contact us page
Download http://drupal.org/project/gmap this contributed module enable it from admin

Please view this video for moore detail

Google map in content
After view on the above video it is very complicate to insert goolge map inside yout content . but relax we have the gmap macro builder to convert worries into hurry.
download GMAP macro builder. make a macro code
Use the online GMap macro builder to design your map and copy the generated macro text to the clipboard.

eg -

Map
Satellite
Hybrid
next step is
Go to your input formats page and select "Full HTML" as default input format. Configure the "Full HTML" input format, select "GMap filter" and click on the "Save configuration" button.
Now
insert this code inside the  content -> Select full html as a filter
You will see the result page contains the gmap inside the

Easy drupal tutor

Drupal is a opensource content management system which has following advantages over other cms



Reliable and robust: Are there a lot of bugs in the code? Will it affect my site
if I have to forever add patches or obtain updates for faulty code?
Efficient: Does the code use my server's resources wisely? Am I likely to run
into concurrency problems, or speed issues early on?
Flexible: If I change my mind about what I want from my site, will I be able
to implement those changes without redoing everything from scratch?