category-iconsの「最近の記事内容」への反映について
永らくありがとうございました › フォーラム › プラグイン › category-iconsの「最近の記事内容」への反映について
- このトピックには7件の返信、2人の参加者があり、最後に
匿名により13年、 3ヶ月前に更新されました。
-
投稿者投稿
-
2009 年 9 月 29 日 5:38 AM #2612
匿名
ゲストtoemon様
いつもお世話になっております。
プラグインの導入について、xoops側の「最近の記事内容」への反映に
手こずっております。
もしお分かりになれば、アドバイスいただけませんでしょうか。
(環境)
HD-1.0.4 for XCL2.1
XPressME_Integration_Kit_Ver2.1.2
wp2.8.4
カテゴリー名をアイコン表示させたく、下記のサイトを参考に
category-iconsプラグインを導入いたしました。
http://angeblanc.net/2008/05/23/category-icons/
アイコンを適用するために、
index.phpとsingle.phpに以下のコードを挿入しました。
<?php if (function_exists(‘get_cat_icon’)) get_cat_icon(); ?>
こちらは問題なくアイコンが表示されるようになりました。
続いて、xoopsトップページには、
「最近の記事内容」をブロック表示させておりますので、
こちらにも反映したく、recent_posts_content_block_theme.phpに
同様のコードを挿入してみましたが反省できませんでした。
ここにコードを挿入しようとしていること自体が
間違っているのでしょうか…。
何卒宜しくお願い申し上げます。
2009 年 9 月 29 日 1:30 PM #2886toemon
キーマスターky982339さん、こんにちは
続いて、xoopsトップページには、
「最近の記事内容」をブロック表示させておりますので、
こちらにも反映したく、recent_posts_content_block_theme.phpに
同様のコードを挿入してみましたが反省(反映?)できませんでした。
ここにコードを挿入しようとしていること自体が
間違っているのでしょうか…。
スタンスとしては間違いではありませんが、recent_posts_content_block_theme.php側は、同ページに表示させても正常に表示できるようにマルチループを使ってますので、その辺りの影響で反映されないのかもしれません。
ちょっと面白そうなので、こちらでもなんとか表示できないか試して見ます。
と、言いつつ今日は、健康診断でバリウム飲んだ後にもらった下剤を飲んだせいで、おなかの調子が悪いので、明日にでもトライしてみます。
2009 年 9 月 30 日 5:33 AM #2887toemon
キーマスターテスト結果の報告をいたします。
結論からいうと、「最近の記事内容」ブロックへのカテゴリーアイコンの表示はとくに問題なく行えました。
ky982339さんがrecent_posts_content_block_theme.phpをどのように変更されたのかわからないのでなんとも言えませんが
たぶんsmarty変数にassignされない部分に
<?php if (function_exists(‘get_cat_icon’)) get_cat_icon(); ?>
コードの挿入を行っているのではないでしょうか?
以下簡単な説明です。
recent_posts_content_block_theme.phpなどのthemes/xpress_default/blocks内にあるphpファイルは各ブロックのテーマで使用するsmarty変数にassignされるデータを作成しています。
recent_posts_content_block_theme.phpがassignするsmarty変数の詳細については、「最近の記事内容ブロック」を参照ください。
ここでXPressMEのrecent_posts_content_blockのDBテンプレートはデフォルトで
<div class="xpress_block"><br /> <{$block.err_message}><br /> <div class="xpress_recent_post_content_block"><br /> <ul><br /> <{foreach from=$block.contents item=content}><br /> <{$content.all_in_one}><br /> <{/foreach}><br /> </ul><br /> <br /> </div><br /> </div>
となっており、「all_in_one」smarty変数の表示だけが行われています。
「all_in_one」表示内容は
themes/xpress_default/blocks/recent_posts_content_block_theme.php上では109行目あたりから定義されており
// all_in_one<br /> ob_start();<br /> ?><br /> <div class="xpress-post" id="post-<?php the_ID(); ?>"><br /> <div class ="xpress-post-header"><br /> <?php if (function_exists('hotDates')) { hotDates(); }?><br /> <div class ="xpress-post-title"><br /> <?php if(function_exists('the_title_attribute')) : ?><br /> <h2><a>" rel="bookmark" title="<?php printf(__('Permanent Link to %s', 'xpress'), the_title_attribute('echo=0')); ?>"><?php the_title(); ?></a></h2><br /> <?php else : ?><br /> <h2><a>" rel="bookmark" title="<?php printf(__('Permanent Link to %s', 'xpress'), the_title('','',false)); ?>"><?php the_title(); ?></a></h2><br /> <?php endif; ?><br /> <br /> </div><br /> </div><br /> <div class="xpress-post-entry"><br /> <?php echo $post_content; ?><br /> </div><br /> <div class="xpress-link-pages"><?php wp_link_pages() ?></div><br /> <div class ="xpress-post-footer"><br /> <?php<br /> the_time('Y/m/d l');<br /> echo ' - ';<br /> the_author_posts_link();<br /> echo ' (' . xpress_post_views_count('post_id=' . $post->ID . '&format=' . __('Views :%d', 'xpress'). '&echo=0') . ')';<br /> <br /> echo ' | ';<br /> // echo the_tags(__('Tags:', 'xpress') . ' ', ', ', ' | ');<br /> printf(__('Posted in %s', 'xpress'), get_the_category_list(', '));<br /> echo ' | ';<br /> edit_post_link(__('Edit', 'xpress'), '', ' | ');<br /> comments_popup_link(__('No Comments »', 'xpress'), __('1 Comment »', 'xpress'), __('% Comments »', 'xpress'), '', __('Comments Closed', 'xpress') );<br /> ?><br /> </div><br /> </div><br /> <?php<br /> $all_in_one = ob_get_contents();<br /> ob_end_clean();<br />
上記の
ob_start()
・
・
$all_in_one = ob_get_contents();
ob_end_clean();
の間に
<?php if (function_exists(‘get_cat_icon’)) get_cat_icon(); ?>を導入することで、「all_in_one」smarty変数へカテゴリーアイコンの出力を追加することができます。
またカテゴリーアイコンだけのsmarty変数を作成する場合、
ループのどこかに
if (function_exists('get_cat_icon')){<br /> ob_start();<br /> get_cat_icon();<br /> $cat_icon = ob_get_contents();<br /> ob_end_clean();<br /> }<br />
とかを置いて
$row_data の配列に
‘cat_icon’ => $cat_icon を追加することで テンプレート側から <{$content.cat_icon}>という形で使用することも可能です。
2009 年 10 月 1 日 2:27 AM #2888匿名
ゲストtoemon 様
お手数おかけしまして誠に申しわけありません。
毎度アドバイスをいただきありがとうございます。
xpress側、index.phpとsingle.phpでは表示されるのですが、
xoopsトップではやはり表示されません。
xpressを導入した際、少し弄った箇所があるので、
そこに問題があるのでしょうか。
xoops側の設定では、テンプレートrecent_posts_content_block_theme.htmlを
以下のように変更しております。
<br /> <{* ************************** usage ****************************<br /> <br /> (省略)<br /> <br /> ************************* End of usage ************************ *}><br /> <{* Start Template *}><br /> <div class="xpress_block"><br /> <{$block.err_message}><br /> <div class="xpress_recent_post_content_block"><br /> <div><br /> <{foreach from=$block.contents item=content}><br /> <{$content.post_title}><br /> <{$content.post_date}><br /> <{$content.post_category}><br /> <{$content.post_content}><br /> <hr /><br /> <{/foreach}><br /> </div><br /> </div><br /> </div><br />
デフォルトでは<{$content.all_in_one}>となっていましたが、
表示させたい項目が、タイトル・日付・カテゴリー・コンテンツなので、
このようにしました。
また、xpressME設定では、表示設定→XPressMEの表示モードの選択→xoopsモード
としております。
根本的に、これらの設定が間違っているということは
考えられますでしょうか。
試しにrecent_posts_content_block_theme.phpのコードを全て消しても、
xoopsトップの「最近の記事内容」は表示されます…。
recent_posts_content_block_theme.html(xoopsブロック)は
recent_posts_content_block_theme.phpと結びついていると
思っていたのですが。
phpよくわからず、申し訳ございません。
2009 年 10 月 1 日 4:22 AM #2889toemon
キーマスター根本的に、これらの設定が間違っているということは
考えられますでしょうか。
設定上は、大きな問題はないと思います。
テンプレートで<{$content.all_in_one}>を使わないとのことですので、
前の回答の下の方に書いた
カテゴリーアイコンだけのsmarty変数を作成する場合
の処置の実施内容を再度確認ください。
以下、具体例ですが、
smarty変数「cat_icon」を追加するために 109行目あたりの // all_in_one と記述してある前に
if (function_exists('get_cat_icon')){<br /> ob_start();<br /> get_cat_icon();<br /> $cat_icon = ob_get_contents();<br /> ob_end_clean();<br /> }<br /> <br /> // all_in_one
を追加します。
次に
$row_data の配列に
‘cat_icon’ => $cat_icon を追加
部分ですが
‘cat_icon’ => $cat_icon を追加157行目あたり
$row_data = array(<br /> 'post_id' => $post_id ,<br /> 'post_title' => $post_title ,<br /> 'post_content' => $post_content ,<br /> 'post_date' => $post_date ,<br /> 'post_time' => $post_time ,<br /> 'post_date_time' => $post_date_time ,<br /> 'post_modified_date' => $post_modified_date ,<br /> 'post_modified_time' => $post_modified_time ,<br /> 'post_modified_date_time' => $post_modified_date_time ,<br /> 'post_author' => $author ,<br /> 'post_category' => $category ,<br /> 'post_tags' => $tags,<br /> 'post_views' => $post_viwes,<br /> 'comment_link' => $comments_popup_link ,<br /> 'trackback_url' => $trackback_url ,<br /> 'all_in_one' => $all_in_one<br /> );
に ’cat_icon’ => $cat_icon , を追加します。
$row_data = array(<br /> 'post_id' => $post_id ,<br /> 'post_title' => $post_title ,<br /> 'post_content' => $post_content ,<br /> 'post_date' => $post_date ,<br /> 'post_time' => $post_time ,<br /> 'post_date_time' => $post_date_time ,<br /> 'post_modified_date' => $post_modified_date ,<br /> 'post_modified_time' => $post_modified_time ,<br /> 'post_modified_date_time' => $post_modified_date_time ,<br /> 'post_author' => $author ,<br /> 'post_category' => $category ,<br /> 'post_tags' => $tags,<br /> 'post_views' => $post_viwes,<br /> 'comment_link' => $comments_popup_link ,<br /> 'trackback_url' => $trackback_url ,<br /> 'cat_icon' => $cat_icon ,<br /> 'all_in_one' => $all_in_one<br /> );
これでテンプレートで使用できるsmarty変数cat_iconが使用できるようになります。
次に、DBテンプレートの
<{foreach from=$block.contents item=content}>から<{/foreach}>間の任意の箇所に<{$content.cat_icon}>を追記すればアイコン表示がおこなわれるはずです。
[例]
<{foreach from=$block.contents item=content}><br /> <{$content.cat_icon}><br /> <{$content.post_title}><br /> <{$content.post_date}><br /> <{$content.post_category}><br /> <{$content.post_content}><br /> <br /> <{/foreach}><br />
試しにrecent_posts_content_block_theme.phpのコードを全て消しても、
xoopsトップの「最近の記事内容」は表示されます…。
recent_posts_content_block_theme.html(xoopsブロック)は
recent_posts_content_block_theme.phpと結びついていると
思っていたのですが。
きちんと結びついています。
「ブロックのキャッシュ」のブロックオプションを変更した場合の注意事項にもあるように、キャッシュの更新はXPressMEのトップページにアクセスしたときにおこなわれるのですが、recent_posts_content_block_theme.phpのコードを全て消してしまった場合、出力が全く行われないため、以前のキャッシュを使って表示されるみたいですが(バグ?)普通に編集追加した場合は反映されます。
2009 年 10 月 2 日 5:50 AM #2890匿名
ゲストtoemon様
ご教授ありがとうございます。
昨日1日、サイトトラブルが発生し、
ご報告することができませんでした。
申しわけございません。
recent_posts_content_block_theme.phpの編集ですが、
下記のコードをそれぞれ挿入しました。
if (function_exists(‘get_cat_icon’)){
ob_start();
get_cat_icon();
$cat_icon = ob_get_contents();
ob_end_clean();
}
‘cat_icon’ = > $cat_icon ,
recent_posts_content_block_theme.htmlに
< {$content.cat_icon} >を挿入しました。
それでも、最近の記事内容にはアイコンが現れません。
そして、記事を編集して投稿しようとしたら、
画面が真っ白に…。
原因がわからず、xoopsとxpressMEを再インストールしたりと
試行錯誤し…ようやく原因がわかったのですが、
recent_posts_content_block_theme.phpを上記のように
編集すると、投稿(編集)ボタンを押すと画面が真っ白に
なってしまうようです。(編集は反映されません)
recent_posts_content_block_theme.phpをデフォルトに戻すと
元に戻りました。
イメージとしましては、こんな感じにしたいのですが。↓
2009 年 10 月 2 日 1:26 PM #2891toemon
キーマスターrecent_posts_content_block_theme.phpを上記のように
編集すると、投稿(編集)ボタンを押すと画面が真っ白に
なってしまうようです。(編集は反映されません)
画面が真っ白になる場合は、
php.ini のdisplay_errorsを有効にしたり やXOOPSのデバッグモードをPHPデバッグにしたりして、エラーやワーニングが表示されていないか確認してみてください。
エラーが表示されていれば、手がかりになります。
一応テストサイトの方(http://xpressme.biz/hd_cube/)で簡単なテストを行ってみました。 管理者アカウントや、FTP,PhpMyAdminのアカウント、パスワードは以前メールで送付したものと同じです。(一応再度メールしときます)
wordpress側のテーマはXPressME Categorie Icon Themes (XpressME defaultをコピーして必要な部分を変更したもの)有効にしてあります。
XOOPSのデフォルトのテンプレートはcat-iconの場合は<{$content.cat_icon}>を使用したテンプレート
defaultの場合は<{$content.all_in_one}>を使用したテンプレートとなっています。
2009 年 10 月 3 日 12:31 PM #2892匿名
ゲストtoemon様
たびたびテストサイトを拝見させていただきありがとうございます。
恐れ入りますが、recent_posts_content_block_theme.php内のコードを
コピペさせていただきました。
すると・・・
再現できました!!
うわ~。いったいどこが違ったんでしょう・・・。
単純なコピペさえも間違っていたと思うと、
お恥ずかしい限りです。
感謝いたします。
今後もxpressMEでのサイト構築に励みます。
どうもありがとうございました!
-
投稿者投稿
- このトピックに返信するにはログインが必要です。