- 2011-09-23 (金) 14:14
- MovableType


- ウェブページをブログからウェブサイトに移動させる時の関連アイテムパス変更
他人のエントリーに相乗りシリーズ・その1(って、絶対続かないと思うけど・・・)
「SQLで特定のブログのブログ記事を別のブログのウェブページに変更する - かたつむりくんのWWW」
ブログのウェブページだったものを、ウェブサイトに移動した時に、関連するアイテムパスをSQLでゴニョゴニョするです。
ウェブサイトのURLが http://hoge.com/ な時に、そこにぶら下がるブログのURLが http://hoge.com/fuga/ だったします。
その時に、ブログで登録したアイテムのURLが http://hoge.com/fuga/image/gazo.jpg だったとすると、そのアイテムのmt_assetテーブル上のasset_urlカラムでは「%r/image/gazo.jpg」として保存されています。(絶対ではなく違う場合もあるのですが、通常はそうです。)
また、asset_file_pathも同じく「%r/image/gazo.jpg」として保存されて居ることが多いです。(こちらは、OSに依存したパス区切り文字に変更されている場合もあります。例:「%r\image\gazo.jpg」)
この%rはブログの公開URL/ブログの公開パスをそれぞれ表しています。
つまり、ブログルートを基準とした相対パスで記述されているということです。
このアイテムをウェブサイトのアイテムに変更する場合、ブログ(正しくはウェブサイト)の公開パスが変更されるので、必然的に相対パスも変わってきます。
この場合は「%r/fuga/image/gazo.jpg」になります。このパス変更を行うSQLは以下になります。
UPDATE `mt_asset` SET `asset_url`=REPLACE(`asset_url`,"%r/","%r/fuga");
実際には、asset_urlと共にasset_file_pathの変更も必要ですし、大抵はasset_blog_idの変更も必要なはずです。
それらを含めて、以下のようなSQLで変更が可能になります。
UPDATE `mt_asset` SET `asset_blog_id` = ウェブサイトのブログID, `asset_url` = REPLACE(`asset_url`, "%r/", "%r/fuga"), `asset_file_path` = REPLACE(`asset_file_path`, "%r/", "%r/fuga") WHERE `asset_blog_id` = 現在のブログのブログID
ただし、これらは細かい条件指定をしていないので、ブログに属する全てのアイテムが対象になっています。適切なWHERE句で対象を指定するか、phpMyAdminの検索機能などを使って絞り込んだ上でSQLを実行するとよいでしょう。
関連アイテムとしてウェブページに関連付けが行われている場合は、もちろんそこも修正が必要です。
こちらはアイテムID(objectasset_asset_id)、ブログID(objectasset_blog_id)、エントリーID(objectasset_object_id)の組み合わせなので、変更先ブログIDへと書き換えが必要です。
ブログIDが「1」のブログ・ウェブサイトにある、ウェブページの関連付けデータを、ブログID「2」のブログに変更したい場合は以下のSQLで実行できます。
UPDATE `mt_objectasset` SET `objectasset_blog_id` = '2' WHERE `objectasset_blog_id` = '1' AND `objectasset_object_ds` = 'page';
- Newer >: スマートフォンオプションでSSHA形式のパスワードを使用する
- < Older: 挿入画像の幅を制限するMaxImageWidthプラグイン
ping a Trackback
- TrackBack URL for this entry.(1)
Comments:(6)
-
said
November 5, 2011 7:03 PM
|
ReplyThis!
LinkedInでのログインテスト。

-
said
November 6, 2011 10:24 PM
|
ReplyThis!
BrowserIDでログインテスト
-
said
November 7, 2011 10:35 PM
|
ReplyThis!
Twitterログインは、戻り時にサインイン状態にならない。
もう一度サインイン処理をしないと反映されないなぁ。-
said
November 7, 2011 10:49 PM
|
ReplyThis!
MTでのログインは問題なし。
なんか全体に変だなぁ。-
said
November 7, 2011 11:57 PM
|
ReplyThis!
TypePadは安定してるなぁ
-
said
November 16, 2011 3:38 PM
|
ReplyThis!
Facebookでログイン(プラグイン差し替えた)




スクリプトの読み込みが完了していません。
メールフォーム(Javascriptを使用していません)や、
Twitter経由のCommentでもReplyいたします。ただし返信はブログのコメントとして行う事もあります。