XOOPS Cube でのBBCodeの修正と追加

BBCodeの[img]で、画像のサイズを指定したかったんですが、
デフォルトではできませんでした。

追加の仕方は古いXoopsの情報ならすぐにみつかったんですが、
Xoops Cubeでの対応の仕方がぜんぜんGoogleでも見つかりませんでした。

PHPは使ったことないしXoops知らないし、もうかなりのド素人ですが、
結局ソースを追って、修正場所と方法にようやくたどり着きました。

ということで、Xoops CubeでのBBCodeのカスタマイズの方法をメモしておきます。


標準のBBCodeを修正するには、
modules\legacy\kernel\Legacy_TextFilter.class.php
のパターンを修正します。
317行目あたりにimgタグがあります。

BBCodeを追加する場合、
preload配下にBBCodeImageSize.class.phpなどをつくり配置します。

preloadを使ったサンプルが、
ダウンロードしたXoopsCubeの
extras\extra_preloadにあります。
(BBCodeNumSize.class.phpなど)

BBCodeImageSize.class.php
<?php

if (!defined('XOOPS_ROOT_PATH')) exit();

class BBCodeImageSize extends XCube_ActionFilter
{
	function preBlockFilter()
	{
		$this->mRoot->mTextFilter->mMakeXCodeConvertTable->add(array(&$this, 'bbcode'), XCUBE_DELEGATE_PRIORITY_1);
	}
	
	function bbcode(&$patterns, &$replacements)
	{
	
        $patterns[] = "/\[img align\=(['\"]?)(left|center|right)\\1\]([^\"\(\)\?\&'<>,]*),(\d+),(\d+)\[\/img\]/sU";
        $replacements[0][] = '<a href="\\3" target="_blank">\\3</a>';
        $replacements[1][] = '<a href="\\3" target="_blank"><img src="\\3" width="\\4" height="\\5" align="\\2" alt="" /></a>';
        
		$patterns[] = "/\[img align\=(['\"]?)(left|center|right)\\1\]([^\"\(\)\?\&'<>,]*),(\d+)\[\/img\]/sU";
        $replacements[0][] = '<a href="\\3" target="_blank">\\3</a>';
        $replacements[1][] = '<a href="\\3" target="_blank"><img src="\\3" width="\\4" align="\\2" alt="" /></a>';

	}
}

?>