d3blogからのインポート
永らくありがとうございました › フォーラム › 使い方全般 › d3blogからのインポート
- このトピックには8件の返信、2人の参加者があり、最後に
匿名により10年、 11ヶ月前に更新されました。
-
投稿者投稿
-
2012 年 2 月 16 日 2:42 PM #2683
匿名
ゲストすいません、xoopsでサイトを作っていますが、まったくの初心者です。
d3blogからデータをxpressに移したいのですが、どのようにすればよいのでしょうか?
色々検索も試みましたが分かりませんでした。
お手数をおかけしますが、ご教授いただければ幸いです。
宜しくお願いいたします。
******** システム情報********
SERVER: Apache/1.3.42 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8e
PHP Version: 5.2.17
libxml Version: 2.7.8
MySQL Version: 5.5.15-log
XOOPS Version: XOOPS Cube Legacy 2.2.1 Beta1
XPressME Version: 2.42
WordPress Version: 3.2.1
WP DB Version: 18226
safemode: OFF
register_globals: OFF
allow_url_fopen: ON
magic_quotes_gpc: ON
XML extension: ON
default memory_limit: 128M
change memory_limit: 128M
post_max_size: 8M
upload_max_filesize: 5M
display_errors: ON
MB extension: ON
mbstring.language: japanese
mbstring.encoding_translation: OFF
mbstring.internal_encoding: EUC-JP
mbstring.http_input: pass
mbstring.http_output: pass
mbstring.detect_order:
mbstring.substitute_character: none
mbstring.func_overload: OFF
******** XPressMEがXOOPSより取得した設定値********
XOOPS_ROOT_PATH: OK
XOOPS_TRUST_PATH: OK
XOOPS_URL: OK
XOOPS_SALT: OK
XOOPS_DB_HOST: OK
XOOPS_DB_USER: OK
XOOPS_DB_PASS: OK
XOOPS_DB_NAME: OK
XOOPS_DB_PREFIX: OK
******** WordPressで使用中のプラグイン********
Movable Type and TypePad Importer: Version 0.4: (http://wordpress.org/extend/plugins/movabletype-importer/)
Plugin for XPressME: Version 1.0: (http://ja.xpressme.info)
******** ブロックステータス********
最近の記事内容: OK
最近の記事: OK
人気記事リスト: OK
ページ: OK
最近のコメント: OK
サイドバー: OK
検索: OK
カレンダー: OK
アーカイブ: OK
投稿者: OK
タグクラウド: OK
カテゴリー: OK
メタ情報: OK
ウィジェット: OK
拡張ブロック: OK
******** ブロックオプション********
アーカイブ : xpress||monthly|0|1|0
投稿者 : xpress||0|1|0|1
タグクラウド : xpress||8|22|pt|45|flat|name|ASC||
カテゴリー : xpress||ALL|name|ASC|0|0|1|1|||1|0
メタ情報 : xpress||1|1|1|1|1|1|1|1
ウィジェット : xpress||1|
拡張ブロック : xpress||
カレンダー : xpress||#DB0000|#004D99
サイドバー :
検索 : xpress||18
最近のコメント : xpress||10|30|||0
ページ : xpress||post_title|asc||||0|0|none||1||
人気記事リスト : xpress||10|0||||0
最近の記事 : xpress||10|1|7||||0
最近の記事内容 : xpress||10|0|100||||0|0|0
******** グループ権限********
: (None) : administrator(No) :
サイト管理者 : (module_admin) : administrator(No) :
登録ユーザ : (module_inhibit) : inhibit register(No) :
******** ユーザーメタ情報********
ユーザーメタキーは正常です
******** ブログ統計********
カテゴリー数: 1
記事数: 1
投稿者数: 1
2012 年 2 月 17 日 3:44 AM #3335toemon
キーマスターmusickeikoさんこんにちは、
D3blogのデータベース構成がどのようになっているのかよくわかっていないので直接のインポートについてはお答えできないのですが、
D3Blogで全文RSSが取得出来るのなら、WordPress側のインポートでRSSからのインポートというのがありますので、そちらを使ってインポートするというのが、一番手っ取り早いような気がします。はじめてWordPress側のRSSインポートを行おうとすると、「プラグインをインストールしてね」とかいわれますけど、必要なプラグインが表示されますので「今すぐインストール」とかでインストールしてあげれば、RSSファイルからのインポートが出来ると思います。
ただ、自分もRSSからのインポートはやったことがないので、確証は持てないので、今度の土日にでも確認してみみますが、支障がなければ、対象のホームページURLを教えていただけるとありがたいです。公開したくないようであれば、当サイトの、お問い合わせ等を使って、いただいても結構です。
2012 年 2 月 17 日 1:39 PM #3336匿名
ゲストtoemon様
早速のお返事ありがとうございます。
インポートのプラグインの欄に、RSSで呼び込むものがありましたので、d3blogをRSSで出してみましたが全文にはなりませんでした。
(全エントリー、途中線で区切って続きを読むという形にはしていません)
d3blogのデータベースでのテーブルはcategory、entry、trackbackの3つあります。
RSSのテンプレートに関係あるのかないのかわかりませんが、下記に貼ります。
貼っていいのかもわからないので、支障があればすぐ削除します。
<?xml version=”1.0″ encoding=”UTF-8″?>
<rss version=”2.0″>
<channel>
<title><{$feed.title}></title>
<link><{$feed.link}></link>
<description><{$feed.desc}></description>
<lastBuildDate><{$feed.lastbuild}></lastBuildDate>
<docs>http://backend.userland.com/rss/</docs>
<generator><{$feed.generator}></generator>
<category><{$feed.category}></category>
<language><{$feed.lang}></language>
<{if $logo_url != “”}>
<image>
<title><{$feed.title}></title>
<url><{$feed.logo_url}></url>
<link><{$feed.link}></link>
<width><{$feed.logo_width}></width>
<height><{$feed.logo_height}></height>
</image>
<{/if}>
<{foreach item=item from=$entries}>
<item>
<title><{$item.title}></title>
<link><{$item.link}></link>
<description><{$item.description}></description>
<pubDate><{$item.pubdate}></pubDate>
<guid isPermaLink=”true”><{$item.guid}></guid>
</item>
<{/foreach}>
</channel>
</rss>
サイトは http://musickeiko.jp です。
宜しくお願いいたします。
2012 年 2 月 17 日 6:33 PM #3337toemon
キーマスターd3blogをRSSで出してみましたが全文にはなりませんでした。
(全エントリー、途中線で区切って続きを読むという形にはしていません)
Hodakaさんのフォーラムでd3blog RSS全文出力の方法が示されていました。
詳細についてはかかれていませんが、たぶん、XOOPS_TRUST_PATH/modules/d3blog/main/rss.php
の74行目あたり
<code>$item['description'] = xoops_convert_encoding($entry->pingExcerpt());</code>
を
<code>$item['description'] = xoops_convert_encoding($entry->renderContents(false,'e'));</code>
に変更しなさいってことだと思います。
あと、RSSに表示される記事数はd3blogの一般設定のRDFフィード記事数で設定します。
2012 年 2 月 18 日 2:18 AM #3338匿名
ゲストtoemon様、ありがとうございます。
教えていただいたとおりにしましたら、全文表示されました。
が、、途中でエラーが。。
いつも が最初にあるとエラーになるのですが、今回はそれではなさそうです。
申し訳ありません、エラーメッセージのPCDATA invalid Charの意味がよく分かりません。
エントリーに文字の崩れなどはないと思うのです。
すいません、元の質問とずれてしまいますが、宜しくお願いいたします。
2012 年 2 月 18 日 6:21 AM #3339toemon
キーマスターサイト拝見させていただきました。
RSSの取得では
でエラーとなっているようですね
不完全ですが取得したRSSからローカルテスト環境にインポートしてみました
結果として、記事はインポートできますが、カテゴリまではインポートされませんでした。
RSSエラーについては元データがどうなっているのか不明なので、
d3blogのデータベースでのテーブルはcategory、entry、trackbackの3つあります
のデータベーステーブルをphpMyadmin等でエクスポートしたものを
圧縮いただき
info@toemon.com宛までメール添付していただければ、当方のローカルテスト環境でテストしてその結果を報告できるかと思います。
2012 年 2 月 20 日 1:09 PM #3340匿名
ゲストtoemon様
ありがとうございます。
お言葉に甘えて送らせていただきました。
どうぞよろしくお願いいたします
2012 年 2 月 21 日 12:08 AM #3341toemon
キーマスターエラーメッセージのPCDATA invalid Char 26
については不明ですが、
取得した、XMLファイルのエラー部分を修正したものを、送付させていただきました。
備考
ホームページ[井上雄彦 最後のマンガ展 重版 大阪]の文字をコピーして他のエディタに貼り付けてみると、
「大阪天保山にある」の「あ」と「る」の間に制御コード 0x1A
「玄関を入ると」の「を」と「入り」の間に制御コード 0x1A 0x7F 0x1A
が、挿入されています。
これがどうして入力されたのかは定かではありませんが、
ローカル環境のD3Blogで同様の文字を入力して再現性はありません。
D3Blogの編集画面で該当の箇所をBackspaceで消していくと、カーソル位置が変わらず、余計な文字が入っているのが解ると思います。
RSSインポート用のXMLファイルは以下のようにして取得しました
- D3BlogのRSSを全文出力に変更
XOOPS_TRUST_PATH/modules/d3blog/main/rss.phpの74行目あたり
<code>$item['description'] = xoops_convert_encoding($entry->pingExcerpt());</code>
を
<code>$item['description'] = xoops_convert_encoding($entry->renderContents(false,'e'));</code>
に変更
- 全記事を出力させるのに記事数制限を解除する
XOOPS_TRUST_PATH/modules/d3blog/main/rss.phpの59行目あたり
<code>$limit = intval($myModule->getConfig('max_rdf'));</code>
を
<code>$limit = 0;</code>
に変更
- インポート用に出力の並びを古い記事から最初に出現するようにする。
XOOPS_TRUST_PATH/modules/d3blog/main/rss.phpの66行目あたり
<code>$criteria->setOrder('DESC');</code>
を
<code>$criteria->setOrder('ASC');</code>
に変更
- カテゴリーと著者名を取得できるように変更
- rss.phpにカテゴリーと著者名出力を追加
XOOPS_TRUST_PATH/modules/d3blog/main/rss.phpの69行目あたり
<code>foreach($entries as $entry) {<br /> $item['title'] = xoops_convert_encoding(htmlspecialchars($entry->getVar('title', 'n'), ENT_QUOTES));<br /> $item['link'] = sprintf('%s/modules/%s/details.php?bid=%d', XOOPS_URL, $mydirname4show, $entry->bid());<br /> $item['guid'] = sprintf('%s/modules/%s/details.php?bid=%d', XOOPS_URL, $mydirname4show, $entry->bid());<br /> $item['pubdate'] = d3blog_rfc2822_date($entry->published());<br /> $item['description'] = xoops_convert_encoding($entry->renderContents(false,'e'));<br /> $items[] = $item;<br /> }</code>
を
<code>$all_categories =& $cat_handler->getAll();<br /> foreach($entries as $entry) {<br /> $category =& $all_categories[$entry->cid()];<br /> $arr =& $entry->getStructure();<br /> $item['title'] = xoops_convert_encoding(htmlspecialchars($entry->getVar('title', 'n'), ENT_QUOTES));<br /> $item['link'] = sprintf('%s/modules/%s/details.php?bid=%d', XOOPS_URL, $mydirname4show, $entry->bid());<br /> $item['guid'] = sprintf('%s/modules/%s/details.php?bid=%d', XOOPS_URL, $mydirname4show, $entry->bid());<br /> $item['pubdate'] = d3blog_rfc2822_date($entry->published());<br /> $item['description'] = xoops_convert_encoding($entry->renderContents(false,'e'));<br /> $item['category'] = xoops_convert_encoding($category->getVar('name'));<br /> $item['creator'] = xoops_convert_encoding($arr['blogger']['uname']);<br /> $items[] = $item;<br /> }</code>
に変更
- テンプレートd3blog_main_rss.xmlにカテゴリーと著者名出力を追加
テンプレートd3blog_main_rss.xmlを
<code><?xml version="1.0" encoding="UTF-8"?><br /> <rss version="2.0"><br /> <channel><br /> <title><{$feed.title}></title><br /> <link><{$feed.link}></link><br /> <description><{$feed.desc}></description><br /> <lastBuildDate><{$feed.lastbuild}></lastBuildDate><br /> <docs>http://backend.userland.com/rss/</docs><br /> <generator><{$feed.generator}></generator><br /> <category><{$feed.category}></category><br /> <language><{$feed.lang}></language><br /> <{if $logo_url != ""}><br /> <image><br /> <title><{$feed.title}></title><br /> <url><{$feed.logo_url}></url><br /> <link><{$feed.link}></link><br /> <width><{$feed.logo_width}></width><br /> <height><{$feed.logo_height}></height><br /> </image><br /> <{/if}><br /> <br /> <{foreach item=item from=$entries}><br /> <item><br /> <title><{$item.title}></title><br /> <link><{$item.link}></link><br /> <pubDate><{$item.pubdate}></pubDate><br /> <author><{$item.creator}></author><br /> <category><{$item.category}></category><br /> <description><{$item.description}></description><br /> </item><br /> <br /> <{/foreach}><br /> </channel><br /> </rss></code>
に修正
- rss.phpにカテゴリーと著者名出力を追加
RSSインポートを行う際に、
件数が多いと、処理に時間がかかり、
<code>Fatal error: Maximum execution time of ** seconds exceeded in ....</code>
が表示されることがあります。(**部はサーバーの設定により異なります)
この場合の対処方法としては、
- php.iniのmax_execution_timeを設定し直す(0を設定した場合無制限)
- インポート用のXMLファイルの<item> … </item>の部分をいくつかに分けて複数回に分けて処理する。
等をおこないインポートします。
なお、WordPressのRSSインポータは著者名まではインポートしていません。
2012 年 2 月 21 日 11:03 AM #3342匿名
ゲストtoemon様
ありがとうございます!
修正していただいたファイルをいくつかに分けてインポートしました。
全文 綺麗に移すことができました!
カテゴリーもきちんとでました!
色々修正を加えてファイルを作ってくださり感謝いたします。
以前、記事を書く際、以前はxoopsエディターを使用していましたので、そのリンクが繋がらず画像表示されないということもありますが、これは仕方ないことですよね。
じっくり書き換えます。
本当に本当にありがとうございました。
- D3BlogのRSSを全文出力に変更
-
投稿者投稿
- フォーラム「使い方全般」には新規投稿および返信を追加できません。