geeklogの記事投稿で(静的固定ページでもか?)、
たとえば、と書いて
保存すると、等となってしまう。
これは既出のバグであった。。
http://www.geeklog.jp/forum/viewtopic.php?forum=3&showtopic=2277
解決策も出ていました。。ほっ(笑…)。
ちなみに、上記は、「$_CONF['skip_html_filter_for_root'] = 0;」の
場合でも
と書くと、欠落しないのよねん。。
Also filed in
|
|
nmoxさんの階層メニュー
こちらを複数個利用させて頂き、私の頭でやれる範囲で
3層メニューを表現してみました。
まず、どうしたいか。なのですが。
コンテンツメニューをこんな風にしたいです。
(大カテゴリ、子カテゴリなどは、便宜上、私が勝手に
呼ぶものです)
大カテゴリ1
子カテゴリ1
話題1
話題2
子カテゴリ2
話題1
話題2
大カテゴリ2
子カテゴリ1
話題1
話題2
子カテゴリ2
話題1
話題2
…略
自分のサイトに照らし合わせると
小説(大カテゴリ)
Final Decision 起実(子カテゴリ)
宇宙(話題)
サウンドメッセージ(話題)
創成(話題)
笑いの間合い(話題)
時空間奇縁伝(話題)
CG(大カテゴリ)
ともくん日記(話題)
メグメグ!(話題)
ZENWARE(子カテゴリ)
ZenLiner Tutorial(話題)
ZenLiner Gallery(話題)
…こんな感じでしょうか。。
nmoxさんちの階層メニューは、lib-custom.phpに
追記する関数として提供されていますので、それを
大カテゴリの数分コピーします。
(うちは、大カテゴリが4つなので4個)。
そして、その4つのそれぞれの以下の部分に
4つを区別する文字列を追記します。
function phpblock_nmoxmenu(){
global $_CONF,$_TABLES;
$retval=”
<ul class='nmoxmenu'>";
↓
function phpblock_nmoxmenuX(){
global $_CONF,$_TABLES;
$retval=”
<ul class='nmoxmenu mX'>";
function phpblock_nmoxmenuX(){
関数が区別出来ればなんでも良いと思いますが、
わかりやすいように、1~4を振りました(Xのとこ)。
<ul class='nmoxmenu mX'>";
こちらもなんでもいいのですが、m1~m4を振りました。
それから、話題IDの先頭3文字を、class名として
書き出すように、以下を追記。
…略
//指定カテゴリーが開いている状態のカテゴリー
$str = $rc["tid"]; // 追記
$strsub = substr($str, 0, 3); // 追記
$retval.=”
<li class='open ".$strsub."'> //”.$strsub.” を追記
…略
//指定カテゴリーが閉じている状態のカテゴリー
$str = $rc["tid"]; // 追記
$strsub = substr($str, 0, 3); // 追記
$retval.=”
<li class='close ".$strsub."'> //”.$strsub.” を追記
…略
//インデックスが存在しなければ、単発メニュー
$str = $rc["tid"]; // 追記
$strsub = substr($str, 0, 3); // 追記
$retval .= ”
<li class='only [...]
geeklogは、ブロックコンテンツを静的固定ページに
読み込んで表示することが出来るので、やってみます。
http://wiki.geeklog.jp/index.php/StaticPagesBlock14
ポータルブロックで、自サイトのRSSを読み込み、
それを静的固定ページを使ってセンターブロックに
表示してみます。これで、記事の新着情報を
フロントページのセンターブロックに表示出来ます。
まず、静的固定ページでPHPを実行出来るようにする
必要があります。
1.グループで、staticpages admin を編集
staticpages.PHP にチェックをつける
それから、ポータルブロックを作り、自サイトの
RDFを指定します。
これで、サイドブロックに自サイトの新着情報が
表示されました。
これをセンターブロックに表示します。詳細は、wikiに
ありますが、
echo DB_getItem( ‘**_blocks’, ‘content’,”bid = ‘**’”);
上記の一行を静的固定ページに書き込みます。
**_blocksは、geeklogのテーブル接頭辞です。
デフォルトならglのままだとおもいます。
bid =”**”は、ブロックID(たぶん)です。
geeklog上のどこかでわかるのかもしれませんが、
私はわからなかったので、mysqlで調べました。
—*—*—*—*—*—
ブロックIDについて:
ブロックを編集する時の、URLの最後の数字が
ブロックIDです。
(今駒さん。ありがとうございました)。
—*—*—*—*—*—
表示したいブロックIDを調べて「bid =”**”」に書きます。
・センターブロック表示 にチェックを入れ
・PHPを実行する を選びます。
保存して、おわり。
ブロックでは、title=””を使い、ツールチップで、日付を
表示するハックを教えて頂きましたが、センターブロックは、
幅に余裕があるので、日付の表示を少し変え、タイトルの
手前に表示するように変更してみました。
lib-common.php の function COM_rdfImport()
を変更します。
(変更後)
$dt = strtotime($feed->articles[$i]['date']);
$dt = date("Y.m.d", $dt);
$urls = htmlspecialchars($feed->articles[$i]['link'],ENT_QUOTES);
$content = $dt . ' <a href="' . $urls . '">'
. $feed->articles[$i]['title'] . '</a>';
<table><!– 大囲い。 全体の幅が決まる –>
<tr>
<td>
<div>ここはheader</div>
<table><!– container 用 table –>
<tr>
<!– レフトブロック –>
<td>
<div このdivで幅を決める>レフトブロックの内容</div>
</td>
<!– レフトブロック end –>
<!– コンテンツブロック –>
<td>
<div このdivで幅を決める>センターブロックの内容。
記事とか静的固定ページとか</div>
</td>
<!– コンテンツブロック end –>
<!– ライトブロック –>
<td>
<div このdivで幅を決める>ライトブロックの内容</div>
</td>
<!– ライトブロック end –>
</tr>
</table><!– container end –>
<div>ここはfooter</div>
</td>
</tr>
</table>
Geeklog Japanese 参照トピ
geeklogjapaneseではあまり推奨されてない方法のようなのだが、
右メニューを以下で実現したみた。
まず、
$_CONF['show_right_blocks'] = true;
こうすることで、常に、右ブロックが表示される
その後、ブロックを作っていく中で、左メニューとして
表示したいブロックは、「ホームページのみ」とします。
そうすると、思い通りのサイト構成になりました。
が、掲示板の表示で問題が起きました。詳しくは、
フォーラムに書きましたが、掲示板の個々のページを
表示する時だけ、構文エラーが出る。
Warning: Invalid argument supplied for foreach() in /home/xxx/xxx/system/lib-custom.php on line 374
で、色々調べているうちに、これは、
「$_CONF['show_right_blocks'] = false;」であっても、
掲示板の個々のページを表示する段階で、左に
ブロックがないと、起こるエラーでした。
(まあ、あまり、falseにして、掲示板を表示する時に
左にブロックを置かない人はいないかも知れませんが。。
一カラムになりますもんね。。)。
で。教えて頂いた。
lib-custom.php の374行目
foreach($showblocks as $block) {
…
}
↓
if (!empty ($showblocs)) {
foreach($showblocks as $block) {
…
}
}
$_CONF['url_rewrite'] = false; // false = off, true = on
これをtrueにして、URLを書き換えることが出来ません。
というか、正確には、書き換えることは出来る?のですが、
書き換わったURLをクリックすると、「No input file specified.」と
画面に表示されてしまうのです。
具体的に書きますと、例えば、記事の一覧を
表示した時に現れる「全文表示」のURLは、
http://www.liolion.info/gl1/article.php?story=test02
とかです。
で、config.phpでのリライト機能を使うと、URLが
http://www.liolion.info/gl1/article.php/est02
とかになります。
さくらインターネットの場合、ここまでは、出来ているの
ですが、いざ、http://www.liolion.info/gl1/article.php/est02
を叩くと、「No input file specified.」と言われてしまう。。
これはcgi版のphpに起こる現象らしい。
What's New ブロックでは、新着記事などを表示するんですが、
どうも今ひとつなので、探してみると、良さげなプラグインが。。
Geeklog Japan のダウンロードページから、
http://www.geeklog.jp/filemgmt/index.php?page=3
最新記事リストブロック を頂いてきました。
これも、lib-custom.phpの追加して、ブロックで
呼び出すタイプのプラグインです。
ちょっといじったところを書いてみます。
$Length=13;
↓
$Length=48;
(タイトルが長いから 笑)。
それと、<ul>をつかって、リスト表示するようにしました。
//Get appropriate stories from DB
$sql = "SELECT sid, tid,title, date,
group_id,owner_id,perm_owner,perm_group,perm_members,perm_anon from
{$_TABLES['stories']} WHERE title<>'' AND (draft_flag = 0) ORDER BY date DESC
LIMIT " . $numrows;
$result = DB_query($sql);
$nrows = DB_numRows($result);
//Display title of stories.
$i=0;
$retval='';
do
{
$A = DB_fetchArray($result);
$title=COM_truncate($A['title'],$Length,'…');
$TACCESS=SEC_hasTopicAccess($A['tid']);
$ACCESS=SEC_hasAccess($A['owner_id'], $A['group_id'] ,$A['perm_owner'] ,$A['perm_group']
,$A['perm_members'] ,$A['perm_anon']);
if ($ACCESS>0 AND $TACCESS>0)
{
$retval .= '<a href="' . $_CONF['site_url'] . '/article.php?story=' . $A['sid'].
'">' [...]
う。。
表示順序は、最大127らしい。
どこかで変更出来るのかも知らんが、とりあえず、
やめておこうかな。笑。。
それより、話題名の長さだ。
私は、日記でもわかるように(笑)タイトルが長い。笑
そんなわけで、話題名も長いです。でも、初期値では、
そんなに長く取れないらしい。長く書いたら、切れて
ひまった。。
どこを見るかというと、mysqlだ。
(geeklogの方でも、制限があるのかも知れないが、
わからない…というか見たくないというか 笑)。
mysqlにログインすると、テーブルがたくさん出来ている。
それらしいテーブル名を捜す。。
接頭辞_topicsというのがある。きっとこれにちがいない。笑
構造を表示すると、いくつかフィールドが出来ている。
とりあえず、それらしいのはtopicsだ。
フィールドタイプにvarchar(48)となっている。
これだ、これに違いない。これが制限をかけて
いるんだ。変更してみよう。
ということで、適当にマウスを動かすと、ツールチップが
現れるので、これを頼りに操作する。。「変更(筆?マーク)」
っていうのがあるぞ。きっとこれに違いない。笑。
クリックしてみる。
当たりだ。笑。。
うーとぉ。
じゃあ、長さを96にしてみよう。
保存。
そして、自分のgeeklogに戻り、話題名を長めに
入力してみる。。
やったね。笑。
さて。
前回、あんなに(笑)、格闘したRSSアグリゲータですが、
これは、複数のrss reedを混ぜ合わせて、日付順に
表示するプラグインです。いや、それはわかってたんですが。。
実は、geeklogには、標準でRSS取り込みの機能が
ついていることを初めて知った。(笑)
そう。プラグイン入れなくても、良かったの。笑。
ポータルブロックを作ればとても簡単にできてしまう。
じゃ、ポータルブロックを作ってみましょう。
管理者メニュー > ブロック > 新規作成
タイトルと、ブロック名を入れて、
タイプをポータルブロックにします。
ポータルブロックオプションとこに、取り込みたい
rssのURLを入力。何件取り込みたいかを入力して、
おしまい。
なぁんだ。簡単だぁ。笑。
そいでこれ、ノーマルブロックのオプションという
ところに、書き出される見たいなんですけど(それが、
表示されているというわけだ)これ、一定時間で書き
換わってる見たいですね。1時間くらいなのかな。。
よくわかっていない。笑。。
そして!ここでも、ツールチップで日付を表示!に
挑戦!しようと思ったのですが、今回は、自力で
解決出来ず。。
またまた、geeklog japanのフォーラムで教えて頂いた。
lib-common.phpの
COM_rdfImport( )の終わりの方。
$content = '<a href="' . $feed->articles[$i]['link'] . '" target="_blank">'
. $feed->articles[$i]['title'] . '</a>';
↓
$dt = strtotime($feed->articles[$i]['date']);
$dt = date("Y/m/d H:i:s", $dt);
$content = '<a href="' . $feed->articles[$i]['link'] . '" title="' . $dt . '">'
. $feed->articles[$i]['title'] . '</a>';
たとえば、ようこそ!の後に表示される
日付だ。
これは、XREAだと、問題ない。
が、さくらサーバー(他も?)だと、config.phpでの
設定が有効にならないのだ。
例えば。
config.php で。
$_CONF['date'] = ‘%Y年%B%e日(%A) %H:%M %Z’;
と、なっていれば以下のようになるはずなのだが、
2006年9月 2日(土曜日) 21:38 JST
さくらサーバー上では、同じ設定でも以下のようになる。
2006年September 2日(Saturday) 21:38 JST
困ったな~とは思っても、
私に何か出来るわけもない(笑)ので、とりあえず、
以下のようにして対応。
$_CONF['date'] = ‘%Y年%m月%e日(%a) %H:%M %Z’;
こうすると、こんな風になりやんす。
2006年09月 1日(Fri) 17:05 JST
まあ、かっこわるくはない。笑。
Also filed in
|
|