諸事情によりもうちょいNucleus利用することにしました。
てことで、Permalink問題。
サイト側が吐くPermalinkは、アクセスの98%は想定したものになっているのでよし。
問題はサーチエンジン、その他からのアクセスがあった場合。
itemidのみでアクセスがあったらcatidを付加してリダイレクトというプラグインをさらっと。
function event_PreItem(&$data)
{
$blogurl = $data['blog']->settings['burl'];
$itemid = $data['item']->itemid;
$catid = $data['item']->catid;
$anchor = strstr($_SERVER['QUERY_STRING'], '#');
if (intGetVar('itemid') && !intGetVar('catid')) {
redirect("{$blogurl}?itemid={$itemid}&catid={$catid}{$anchor}");
}
}
アーカイブの個別アイテム利用してない、カテゴリが常にひとつ存在する、FuncyURL利用してない場合と制限が多いので汎用性のあるプラグインにするの面倒なので自分専用。
どこかにいい方法みつけて実装してそうだし。
この程度だと探す手間>自作だったので。
Nucleusのプラグインの仕様、思ったよりしっかりしてることにびっくり。
なんで、global使いまくりのプラグインが乱立したんだろ。
時代のせいかな。
ついでにverを3.3にアップしました。
アップデート簡単すぎ。
直接コアファイルをいじった記憶はありませんが、なんか不具合を発見しましたらこっそり教えてください。
Nucleus
引越し引越しいいつつ地味にNucleusに手入れ。
○まずコメントスパム対策。
コメントスパムの投稿自体はキャプチャの機能により阻止できていたのですが、レスポンス200を返すため一向に減らず、うざくなってきたようなのでPOSTされた情報のみログとして保存し傾向と対策を練る。
その結果、コメント本文「body」に「http://」、キャプチャ文字「var_col」に「 (半角スペース)」を含んでいた場合406エラーを返すようにフロントコントローラであるindex.phpを編集しました。
○アイテムリンクURLの統一
Nucleusのテンプレート変数<%itemlink%>は、デフォルトで<%blogurl%>?itemid=<%itemid%>という動作をしていて、もし、パラメータでblogid、catidが存在した場合、それを追加するという動作をしています。
その為、カテゴリを選択した場合固定リンクが<%blogurl%>?itemid=<%itemid%>&cid=<%categoryid%>に代わるなど同じアイテムに対して複数のURLが存在することになります。
また、RSSでは直で<%blogurl%>index.php?itemid=<%itemid%>というまた別のURLを設定してありました。
はてブで同じアイテムが複数あるのはそういうわけです。。。
というわけで、はてブ登録件数が一番多いアドレスを元に、<%itemlink%>を利用している部分を<%blogurl%>?itemid=<%itemid%>&cid=<%categoryid%>に変更しました。
本当ならPATH_INFO使ったFuncyURLに対応したいとこですが、いまいち気に食わない仕様なのと、修正コストが大きいのでやめときました。
上記の場合はテンプレート編集のみの10分程度で終了。
修正したのはテンプレートのみなので、プラグインが生成する固定URLが違うのは問題として認識しています。
これ、Nucleusプラグインの仕様が影響してるんですよね。
プラグインが自由につくれるということで、ほんとに自由につくってしまったのが問題。
・プラグイン内でアイテムリンクURL生成する場合は、itemlinkを生成する関数を利用する。
・テンプレートでアイテムリンクURL生成する場合は、<%itemlink%>を利用する。
上記の規約があった上で、
・itemlinkは機能、またはプラグインでアドホックしてフォーマットを指定できるようにする。
上記の仕様であれば楽だったんですが、とても今更感。
Googleインデックスやはてブの登録されたURLどうしようかってのも問題。
Googleに関してはかってに再インデックスされるの待つか、GETで変なアドレスにきたら、「HTTP/1.1 301 Moved Permanently」を返すってことでいいけど、はてブは勝手に変更されることないだろうし、特に作業しないまま放置。
Nucleus
そろそろ本気でwordpressに移行をと思いつつなかなか。
SELECT
inumber AS ID,
iauthor AS post_author,
itime AS post_date,
DATE_SUB(itime, INTERVAL -9 HOUR) AS post_date_gmt,
CASE iclosed WHEN 0 THEN "open" ELSE "closed" END AS comment_status,
CASE idraft WHEN 0 THEN "publish" ELSE "draft" END AS post_status,
CASE WHEN LENGTH(imore) = 0 THEN ibody ELSE CONCAT(ibody, "\n\n Read more...
Nucleus
旧暦で七夕ですよね?
北海道、東北しか知らないことなんですか?
■IEでfaviconをちゃんと出す
■Ajaxを利用してPHPを開発する、第2回: 「戻る」「進む」「更新」
■PHPとデータベースに関する5つの問題、とその解決法
■PHPのバックアップ用クラスライブラリ
classesチャンネルつくってPEAR形式で配布してくれると楽なんだけどなぁ
■ゼロからの創成! 『新世紀GPXサイバーフォーミュラ ロード トゥ ザ インフィニティ3』
原作の総監督を務め、『機動戦士ガンダムSEED』などの監督としても知られる福田巳津央と、OVAで展開された『SAGA』、『SIN』の脚本などを務めた両澤千晶が完全協力!
負債wwwwwwwwwww
Nucleus
そういやドギバグってまだ単行本とかどうなってる?
Nucleusでレイアウトがくずれた。
Searchモードでキーワードをハイライトできるんだけど、タグ内の文字もハイライトしようとする。
もちろんhtmlencodeしてくれるわけなんだけど、なぜかダブルクオートはそのまま。
コメントへ
こういう感じで検索でキーワード指定すると以下のようになるようになるようで、さらに変な感じになってる現状。
コメントへ
最近HPが少ないのでソース追う気力ないので、使ってる人各自チェックしてみて。
Read more…
Nucleus