<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 周銳 閱讀(229) 評論(0)  編輯  收藏 所屬分類: PHP
    主站蜘蛛池模板: 中国在线观看免费国语版| 亚洲国产小视频精品久久久三级| 亚洲综合一区二区三区四区五区| 日本一道一区二区免费看 | 亚洲国产精品碰碰| 一级毛片免费观看不卡视频| 一本色道久久综合亚洲精品蜜桃冫| 亚洲一区二区精品视频| 久视频精品免费观看99| 搜日本一区二区三区免费高清视频| 亚洲成Av人片乱码色午夜| 免费观看的毛片手机视频| 波多野结衣免费一区视频 | 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 亚洲人成色77777| 好大好硬好爽免费视频| 中文字幕永久免费视频| 亚洲日韩精品无码AV海量| 久久综合日韩亚洲精品色| 成人永久免费福利视频网站| 色欲A∨无码蜜臀AV免费播| 香港特级三A毛片免费观看| 亚洲特级aaaaaa毛片| 国产日韩成人亚洲丁香婷婷| 国内免费高清在线观看| 日本免费A级毛一片| MM1313亚洲国产精品| 亚洲字幕在线观看| 亚洲成AV人片在线观看无码 | 亚洲中文字幕无码av在线| 亚洲中文字幕无码永久在线 | 亚洲AV无码一区二区三区国产| 黄色网址免费观看| 免费一区二区三区| 国产久爱免费精品视频| 国产成人高清亚洲一区91| 亚洲AV成人影视在线观看| 亚洲精品动漫在线| 亚洲伦另类中文字幕| 亚洲欧洲∨国产一区二区三区 | 国产综合成人亚洲区|