2011-09-26 57 views
1

這是我第一次嘗試創建一個Drupal模塊:Hello World。我第一次嘗試輸出我的Drupal7模塊作爲自定義塊失敗

我需要它將它顯示爲自定義塊,我發現這可以通過2個Drupal7鉤子實現:hook_block_info()和hook_block_view()在我的helloworld模塊中。在Drupal 6中使用了不推薦的hook_block()。

在它的實際形式中,它只顯示文本:'這是一個塊,它是我的模塊'。實際上我需要顯示我的主函數的輸出:helloworld_output(),這個變量。

<?php 
     function helloworld_menu(){ 
      $items = array(); 
      //this is the url item 
      $items['helloworlds'] = array(
      'title'   => t('Hello world'), 
      //sets the callback, we call it down 
      'page callback' => 'helloworld_output', 
      //without this you get access denied 
      'access arguments' => array('access content'), 
     ); 

      return $items; 
     } 

     /* 
     * Display output...this is the callback edited up 
     */ 
     function helloworld_output() { 
      header('Content-type: text/plain; charset=UTF-8'); 
      header('Content-Disposition: inline'); 
      $h = 'hellosworld'; 
      return $h; 
     } 

     /* 
     * We need the following 2 functions: hook_block_info() and _block_view() hooks to create a new block where to display the output. These are 2 news functions in Drupal 7 since hook_block() is deprecated. 
     */ 
    function helloworld_block_info() { 
     $blocks = array(); 
     $blocks['info'] = array(
     'info' => t('My Module block') 
    ); 

     return $blocks; 
    } 

    /*delta si used as a identifier in case you create multiple blocks from your module.*/ 
    function helloworld_block_view($delta = ''){ 
     $block = array(); 
     $block['subject'] = "My Module"; 
     $block['content'] = "This is a block which is My Module"; 
     /*$block['content'] = $h;*/ 

     return $block; 
    } 
    ?> 

所有我現在需要的是,以顯示我的主要功能輸出的內容:塊內helloworld_output():helloworld_block_view()。

你知道爲什麼$ block ['content'] = $ h不起作用嗎?感謝幫助。

回答

0

$hhelloworld_output()函數的局部變量,因此在helloworld_block_view()中不可用。

我不確定你爲什麼要在helloworld_output()中設置標題,你應該刪除這些行,因爲它們只會導致你的問題。

您已經刪除後兩個調用header()該功能簡單地改變你的代碼行中helloworld_block_view()功能如下:

$block['content'] = helloworld_output(); 

你在helloworld_output設置爲$h內容將投入該塊的內容區域。

+0

謝謝克萊夫,它真的很有魅力。我認爲這是開發模塊的一個好的開始。 – Kandinski

相關問題