Quote:
FutureSpy wrote:
It's actually BopComments backend.php I renamed to rss.php and put on xoops ROOT.
Here's the code. Probably, I did something wrong.
そういうことならば、大丈夫です。この$article というのはテキストですから)
(追伸:Bopcomments071 は xoops_substr を使っていないです
また、mbstring関数の無い人用に、文字の切り詰めの関数を持っていますが、日本ではmbstring関数を使っているのでarticleの取得のところでは使っていなかったりします。
articleの取得のところは、私改造してます、試してみてください。
My HACK for UTF-8
http://domifara.lolipop.jp/xo/modules/wfdownloads/singlefile.php?cid=6&lid=27この問題は、RSSとか一つのモジュールに限らないです。
他のモジュールでも同様の問題が出ます
それであの後考えた
2つの問題?
1.要するにブロックなどのタイトルの文字数指定なんかの文字の切り詰めしている場合は EMLH のための言語タグが半端になるので、全て問題があります
this is
/inculde/function.php
xoops_substr
それで、 xoops_substrの最初に
かならず言語タグ編集を先にやってしまう行を追加
function xoops_substr($str, $start, $length, $trimmarker = '...')
{
to
add lines
function xoops_substr($str, $start, $length, $trimmarker = '...')
{
if( strlen( $str ) <= $length ){ return $str; }
global $easiestml_lang;
if (function_exists('easiestml') && isset($easiestml_lang)) {
$str = easiestml($str);
}
xoops_substrを使っているモジュールはほとんどOK
2.キャシュを一つしか持っていない件
簡単な変更で出来ます。
言語ごとにキャシュ持つなら、モジュール改造しないでも良いです
/class/template.php
from line 192 add lines (add method in class XoopsTpl)
//--------------hack add method
/**
* returns an auto_id for auto-file-functions for eache language
*
* @param string $cache_id
* @param string $compile_id
* @return string|null
*/
function &_get_auto_id($cache_id=null, $compile_id=null) {
global $xoopsConfig ;
$eache_langcache_id = $xoopsConfig['language'] . '|' . $xoopsConfig['template_set'];
if (isset($cache_id)){
return (isset($compile_id)) ? $cache_id . '|' . $compile_id . '|' . $eache_langcache_id : $cache_id . '|' . $eache_langcache_id;
} elseif(isset($compile_id)) {
return $compile_id . '|' .$eache_langcache_id;
} else {
return $eache_langcache_id;
}
}
allmost OK
FutureSpy さんの場合は
この2つ改造だけでほとんどが問題なくなるはずです。
newsなどは、これで問題なくなりました。
だいたいは、OK
でも、Bopcommentsのように、xoops_substrを使っていないものは改造が必要になるか
文字の切り詰めをしないようにしないといけないですね。