<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 431,  comments - 344,  trackbacks - 0
    1Understanding How Blocks Are Themed

    During a page request, the theme system will ask the block system to return a list of blocks for

    each region. It does this when generating the variables to send to the page template (usually

    page.tpl.php). To gather the themed blocks for the left and right sidebars, Drupal executes the

    following:

    $sidebar_left = theme('blocks', 'left');

    $sidebar_right = theme('blocks', 'right');

    // And any other regions exposed by hook_regions().

    You might remember that theme('blocks') is actually a call to theme_blocks(). Here’s what theme_blocks() actually does:

    function theme_blocks($region) {

    $output = '';

    if ($list = block_list($region)) {

    foreach ($list as $key => $block) {

    $output .= theme('block', $block);

    }

    }

    return $output;

    }

    2Using the Block Hook

    function hook_block($op = 'list', $delta = 0, $edit = array())

    <?php

    // $Id$

    /**

     * @file

     * Implements various blocks to improve pending content workflow.

     */

     

    /**

     * Implementation of hook_block().

     */

    function approval_block($op = 'list', $delta = 0, $edit = array()) {

     switch ($op) {

        case 'list':

          $blocks[0]['info'] = t('Pending comments');

          $blocks[1]['info'] = t('Unpublished nodes');

          return $blocks;

        case 'configure':

          // Only in block 0 (the Pending comments block) can one

          // set the number of comments to display.

          if ($delta == 0) {

            $form['approval_block_num_posts'] = array(

              '#type' => 'textfield',

              '#title' => t('Number of pending comments to display'),

              '#default_value' => variable_get('approval_block_num_posts', 5),

            );

          }

          return $form;

        case 'save':

          if ($delta == 0) {

            variable_set('approval_block_num_posts', (int) $edit['approval_block_num_posts']);

          }

          break;

        case 'view':

          if ($delta == 0 &&user_access('administer comments')) {

            // Retrieve the number of pending comments to display that

            // we saved earlier in the 'save' op, defaulting to 5.

            $num_posts = variable_get('approval_block_num_posts', 5);

            // Query the database for unpublished comments.

            $result = db_query_range('SELECT c.* FROM {comments} c WHERE c.status = %d ORDER BY c.timestamp', COMMENT_NOT_PUBLISHED, 0, $num_posts);

            // Preserve our current location so user can return after editing.

            $destination = drupal_get_destination();

            $items = array();

            while ($comment = db_fetch_object($result)) {

              $items[] = l($comment->subject, 'node/'. $comment->nid, array(), NULL, 'comment-'. $comment->cid). ' '. l(t('[edit]'), 'comment/edit/'. $comment->cid, array(), $destination);

            }

            $block['subject'] = t('Pending comments');

            // We theme our array of links as an unordered list.

            $block['content'] = theme('item_list', $items);

          }

          elseif ($delta == 1 && user_access('administer nodes')) {

            // Query the database for the 5 most recent unpublished nodes.

            // Unpublished nodes have their status column set to 0.

            $result = db_query_range('SELECT title, nid FROM {node} WHERE status = 0 ORDER BY changed DESC', 0, 5);

            $destination = drupal_get_destination();

            while ($node = db_fetch_object($result)) {

              $items[] = l($node->title, 'node/'. $node->nid). ' '. l(t('[edit]'), 'node/'. $node->nid .'/edit', array(), $destination);

            }

            $block['subject'] = t('Unpublished nodes');

            // We theme our array of links as an unordered list.

            $block['content'] = theme('item_list', $items);

          }

          return $block;

     }   

    }

    drupal_get_destination()

    This function remembers the page you were on before you submitted a form, so after you update the comment form to publish or delete a comment, you’ll be automatically redirected from whence you came.

    posted on 2007-12-04 11:50 周銳 閱讀(236) 評論(0)  編輯  收藏 所屬分類: PHP
    主站蜘蛛池模板: 一级特级女人18毛片免费视频| 亚洲av无码一区二区三区不卡| 亚洲另类春色国产精品| 99久久免费观看| 亚洲一级片免费看| 亚洲色一区二区三区四区| 成人免费一区二区无码视频| 亚洲精品综合久久中文字幕| 四虎在线视频免费观看视频| 亚洲性无码av在线| 成年18网站免费视频网站| 亚洲成人激情小说| 国产成人精品免费视频大全五级| 亚洲AV成人无码网天堂| 无码不卡亚洲成?人片| 免费精品久久久久久中文字幕 | 嫩草影院在线播放www免费观看 | 女人18毛片水真多免费看| 亚洲精品宾馆在线精品酒店 | 亚洲人成人网站在线观看| 久久久久久国产a免费观看不卡| 亚洲中文字幕不卡无码| 97精品免费视频| 亚洲熟妇av午夜无码不卡 | 久久久久亚洲AV成人无码| 在线视频精品免费| 亚洲精品天堂成人片AV在线播放| 成人永久免费福利视频网站| 亚洲av无码一区二区三区四区| 亚洲精品成a人在线观看| a级毛片在线免费看| 亚洲国产成人久久精品app| 午夜影视在线免费观看| 国产精品小视频免费无限app | 91成人免费在线视频| 国产亚洲精品免费| 日本久久久久亚洲中字幕| 国产成人免费A在线视频| 国产午夜无码精品免费看| 中文字幕精品三区无码亚洲| 亚洲日本乱码在线观看|