Here I am giving a brief idea of creating a custom module for newbie.
For taking an example, I am creating a list of contents of my custom content type.
However for creating custom pages, we can use Views module and it is highly customizable. But I am creating this list using custom module for better understanding.
So for creating a start, I am taking a content type "Downloadproduct" and I have to create list of all content of this type with a download link. For this I am assuming that you have created a "Downloadproduct" content type.
Step 1: Create a folder "mydownload" under "/sites/all/modules" folder.
Step 2: Create 3 blank files mydownload.info, mydownload.module, mydownload.tpl.php
Step 3: Add following code into mydownload.info:
; $Id: mydownload.info some_more_info
name = "My custome module module"
description = "Basic custom and hook functions to add a custom list"
package = "Mydownload"
core = 7.x
Step 4: Open mydownload.module file and add following code in it:
<?php
// $Id: mydownload.module
/**
* @file
* Basic hook funcions related modification.
*
*/
function mydownload_menu() {
$items = array();
$items['mydownload'] = array( //This will be url of your page
'title' => t('Download products'), //This will be title of your page
'page callback' => 'mydownload_downloads', //You have to create a function for your logic and data
'access callback' => TRUE,
'type' => MENU_LOCAL_TASK,
);
return $items;
}
/**
* function for list all downloadable product
**/
function mydownload_downloads() {
drupal_set_title('Download Products');
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'downloadproducts') //your content type
->propertyCondition('status', 1);
$result = $query->execute();
$nids = array_keys($result['node']);
//echo "<pre>"; print_r($nids); die;
$nodes = entity_load('node', $nids);
//echo "<pre>"; print_r($nodes); die;
return theme('downloads', array('nodes' => $nodes)); //From here you are calling mydownload_theme function
}
/**
* Implementation of hook_theme to assign view file
**/
function mydownload_theme() {
return array(
'downloads' => array(
'template' => 'mydownload', //you have assigned html file here
'arguments' => array('nodes'=>NULL) // Variable passed to html file. NULL is only placeholder
),
);
}
Step 4: Now your server side code is ready and you have to theme your result in HTML template file. We have done this using mydownload_theme() function and assigned mydownload.tpl.php file for it. Now open mydownload.tpl.php and put following code in it:
<?php global $base_url;?>
<?php $themePath = drupal_get_path('theme',$GLOBALS['theme']);?>
<?php foreach ($nodes as $node) {?>
// Add your html here
<?php }?>
Step 5: Now goto your module listing page and enable module "mydownload" and access url http://mysite.com/mydownload
I hope this will help someone.
NOTE: Please check your variable names and content type names as this is only a example code base and given only for logical referal.
0 Comment(s)