"Nucleus" の一覧

WindowsLiveWriterでNucleusに投稿するには

新しいWindows Live Writer(以下WLW)でカテゴリが認識できなくなると記載したが、中途半端な自動認識機能を無視して正常に処理する方法が分かった。

Nucleus_Before レジストリエディタを起動し、ブログのURLなどで検索します。検索して出てきた画面が左です。
ここでClientTypeがmetaweblog、ServiceNameがNucleus CMS v3.31SP3となっています。
Nucleus_After ClientTypeをMovableType、ServiceNameをMovable Type APIへ変更。

これで今までどおり使えるようになった(゚∀゚)

Nucleusのユーザー名にハイフォン使いたい

Nucleusのエラーメッセージによると

名前が使用できません ( a-z 、0-9 の英数字しか使えません)

との事。これだとWindowsのユーザー名と統一できないしなぁ・・・と思いながらユーザー名をチェックする関数を眺めていると・・・

^[a-z0-9]+[a-z0-9 ]*[a-z0-9]+$

あれ?なんか半角スペースが許されているような。試しに”abc test”というユーザーを作るとなんの問題もなく登録可能。これでいいのか?と思いつつスルー。

本来の目的だったアンダーバーとハイフォンを使えるように修正。

install.php(1009)

// returns true if the given string is a valid display name
// (to check nicknames)
function _isValidDisplayName($name) {
	if (eregi("^[a-z0-9]+[a-z0-9 _\-]*[a-z0-9]+$", $name) ) {
		return 1;
	} else {
		return 0;
	}
}

2009/07/14訂正しました。

Nucleusで複数BlogとRSS

Nucleusで複数のBlogを下記の構成で立ち上げる。

デフォルトBlog index.php
セカンドBlog secondblog.php

Nucleusの指示どおりsecondblog.phpでアクセスできるよう、下記のように記述する。

secondblog.php

<?php

$CONF['Self'] = 'secondblog.php';

include('./config.php');

selectBlog('secondblog');
selector();

?>

ここまでは問題ないが、セカンドBlog上でRSSを取得しようとするとデフォルトBlogのRSSを拾ってきてしまう。原因はSkinファイルにRSSのパスが固定で記述されている為。

【修正前】header.inc

<link rel=”alternate” type=”application/rss+xml” title=”RSS” href=”<%sitevar(url)%>xml-rss2.php” />

【修正後】header.inc

<link rel=”alternate” type=”application/rss+xml” title=”RSS” href=”<%sitevar(url)%>xml-rss2.php?blogid=<%blogsetting(id)%>” />

 

※最初は<%blogid%>で取得できると思ったが、スキン変数として認識されなかった。

Nucleusからのデータ抽出

こんな感じでNucleusからデータを取得。ODBCさえ設定してしまえば、結構簡単に探せる。が、同じ事を繰り返したくないのでメモ。

SELECT
    CONCAT('<hr><h1>',ITEM.ititle,'</h1>', ITEM.ibody) as report
FROM
    nucleus_item AS ITEM LEFT JOIN nucleus_category AS CAT ON(CAT.cblog = ITEM.iblog AND CAT.catid = ITEM.icat),
    nucleus_member AS MEMB
WHERE
    MEMB.mrealname LIKE 'ユーザー名%'
AND ITEM.iauthor = MEMB.mnumber
AND CAT.catid = 2
AND idraft = 0
ORDER BY
    itime

Nucleusの移行

NucleusをWindowsのZendCore上で稼働させていたが、CentOS5.2へ移行してみた。するとNucleusのDB保存と復元で正常に動作したかのように見えるがphpMyAdmin上ではUTF8の日本語が文字化けしていた。

DBバックアップを圧縮しないようにし、文字コードがUTF8である事を確認した上で、CentOS5.2へインポートしたら正常に復元された。

すると今度は、Nucleus上で日本語が表示できなくなるという・・・

で、結局ここを参考にglobalfunctions.phpに手を入れる事で解決。

以下引用:

globalfunctions.php で sql_connect();
という行を探し,その後ろに
sql_query(‘set names utf8’);
と入れてみてください。

MySQL5.0.27の文字コードではまる

MySQL5.0.27に格納されたNucleusのデータを抽出しようとしたら、もう何をどう触っても文字化けが直らない。本家サイトのマニュアルに今の文字コードを確認するSQL文を発見。
[SQL] SELECT character_set_name, collation_name FROM information_schema.columns WHERE table_schema = your_database_name AND table_name = your_table_name AND column_name = your_column_name; [/SQL]

character_set_name collation_name
latin1 latin1_swedish_ci

って帰ってくるじゃないですか。DBを作り直すしかない???

結局、

  • [1]Nucleusの管理画面からDBを『nucleus.dat』として保存(UTF8で保存のこと)
  • [2]Nucleus用のDBをmysqldumpでエクスポート『dbexp.dat』
  • [3]『dbexp.dat』内のlatin1をutf8へ置換
  • [4]『dbexp.dat』をDB名”Nucleus2″としてインポート
  • [5]phpAdminからNucleus2から全テーブルのデータをTruncate
  • [6]phpAdmin上で Nucleus2に対して『nucleus.dat』のファイルを実行する
  • [7]一部テーブルのCREATEが出来ない
  • [8]『nucleus.dat』のファイルからDROP TABLEとCREATE文を削除
  • [9]phpAdmin上で Nucleus2に対して『nucleus.dat』のファイルを実行する
  • [10]phpAdminから日本語が正常に表示できるか確認
  • [11]my.iniの見直し(skip-character-set-client-handshakesの設定)
  • [12]Nucleus2のDM名を今の元の差し替える

で無事復帰。MySQL5の文字コードはいろいろトラブルが多いみたいで見事に巻き込まれ。