<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) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): PHP
    主站蜘蛛池模板: 成人亚洲国产精品久久| 亚洲国产综合专区在线电影| 美女黄网站人色视频免费国产| 国产精品入口麻豆免费观看| 亚洲av成人无码久久精品| 久久久久亚洲AV成人网人人软件| 亚洲XX00视频| 亚洲免费在线观看| 成人亚洲性情网站WWW在线观看| 久久久久久亚洲精品不卡| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲国产精品一区二区第一页免| 拔擦拔擦8x华人免费久久| 国产美女无遮挡免费视频| 国产国产人免费人成免费视频| 国产又大又黑又粗免费视频| 波多野结衣中文一区二区免费| 内射无码专区久久亚洲| 亚洲成A人片在线观看中文| 亚洲中文字幕无码专区| 亚洲成AV人片在线观看ww| 久久精品蜜芽亚洲国产AV| 亚洲影视自拍揄拍愉拍| 亚洲AV香蕉一区区二区三区| 九九免费久久这里有精品23| 182tv免费视频在线观看| 亚洲精品视频免费看| 免费毛片在线播放| 久久精品国产亚洲Aⅴ香蕉| 久久精品视频亚洲| 国产99在线|亚洲| 特黄特色大片免费| 日本免费中文字幕| 美女被免费喷白浆视频| 免费一级e一片在线播放| 国产国拍亚洲精品mv在线观看| 亚洲伊人久久大香线焦| 免费国产a理论片| 一级特黄aa毛片免费观看| 四虎成人免费观看在线网址| 国产亚洲精品AA片在线观看不加载|