タグ:geeklog ハック tips ブロック lib-common.php
いつもはwikiの「ブロックテンプレートでPHPを使う」を参考にしつつその他必要な追加改造を毎回思い出しながらしてたのですが、今回まとめてみました。
これは毎回サイト製作を行う場合に必ずやっているブロック表示用のMY標準ハックです。
【ブロックハックの概要】
lib-common.php (1433行付近: COM_startBlock)
次にブロックテンプレートを修正します。
blockheader.thtml
blockheader-left.thtml
blockheader-right.thtml
こういったMYハックも、wkyGeeklogInstaller用のレシピで、できるようにならないかなぁ~
いつもは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
}
{
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 -->
<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 -->
<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 -->
<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用のレシピで、できるようにならないかなぁ~