※ただしsmarty3限定
freoで新着メディアを表示したい場合、たぶん大抵の人は手動でリンク貼ってやるか、freoの公式で配布されているメディア一括表示プラグインで表示領域を限定して固定数のみ表示するような感じで実装しているかと思いますが、後者の場合だとすこし無駄なリソースができてしまうのが困るって感じですよね。
てかうちのブログもトップページに載ってる新着は以前そうでした。すべてのメディアを読み込ませてたので非表示部分のリソースが無駄無駄。
てことでsmarty3限定となってしまいますが、対処法を載せておきます。
というかsmarty3にできる人なら自分ですぐ思いつきそうなのは間違っても思ってはいけない(´・ω・`)
メディア一括表示プラグインのmedia_all.htmlが編集対象です。
<!--{foreach from=$media_alls|smarty:nodefaults item='media_all'}-->
<!--{if $media_all.path == $path}-->
<!--{php}if (!$flag) :{/php}--><ul><!--{php}endif;{/php}-->
<li>
<!--{if $media_all.type == 'directory'}-->
<span title="{$media_all.id}" class="directory">{$media_all_names[$media_all.id]|default:$media_all.name}</span>
<!--{if $media_all.restriction}-->
<p class="attention">このディレクトリには、閲覧制限が設定されています。</p>
<!--{/if}-->
<!--{elseif $media_all.width and $media_all.height}-->
<a href="{if $media_all.restriction}{$freo.core.http_file}/file/media/{$media_all.directory}{$media_all.name}{else}{$freo.core.http_url}{$media_all.id}{/if}"{if $media_all.memo} title="{$media_all.memo}"{/if}><img src="{if $media_all.restriction}{$freo.core.http_file}/file/media/{$media_all.directory}{$media_all.name}{if $media_all.thumbnail.id}?type=thumbnail{/if}{else}{$freo.core.http_url}{if $media_all.thumbnail.id}{$media_all.thumbnail.id}{else}{$media_all.id}{/if}{/if}" alt="{$media_all.name}({$media_all.width}px × {$media_all.height}px)" title="{$media_all.name}({$media_all.width}px × {$media_all.height}px)" /></a>
<!--{else}-->
<a href="{if $media_all.restriction}{$freo.core.http_file}/file/media/{$media_all.directory}{$media_all.name}{else}{$freo.core.http_url}{$media_all.id}{/if}"{if $media_all.memo} title="{$media_all.memo}"{/if}>{$media_all.name}</a>
<!--{/if}-->
<!--{assign var="path" value=$media_all.id}-->
{include file='plugins/media_all/media_all.html'}
<!--{assign var="path" value=$media_all.path}-->
</li>
<!--{php}$flag = 1;{/php}-->
<!--{/if}-->
<!--{/foreach}-->
<!--{php}if ($flag) :{/php}--></ul><!--{php}endif;{/php}-->
デフォルトだとなっていると思います。
これにいくつか記述を追加するだけです。
<!--{foreach from=$media_alls|smarty:nodefaults item='media_all'}-->
{if $count < 8} <!--8回に達してない場合-->
<!--{if $media_all.path == $path}-->
<!--{php}if (!$flag) :{/php}--><ul><!--{php}endif;{/php}-->
<li>
<!--{if $media_all.type == 'directory'}-->
<span title="{$media_all.id}" class="directory">{$media_all_names[$media_all.id]|default:$media_all.name}</span>
<!--{if $media_all.restriction}-->
<p class="attention">このディレクトリには、閲覧制限が設定されています。</p>
<!--{/if}-->
<!--{elseif $media_all.width and $media_all.height}-->
<a href="{if $media_all.restriction}{$freo.core.http_file}/file/media/{$media_all.directory}{$media_all.name}{else}{$freo.core.http_url}{$media_all.id}{/if}"{if $media_all.memo} title="{$media_all.memo}"{/if}><img src="{if $media_all.restriction}{$freo.core.http_file}/file/media/{$media_all.directory}{$media_all.name}{if $media_all.thumbnail.id}?type=thumbnail{/if}{else}{$freo.core.http_url}{if $media_all.thumbnail.id}{$media_all.thumbnail.id}{else}{$media_all.id}{/if}{/if}" alt="{$media_all.name}({$media_all.width}px × {$media_all.height}px)" title="{$media_all.name}({$media_all.width}px × {$media_all.height}px)" /></a>
{$count = $count + 1} <!--n回目-->
<!--{else}-->
<a href="{if $media_all.restriction}{$freo.core.http_file}/file/media/{$media_all.directory}{$media_all.name}{else}{$freo.core.http_url}{$media_all.id}{/if}"{if $media_all.memo} title="{$media_all.memo}"{/if}>{$media_all.name}</a>
{$count = $count + 1} <!--n回目-->
<!--{/if}-->
<!--{assign var="path" value=$media_all.id}-->
{include file='plugins/media_all/media_all.html' count=$count scope=parent} <!--count=$count scope=parentを追加して変数をincludeしても適用させておく-->
<!--{assign var="path" value=$media_all.path}-->
</li>
<!--{php}$flag = 1;{/php}-->
<!--{/if}-->
{/if} <!--条件終了-->
<!--{/foreach}-->
<!--{php}if ($flag) :{/php}--></ul><!--{php}endif;{/php}-->
で、例だと8回表示させるようになります。
smrty3限定なのはincludeの変数スコープを変更できるのが3からだからです。2は内部で変更された変数を戻すことはできないのでこの方法は使用できません(´・ω・`)
関連エントリー
コメント
- コメントはまだありません。