【freo】【freoTips】【プラグイン系TIPS】関連エントリー表示プラグインでエントリーの画像を表示する方法
- 2014/09/15 17:21
- 関連エントリー表示プラグイン
- 51
関連エントリー表示プラグインは、freo公式から配布されている、「あるエントリーの関連エントリーをカテゴリーまたはタグ、あるいはその両方から特定し表示する」プラグインです。
関連エントリー表示プラグインで、関連エントリーの画像(エントリーファイル、エントリーファイルのサムネイル、エントリーイメージ)を表示する方法は以下のとおりです。
- [freo/libs/freo/plugins/display.entry_relate.php]の77行目と78行目の間に下記のように加筆する。
$entry_files = array(); $entry_thumbnails = array(); $entry_images = array();
- [freo/libs/freo/plugins/display.entry_relate.php]の138行目と139行目の間に下記のように加筆する。
//エントリーファイル取得 $entry_files = array(); foreach ($entry_keys as $entry) { if (!$entries[$entry]['file']) { continue; } list($width, $height, $size) = freo_file(FREO_FILE_DIR . 'entry_files/' . $entry . '/' . $entries[$entry]['file']); $entry_files[$entry] = array( 'width' => $width, 'height' => $height, 'size' => $size ); } //エントリーサムネイル取得 $entry_thumbnails = array(); foreach ($entry_keys as $entry) { if (!$entries[$entry]['file']) { continue; } if (!file_exists(FREO_FILE_DIR . 'entry_thumbnails/' . $entry . '/' . $entries[$entry]['file'])) { continue; } list($width, $height, $size) = freo_file(FREO_FILE_DIR . 'entry_thumbnails/' . $entry . '/' . $entries[$entry]['file']); $entry_thumbnails[$entry] = array( 'width' => $width, 'height' => $height, 'size' => $size ); } //エントリーイメージ取得 $entry_images = array(); foreach ($entry_keys as $entry) { if (!$entries[$entry]['image']) { continue; } list($width, $height, $size) = freo_file(FREO_FILE_DIR . 'entry_images/' . $entry . '/' . $entries[$entry]['image']); $entry_images[$entry] = array( 'width' => $width, 'height' => $height, 'size' => $size ); }
- [freo/libs/freo/plugins/display.entry_relate.php]の144行目と145行目の間に下記のように加筆する。
'plugin_entry_relate_files' => $entry_files, 'plugin_entry_relate_thumbnails' => $entry_thumbnails, 'plugin_entry_relate_images' => $entry_images,
- [freo/templates/internals/view/default.html]の関連エントリーを表示したい部分のソースを
<div id="entry_relate"> <h3>関連エントリー</h3> <!--{foreach from=$plugin_entry_relates|smarty:nodefaults item='plugin_entry_relate'}--> <div class="entry_relate"> <h4><a href="{$freo.core.http_file}/view/{if $plugin_entry_relate.code}{$plugin_entry_relate.code}{else}{$plugin_entry_relate.id}{/if}">{$plugin_entry_relate.title}</a></h4> <!--{if $plugin_entry_relate.file and $plugin_entry_relate.image}--> <p><a href="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$plugin_entry_relate.id}/{$plugin_entry_relate.file}"><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_images/{$plugin_entry_relate.id}/{$plugin_entry_relate.image}" alt="{$plugin_entry_relate.memo|default:$plugin_entry_relate.file}" title="{$plugin_entry_relate.memo|default:$plugin_entry_relate.file}" width="{$plugin_entry_relate_images[$plugin_entry_relate.id].width}" height="{$plugin_entry_relate_images[$entry.id].height}" /></a></p> <!--{elseif $plugin_entry_relate_thumbnails[$plugin_entry_relate.id]}--> <p><a href="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$plugin_entry_relate.id}/{$plugin_entry_relate.file}"><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_thumbnails/{$plugin_entry_relate.id}/{$plugin_entry_relate.file}" alt="{$plugin_entry_relate.memo|default:$plugin_entry_relate.file}" title="{$plugin_entry_relate.memo|default:$plugin_entry_relate.file}" width="{$plugin_entry_relate_thumbnails[$plugin_entry_relate.id].width}" height="{$plugin_entry_relate_thumbnails[$plugin_entry_relate.id].height}" /></a></p> <!--{elseif $plugin_entry_relate.file and $plugin_entry_relate_files[$plugin_entry_relate.id].width and $plugin_entry_relate_files[$plugin_entry_relate.id].height}--> <p><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$plugin_entry_relate.id}/{$plugin_entry_relate.file}" alt="{$plugin_entry_relate.memo|default:$plugin_entry_relate.file}" title="{$plugin_entry_relate.memo|default:$plugin_entry_relate.file}" width="{$plugin_entry_relate_files[$plugin_entry_relate.id].width}" height="{$plugin_entry_relate_files[$plugin_entry_relate.id].height}" /></p> <!--{elseif $plugin_entry_relate.file}--> <p><a href="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$plugin_entry_relate.id}/{$plugin_entry_relate.file}">{$plugin_entry_relate.memo|default:$plugin_entry_relate.file}</a></p> <!--{/if}--> </div> <!--{foreachelse}--> <ul><li>関連エントリーはありません。</li></ul> <!--{/foreach}--> </div>
(4)のソースの詳細は以下のとおりです。
<div id="entry_relate"> <h3>関連エントリー</h3> <!--{関連エントリー配列を'plugin_entry_relate'として繰り返して表示するここから}--> <div class="entry_relate"> <h4><a href="関連エントリーのURL">{関連エントリーのタイトル}</a></h4> <!--{もし関連エントリーにファイルが登録されててかつ関連エントリーにイメージが登録されてればここから}--> <p><a href="関連エントリーファイルのURL"><img src="関連エントリーイメージ" alt="関連エントリーのファイルの説明|関連エントリーのファイルの説明がなければ関連エントリーファイル名" title="関連エントリーのファイルの説明|関連エントリーのファイルの説明がなければ関連エントリーファイル名" width="関連エントリーイメージの横幅" height="関連エントリーイメージの高さ" /></a></p> <!--{関連エントリーファイルのサムネイルがあれば}--> <p><a href="関連エントリーファイルのURL"><img src="関連エントリーファイルのサムネイルのURL" alt="関連エントリーのファイルの説明|関連エントリーのファイルの説明がなければ関連エントリーファイル名" title="関連エントリーのファイルの説明|関連エントリーのファイルの説明がなければ関連エントリーファイル名" width="関連エントリーファイルのサムネイルの横幅" height="関連エントリーファイルのサムネイルの高さ" /></a></p> <!--{関連エントリーファイルがあってかつ関連エントリーファイルの横幅があってかつ関連エントリーファイルの高さがあれば}--> <p><img src="関連エントリーファイルのURL" alt="関連エントリーのファイルの説明|関連エントリーのファイルの説明がなければ関連エントリーファイル名" title="関連エントリーのファイルの説明|関連エントリーのファイルの説明がなければ関連エントリーファイル名" width="関連エントリーファイルの横幅" height="関連エントリーファイルの高さ" /></p> <!--{関連エントリーファイルがアレば}--> <p><a href="関連エントリーファイルのURL">関連エントリーのファイルの説明|関連エントリーのファイルの説明がなければ関連エントリーファイル名</a></p> <!--{もし関連エントリーにファイルが登録されててかつ関連エントリーにイメージが登録されてればここまで}--> </div> <!--{関連エントリー配列に情報がなければ}--> <ul><li>関連エントリーはありません。</li></ul> <!--{関連エントリー配列を'plugin_entry_relate'として繰り返して表示するここまで}--> </div>