Posted by jayco33 on June 11, 2010 at 10:18am
Heyho,
I'm starting to write a module for Drupal 7 according to the HOWTO here: http://drupal.org/node/206753, which is for drupal 6 though.
I created the .info and the .module file exactly as explained in the HOWTO, except that added
<?php
files[] = modulename.module
?>in the .info file to make my module show up in admin/modules (as explained here : http://drupal.org/node/785714)
The module shows up in admin/modules and I can activate it. But then on admin/structure/block the block created from the module is not there? Also it is not shown in the DB in table blocks, where, I guess, it shoul go?
Any help?
.info
; $Id$
name = met
description = mydesription
core = 7.x
files[] = met.module .module (exactly as in the HOWTO)
<?php
// $Id$
/**
* Display help and module information
* @param path which path of the site we're displaying help
* @param arg array that holds the current path as would be returned from arg() function
* @return help text for the path
*/
function met_help($path, $arg) {
$output = ''; //declare your output variable
switch ($path) {
case "admin/help#onthisdate":
$output = '<p>'. t("Displays links to nodes created on this date") .'</p>';
break;
}
return $output;
} // function onthisdate_help
/**
* Valid permissions for this module
* @return array An array of valid permissions for the onthisdate module
*/
function met_perm() {
return array('access met content');
} // function met_perm()
/**
* Implementation of hook_block().
* @param string $op one of "list", "view", "save" and "configure"
* @param integer $delta code to identify the block
* @param array $edit only for "save" operation
*/
function met_block($op = 'list', $delta = 0, $edit = array()) {
if ($op == "list") {
// Generate listing of blocks from this module, for the admin/block page
$block = array();
$block[0]["info"] = t('met');
return $block;
}
else if ($op == 'view') {
// Generate our block content
// Get today's date
$today = getdate();
// calculate midnight one week ago
$start_time = mktime(0, 0, 0,
$today['mon'], ($today['mday'] - 7), $today['year']);
// we want items that occur only on the day in question, so
// calculate 1 day
// $end_time = $start_time + 86400;
// 60 * 60 * 24 = 86400 seconds in a day
$end_time = time();
$query = "SELECT nid, title, created FROM " .
"{node} WHERE created >= '%d' " .
" AND created <= '%d'";
$query_result = db_query($query, $start_time, $end_time);
// check to see if there was any content before returning
// the block view
if ($block_content == '') {
// no content from a week ago
$block['subject'] = 'met';
$block['content'] = 'Sorry No Content';
return $block;
}
// set up the block
$block = array();
$block['subject'] = 'met';
$block['content'] = $block_content;
return $block;
}
} // function met_block
?>
Comments
Wors in Drupal 6.17
I tried it now with a Drupal 6.17 installation and it worked as expected...the nee Block shows on admin/build/block
Is this a bug, or am I doing something therribly wrong?
thx
Drupal 7 use different hook name
Drupal 7 use hook_block_info(), hook_block_view(), etc to replace the Drupal 6 hook_block()
mymodule.info:
;$Id$
name = my module
description = my drupal 7 module
core = 7.x
php = 5.1
files[] = mymodule.module
mymodule.module:
<?php
// $Id$
/**
* Implements hook_block_info().
*/
function mymodule_block_info() {
$blocks['recent']['info'] = t(' my first drupal 7 module');
return $blocks;
}
/**
* Implements hook_block_view().
*
*/
function mymodule_block_view($delta = '') {
$block = array();
$block['subject'] = t('oh, my first drupal 7 module');
$block['content'] = t('I will create my first module');
return $block;
}
_
I haven't had a chance to dive into d7 dev yet, but in general, there are major changes between major versions of drupal. Be sure to checkout http://drupal.org/update/modules/6/7 when developing for d7 whenever using d6 code.
_
Don't be a Help Vampire - read and abide the forum guidelines.
If you find my assistance useful, please pay it forward to your fellow drupalers.