blockの作成・編集時に、そのページのテーマのパスを取得したい。

2011年1月21日 at 20:04

お世話になっております。

テーマ内に共通の画像を置いておき、その画像を選択できるblock作成しています。
そこで、
blockの作成・編集時(add.php,edit.php)に、
そのページのテーマのパスを取得したいのですが、上手く取得出来ない状況です。

一応以下の方法は試してみました。
1.
$v = View::getInstance();
$v->getThemePath(); // -> NULL

2.
$pt = PageTheme::getSiteTheme();
$pt->ptURL; // -> protectedメンバなのでアクセス出来ず...

3.
$currentPage = Page::getByID($_REQUEST['cID'], 'RECENT');
$pt->getCollectionThemeObject(); // 取得できるのgetSiteThemeオブジェクトのため2と同じ

テーマに入れた画像から取り出すという、発想が良くないのでしょうか...
直接パスを書けば住む事なのですが、ご教授いただけますと幸いです。

Re: blockの作成・編集時に、そのページのテーマのパスを取得したい。

2011年1月21日 at 22:25
ブロックの編集画面は、Pageではなくて、toolsのadd_block_popup.php経由で呼び出されます。

なので、View::getInstance();では編集中のページのviewではなく、ブロックの編集画面のviewを持って来てしまうと思います。
なので、add_block_popup.phpに渡されるcIDからページ(コレクション)オブジェクトを持って来て、使用されているテーマを取得する3の方法が使えます。
ただ、見たところ$currentPageを使わずに、何故かいきなり$ptを使っているのが問題だと思います。
普通に
$currentPage = Page::getByID($_REQUEST["cID"]);
$t = $currentPage->getCollectionThemeObject();
$path = $t->getThemeURL();

で取れると思います。

あと、このブロックの目的が良くわかりませんが、もっと簡単な方法があると思います。
 

Re: Re: blockの作成・編集時に、そのページのテーマのパスを取得したい。

2011年1月24日 at 10:30
taoさま

ありがとうございます。
提示して頂いた方法で取得する事ができました。
後、試していると
$pt = PageTheme::getSiteTheme();
$path = $pt->getThemeURL();
でも取得する事が出来ました。
まだよくオブジェクトの関係を理解出来ていないようです....

3.の$pt->getCollectionThemeObject();は$pt = $currentPage->getCollectionThemeObject();の打ち間違いでした...