Home > Nucleus

Web 酒 肴

«前へ || 1 | 2 || 次へ»

Nucleus3.41日本語版でアップグレード失敗

Nucleus バージョン3.41 日本語版が登場

これを導入したら、ブログのトップページが表示されなくなってしまった。 データを復旧しようとバックアップファイルからデータベースを再構築したら、それにも失敗。 ここ数ヶ月分のデータが一時的にぶっ飛んでしまった。

冷汗かきながらphpMyAdminを使ってなんとか復旧完了・・・

状況から察するにCustomURL0.3.7が競合を起こしているのかもしれない。 まだ確信はないのでフォーラムなどへの報告はしてないけど。 時間があったら別の環境で検証してみる。

[Flex]Fleverlight勉強会 Vol.2 in 大阪

Fleverlight勉強会というものに参加してきました。 普段は別々で活動している「Flex勉強会」と「Silverlightを囲む会」が合同開催するという、 一触即発(ウソ)なガチンコ勝負(ウソ)です。 もちろん僕はFlex側の参加者だったわけですが・・・

なぜかSilverlightのTシャツを2枚もゲット

マイクロソフトの大西彰さんが持ってきてくれました。 懇親会でも大西さんは、興味深い話をたくさん話してくれました。

「京都で勉強会やったら来てくれますか?」という問いにはきさくにOKしていただきました。 さすがにFlex勉強会に呼ぶわけにはいかないと思うので・・・Silverlightも絡んだ企画のときはぜひ声をかけさせてもらうのでお願いします。

NetBeansといい、なんか最近Tシャツづいてますねぇ。 そうそう、そういえばNetBeans日本語FAQプロジェクトの方から連絡いただきましたがNetBeans6.5の日本語版が正式リリースされたらしいです。 Rubyに関して大きな機能の追加はないのかもしれないですが、僕が使ってるのが確か6.0だったのであらゆる面でこなれているはず。 そろそろ乗り換えてみようかな。

さてさて、そろそろ「Flex勉強会 in 京都」の定期開催に向けていろいろ準備していきたいと思います。 でも最近仕事がずっと忙しかったので、今日と明日は完全にオフ。 来週から取り組みます:wink:

[Nucleus]記事のページングや一覧表示をするプラグインNP_ShowBlogs

以下のプラグインを導入し、ページング機能を追加する。

showblogs

プラグインは普通にpluginsフォルダ配下にダウンロード&解凍したファイルを設置し、プラグイン管理からのインストールでOK。 その後テンプレート編集で使用しているテンプレートの「メインの目次ページ」を編集。

<%blog(template/index, 10)%>

のように記述されているところを

<%ShowBlogs(template/index,10)%>

のように変更するだけで過去記事へのリンクが上下に表示される。 とりあえずこれでいいや。

疑問点

ここで使用しているテンプレートではblogではなMultipleCategoriesという変数を使用していた。 これは以前導入したサブカテゴリ用のプラグインの変数で、サブカテゴリの設定が反映されるように表示するためのものらしい。

[参照] カテゴリの階層化

だけどMultipleCategoriesをShowBlogsに変更したところで表示は別に変わってないし、記事にサブカテゴリも表示されている。 なんだろう?まあいいや。

[未解決]google-code-prettifyを使用するとIEで改行が表示されない

n46さんに指摘いただいて調査した結果、google-code-prettifyとIEの相性が悪いことが判明。 結局IEのみgoogle-code-prettifyを使用しないように逃げたのですが、以下悪あがきした経緯を書いておきます。 コード部分の改行が全て削除されてしまうというもの。 こちらを参照するとどうもIEが悪いっぽい。

Favorite Labo - google-code-prettify

ここを参考にさせてもらいました。 ただし現在のバージョン(prettify_31_Aug_2007)ではいじる場所が少し違い990行目を修正。 修正に関して、JavaScriptに疎いため知人に助言をもらいました。 (guccyon, fujioka0729ありがとう!)

prettify.js修正前

pre.innerHTML = newContent;

prettify.js修正後

pre.innerHTML=(/*@cc_on!@*/false) ? newContent.replace(/<br\s?\/?>/g, '&nbsp;<br/>') : newContent;

ブラウザ判定方法がやや特殊ですが、毎回読み込まれ実行されるため、コード量や処理負荷をできる限り減らそうという意図があります。 <br>だけではなくて、<br/>や<br />(/の前に空白あり)にも対応させました。 また、僕はサイズ縮小版のprettify-small_31_Aug_2007を使用しているので、そちらの場合の修正ポイントも書いておきます。 修正箇所はprettify.jsファイルの中をinnerHTMLでテキスト検索していって一番最後に見つかった部分です。最終行である18行目の後ろのほうを以下のように修正しました。

prettify.js修正前

~(省略)~l.innerHTML=m;~(省略)~

prettify.js修正後(上記のl.innerHTML=m;部分を以下に置き換え)

l.innerHTML=(/*@cc_on!@*/false) ? m.replace(/<br\s?\/?>/g, '&nbsp;<br/>') : m;

で、これでとりあえずいけるかと思ったけど・・・ダメだったと(実際は少し惜しかった)。 日本語表示行の改行ができない。<br>タグすらないと思われる。 それを調べるためにMicrosoft提供のIE版FirebugのようなものInternet Explorer Developer Toolbarなんてものを入れたりして格闘しました。

また、この修正でもIEでコード部分をコピペした場合、やはり改行が削除されてしまうという問題は解決していません。 ということでFavorite Laboの中の人は導入を見送ったみたいです。 そこで後から知ったことだけど、dan kogai氏も同じ問題に対してIEのみオフという対処をしたようなので(参照:404 Blog Not Found - google-code-prettify vs IE 6)、僕も同じ手段を取りました。 IEかどうかの判定部分は知人のアドバイスを受け入れdan氏とは少し違う方法を取りました。

if (1 /*@cc_on -1 @*/)

ではなく

if (/*@cc_on!@*/true)

という方法。数値型を真偽値にキャストするコストを抑えるため、らしい。そういう風に解釈した。間違ってないよね? そして以前google-code-prettifyの導入時に、bodyタグのonLoadで2つの関数を実行しているので、そこを丸ごとこのif文で囲みました。

<body onload="if (/*@cc_on!@*/true){prettyPrepare();prettyPrint();}">

とりあえずこれで逃げます。 指摘くださったn46さん、ありがとうございました。

[Nucleus]スパムコメントに対応 - NP_Captchaプラグイン

以下から入手して、ここ数日急きょ増えたスパムコメントに対応。 コメント時に画像内の文字を入力するという、よくあるやつ。

captcha [Wiki:NucleusCMS]

それはそうとコメントフォームの表示が崩れるんだけど、修正する方法がわからない。 スキンやテンプレートで定義されているのでもないみたい。 どっかでカスタマイズできるのかな。

追記

CSSの修正でなおることがわかった。どうやらNucleus3.3独自の問題なのかな?
以下参照。

nucleusの時間です | コメントフォーム

[Nucleus][MODx]google-code-prettifyでソースコードの色分け表示

以下参照

google-code-prettify で ソースコード表示 を修飾

最近、Nucleusのカスタマイズに関してここのブログに大変お世話になっています。
僕も誰かの役に立てるような情報を残せるように、早くなりなさい。

google-code-prettify導入後、色合いが背景と会わなかったのでスタイルシートの背景色を若干修正。
よし、これでOK。

これを参考にMODxのサイトにも導入してみた。
prettify.css と prettify.jsは(MODxインストールディレクトリ)/assets/jsと(MODxインストールディレクトリ)/assets/cssに設置。cssディレクトリは無かったので新たに作りました。ようは見えるところにあればどこでもいい。

個別のドキュメントに一つずつ修正を加えるのはもちろんナンセンスなので、共通のテンプレートの<head>内に以下のコードを追加します。prettify.cssとprettify.jsへのリンクは各自の環境にあわせましょう。

<!-- google-code-prettify -->
<link href="/assets/css/prettify.css" rel="stylesheet" type="text/css"/>
<script src="/assets/js/prettify.js" type="text/javascript"></script>
<script type="text/javascript">
function prettyPrepare() {
    var o = document.getElementsByTagName("pre");
    for (var i=0; i<o.length; i++) {
        if (o[i].firstChild.tagName.toLowerCase() == "code") o[i].firstChild.className = "prettyprint";
    }
}
</script>

そしてbodyタグを修正。

<body onload="prettyPrepare();prettyPrint();">

以上。 最近、人のふんどしで相撲取りすぎだな。。

追記

IEでの利用に不具合が発覚しました。 詳しくは次の記事を参照してください。 今のところ解決法は見つかっておらず、IEのみオフになるようにしています。

[未解決]google-code-prettifyを使用するとIEで改行が表示されない

[Nucleus]カテゴリの階層化

NP_MultipleCategoriesで実現できます。
ただしスキン編集とかスキンファイルをいじったりする必要がある。
Nucleusはデザインに関する設定内容が色んな場所に散らばってる。
これはスキンとテンプレートという思想上しかたのないことかもしれないけど、若干不便に感じるんだなぁ。

そういえばMODxもこれに似ているところがある。
でもMODxは普通のHTMLに近いので知ってる人にはわかりやすい気がする。
Nuleusのスキンとテンプレートの概念って、本当にちゃんと理解するのって大変そう。。

«前へ || 1 | 2 || 次へ»

Home > Nucleus

Search
Feeds

Page Top