Hiroron Labs :: WinKey

 2025年1月18日(土) 14:10 JST

Geeklog TIPS ブロック用 MYハック

タグ:geeklog ハック tips ブロック lib-common.php

いつもはwikiの「ブロックテンプレートでPHPを使う」を参考にしつつその他必要な追加改造を毎回思い出しながらしてたのですが、今回まとめてみました。
これは毎回サイト製作を行う場合に必ずやっているブロック表示用のMY標準ハックです。

【ブロックハックの概要】
  • ブロックテンプレートでPHPを使えるよにする(wikiのまんま)
  • ブロックへブロックIDも出力({block_id}を使えるようにする)
  • タイトルの先頭が .(ドット) ならタイトル<H2>を表示しない。(wikiのまんま)



lib-common.php (1433行付近: COM_startBlock)
function COM_startBlock( $title='', $helpfile='', $template='blockheader.thtml' )
{
    global $_CONF, $LANG01, $_IMAGE_TYPE;
    global $_TABLES; // 20080724 blockid by hiroron

    $block = new Template( $_CONF['path_layout'] );
    $block->set_file( 'block', $template );

    $block->set_var( 'site_url', $_CONF['site_url'] );
    $block->set_var( 'layout_url', $_CONF['layout_url'] );
    $block->set_var( 'block_title', stripslashes( $title ));
    // <blockid> 20080724 by hiroron
    $block_id = DB_getItem(  $_TABLES['blocks'] , 'name', "title = '" .  stripslashes( $title ) . "'");
    $block->set_var( 'block_id', $block_id);
    // </blockid> 20080724 by hiroron

    if( !empty( $helpfile ))
    {
        $helpimg = $_CONF['layout_url'] . '/images/button_help.' . $_IMAGE_TYPE;
        if( !stristr( $helpfile, 'http://' ))
        {
            $help = '<a class="blocktitle" href="' . $_CONF['site_url'] . '/help/' . $helpfile
                . '" target="_blank"><img src="' . $helpimg
                . '" border="0" alt="?"></a>';
        }
        else
        {
            $help = '<a class="blocktitle" href="' . $helpfile
                . '" target="_blank"><img src="' . $helpimg
                . '" border="0" alt="?"></a>';
        }

        $block->set_var( 'block_help', $help );
    }

    $block->parse( 'startHTML', 'block' );

    // <exec php> 20080724 by hiroron
    // return $block->finish( $block->get_var( 'startHTML' ));
    $tmp = $block->finish( $block->get_var( 'startHTML' ));
    ob_start();
    eval( '?>' . $tmp );
    $retval = ob_get_contents();
    ob_end_clean();
    return $retval;
    // </exec php> 20080724 by hiroron
}


次にブロックテンプレートを修正します。
blockheader.thtml
<!-- blockheader.thtml { -->

<div class="block-center" id="{block_id}">
<?php if ( 0 != strncasecmp("{block_title}",".",1) ) { ?>
  <h2>{block_title}{block_help}</h2>
<?php } ?>
  <div class="block-center-content">

<!-- } blockheader.thtml -->

blockheader-left.thtml
<!-- blockheader-left.thtml { -->

    <div class="block-left" id="{block_id}">
<?php if ( 0 != strncasecmp("{block_title}",".",1) ) { ?>
      <h2>{block_title}{block_help}</h2>
<?php } ?>
      <div class="block-left-content">

<!-- } blockheader-left.thtml -->

blockheader-right.thtml
<!-- blockheader-right.thtml { -->

    <div class="block-right" id="{block_id}">
<?php if ( 0 != strncasecmp("{block_title}",".",1) ) { ?>
      <h2>{block_title}{block_help}</h2>
<?php } ?>
      <div class="block-right-content">

<!-- } blockheader-right.thtml -->


こういったMYハックも、wkyGeeklogInstaller用のレシピで、できるようにならないかなぁ~

トラックバック

このエントリのトラックバックURL: https://hiroron.com/trackback.php/20080726121746717

この記事にはトラックバック・コメントがありません。
Comments
Geeklog TIPS ブロック用 MYハック | 0 コメント | アカウント登録
サイト管理者はコメントに関する責任を負いません。