PEAK XOOPS - xoops_block plugin and D3 module's block(2) in englishin japanese

Archive | RSS |
XOOPS
XOOPS : xoops_block plugin and D3 module's block(2)
Poster : GIJOE on 2007-03-29 04:25:25 (16872 reads)

in englishin japanese
I've modified D3 module's blocks can return both "array for template" and "string rendered by the template" by specifying $options['disable_renderer'].

Then I've made a smarty plugin named "xugj_block" based on "xoops_block".

eg)
<{xugj_block file="modules/pico/blocks/blocks.php" func="b_pico_list_show" options="pico|0|"}>
It displays the block.

eg2)
<{xugj_block file="modules/pico/blocks/blocks.php" func="b_pico_list_show" options="pico|0|" assign="myblock"}>
It never displays the block.
You can use a new template variable <{$myblock}> instead.

class/smarty/plugins/function.xugj_block.php


<?php

function smarty_function_xugj_block( $params , &$smarty )
{
	$assign_name = @$params['item'] . @$params['assign'] ;

	$block_file = XOOPS_ROOT_PATH . '/' . @$params['file'] ;

	if( file_exists( $block_file ) ) {
		include_once $block_file ;
		if( function_exists( @$params['func'] ) ) {
			$options = empty( $params['opt'] ) ? explode( '|' , @$params['options'] ) : explode( ',' , @$params['opt'] ) ;
			if( empty( $assign_name ) ) {
				$block = call_user_func( $params['func'] , $options ) ;
				if( empty( $block['content'] ) ) {
					var_dump( array_keys( $block ) ) ;
					echo 'missing "item" in <{xugj_block}>' ;
				} else {
					echo $block['content'] ;
				}
				$block['content'] ;
			} else {
				$options['disable_renderer'] = true ;
				$block = call_user_func( $params['func'] , $options ) ;
				$smarty->assign( $assign_name , $block ) ;
			}
		} else {
			echo 'invalid "func" in <{xugj_block}>' ;
			return ;
		}

	} else {
		echo 'invalid "file" in <{xugj_block}>' ;
		return ;
	}
}

?>


Related articles
Printer friendly page Send this story to a friend

Comments list

GIJOE  Posted on 2007/4/3 4:39
Quote:

Tom_G3X wrotes:
Quote:
今読むと、言語を読み込む部分をまるまるハツっちゃってますね
現実には、アサインする部分に言語が必要なケースはほとんどないので、必要な場合だけ、<{xugj_block}>の直前に<{include_php}>してもらえばいいかな、という方針で。
実際には、メニューブロックやユーザーブロックでの利用が大半のようですので、後から言語ファイルの読み込みを追加したんですよ。
実際に使おうと思って、それに気づきました。
う〜ん、オプション追加かなあ。
Tom_G3X  Posted on 2007/3/30 10:46
Quote:

GIJOE wrotes:
xugj_block の読み方は「んぐじぇ・ぶろっく」で
おぉ!!「んぐじぇ」ゲ〜〜ット!!

Quote:
今読むと、言語を読み込む部分をまるまるハツっちゃってますね
現実には、アサインする部分に言語が必要なケースはほとんどないので、必要な場合だけ、<{xugj_block}>の直前に<{include_php}>してもらえばいいかな、という方針で。
実際には、メニューブロックやユーザーブロックでの利用が大半のようですので、後から言語ファイルの読み込みを追加したんですよ。
無くても問題は無いですけどね。
そうですね、<{include_php}>でもいいですね。言語の自動認識が出来ない程度ですからね。

Quote:
Quote:
legacy2.1 では、xoops_explaceholder を使いこなすと、テーマ職人五段って噂もチラホラ。(笑)
プレースホルダーですか?(実は全然判ってない)
いわゆるプレースホルダーだったら、入門したばかり(10級くらい?)の人にも使えるくらい簡単じゃないといけない気もしますが
という僕もまだ良く理解してなかったりするんですが。
使いこなせば、xoops_blockの比じゃないって話だそうです。
難しいゆえに、exプレースホルダー なのか?
GIJOE  Posted on 2007/3/30 4:14
Tomさん、コメントありがとうございます。

xugj_block の読み方は「んぐじぇ・ぶろっく」で

Quote:

Tom_G3X wrotes:
xoops_blockの原石を磨くと、xugj_blockになるって言うのか・・・、
いやあ、実に素晴らしい原石で、そのままでも観賞に堪えるとは思ったのですが、言語を読み込む部分などは、どうしてもD3モジュールとはちょっと相容れないかな、とおもったものでカッティングしちゃいました。

今読むと、言語を読み込む部分をまるまるハツっちゃってますね
現実には、アサインする部分に言語が必要なケースはほとんどないので、必要な場合だけ、<{xugj_block}>の直前に<{include_php}>してもらえばいいかな、という方針で。

Quote:
legacy2.1 では、xoops_explaceholder を使いこなすと、テーマ職人五段って噂もチラホラ。(笑)
プレースホルダーですか?(実は全然判ってない)
いわゆるプレースホルダーだったら、入門したばかり(10級くらい?)の人にも使えるくらい簡単じゃないといけない気もしますが
Tom_G3X  Posted on 2007/3/29 19:03
xoops_blockプラグインを弄っていただき、大変光栄です。ありがとうございます。
OSSって、他人に弄ってもらってナンボのモンって気もしますし。

xoops_blockの原石を磨くと、xugj_blockになるって言うのか・・・、
GIJOEフィルターが掛ると、こういうコーディングになるのかぁ〜と思うと、
自分のコードが恥ずかしくなる今日この頃・・・・。( ..)φメモメモ勉強!
うっ!目から鱗が・・・、(あっ、コンタクトだった・・・)

eval()は、僕も気になってたところでしたが(^^ゞ、放置しておりました。(爆)

legacy2.1 では、xoops_explaceholder を使いこなすと、テーマ職人五段って噂もチラホラ。(笑)
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!