[番外編] Smartyだけで広告をランダム表示
広告のランダム表示を実現したい!!
どういうわけか最近軌道に乗り始めていたG○○Gleの広告配信が停止されてしまいました。アプリケーション的に規約にかかりそうな大人のスクリーンショットなどあったからでしょうか。
そこでこの機会に○8.netなどの広告を試してみようと思ったのですが、複数のアフィリエイトをまたいでランダムに表示してくれる機能はあるわけもなく。自前で実装する運びとなりました。
仕組みをいろいろ考えたのですが、このサイト実はフレームワークを使っていないんですよ。プログラム側で吸収するとなると、あちこちに影響を出しやがって検証するのがめんどくさいんですよね。
で、プログラムは改変せずにテンプレートエンジンだけでなんとかするように、との微妙なオーダーとなりまして、折角仕上がったので公開したいと思います。こんな微妙なニーズが他にあるといいんだけど。。
Smartyでテンプレートをランダムインクルード
他に特に面白いくだりがあるわけでもないので、早速ソース公開!!
- {assign var="adTplPath" value="/path/to/banners/*"}
- {assign var="adTpls" value=$adTplPath|glob}
- {assign var="cntTpl" value=$adTpls|@count-1}
- {assign var="randNum" value=0|rand:$cntTpl}
- {assign var="adFilename" value=$adTpls[$randNum]}
- {if $adFilename}{include file="$adFilename"}{/if}
上記の赤字部分をバナーテンプレートを入れたディレクトリの絶対パスに置き換えて利用してください。
仕組み的には、以下のようになっています。
- 広告テンプレートの入った場所を定義
- glob関数で全テンプレートが入った配列を準備
- 広告配列の最大キーを取得
- ランダムにどの広告を表示するか決定
- テンプレートをincludeする
あとは上記のソースを"ad160x600.tpl"のような名前で保存して、広告を出したいテンプレートの個所にincludeしてあげるだけです。もちろん、/path/to/banners/以下に広告テンプレートの配置をお忘れなく。するとこんな感じになるはずです。
今更ですが注意事項として。Smarty 3.Xをターゲットとして作られていますので、PHP4系な方などは適宜修正してご使用ください。。
終わりに
今回の番外編はいかがでしたでしょうか。こんな微妙なことで悩んでいる人がいたらぜひ教えてあげてください。
何かのお役に立ったようなら↓にコメントなど入れて頂くと今後の励みになります。
「iPhone & iPad アプリランキング」は、最新かつ詳細なアプリ情報をご紹介しているサイトです。
お探しのアプリに出会えるように様々な切り口でページをご用意しております。
「メニュー」よりぜひアプリ探しにお役立て下さい。
Presents by $$308413110 スマホからのアクセスにはQRコードをご活用ください。 →