Posts tagged event
Smarty で正規表現を if 文で使用する
2Smarty には正規表現を使用して文字列を置換する regex_replace があります。
これを上手に使用して if 文で正規表現を用いて条件分岐させます。
if (preg_match('/php/i', 'PHP is the web scripting language of choice.')) {
echo 'A match was found.';
} else {
echo 'A match was not found.';
}
PHP で上記のような処理を Smarty で書くと下記のようになります。
{assign var='string' value='PHP is the web scripting language of choice.'}
{if $string|regex_replace:'/.*php.*/i':'php' eq 'php'}
A match was found.
{else}
A match was not found.
{/if}
ポイントは regex_replace を用いて、正規表現のパターンに該当する場合は元の文字列を何かしらの文字列(上の例でいうと’php’)に置換してしまい、それを eq で置換されているか判定するということです。
これを実際に使用したのは OpenPNE のテンプレートです。
OpenPNE を使用していて、特定のカテゴリのときのみ読み込む CSS を変えたいときがありました。
OpnePNE のイベント関連の URL は http://expamle.com/?m=pc&a=page_c_event_*** という感じになります。
全部で14種類ありますので、これを普通に if 文で書いていると大変なことになりますし、追加などがあったときのことを考えるとよくありません。
そこで Smarty の if 文に正規表現を使用して下記のようにすることにより1つの条件で page_c_event_*** の URL を条件分岐させました。
Smarty テンプレート
{if $smarty.get.a|regex_replace:"/page_c_event.*_/":"event" eq "event"}
{** イベントです**}
{else}
{** イベント以外です **}
{/if}
GoogleMap 特定のキーワードで表示させる
4Google AJAX Search API を使用してキーワードや住所から自分のサイトに Google Map を表示させるメモ
Google AJAX Search API KEY と Google Map API KEY を指定して JavaScript を読み込む
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=Google AJAX Search API KEY" type="text/javascript"></script> <script src="http://maps.google.com/maps?file=api&v=2.x&key=Google Map API KEY" type="text/javascript"></script>
実際の表示部分。 q=キーワードで表示させる地図のキーワード(または住所)を指定する。
<script type="text/javascript">
<!--
var gls;
var gMap;
function OnLocalSearch() {
if (!gls.results) return;
var first = gls.results[0];
var point = new GLatLng(parseFloat(first.lat), parseFloat(first.lng));
var zoom = 15;
gMap.addControl(new GSmallMapControl());
gMap.addControl(new GMapTypeControl());
gMap.setMapType(G_MAP_TYPE);
gMap.setCenter(point, zoom);
var marker = new GMarker(point);
gMap.addOverlay(marker);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(html);
});
}
function load() {
gMap = new GMap2(document.getElementById("map"));
gMap.addControl(new GSmallMapControl());
gMap.addControl(new GMapTypeControl());
gMap.setCenter(new GLatLng(0, 0));
gls = new GlocalSearch();
gls.setCenterPoint(gMap);
gls.setSearchCompleteCallback(null, OnLocalSearch);
var q = "横浜ランドマークタワー";
gls.execute(q);
}
//-->
</script>
<body onLoad="load()">
<div id="map" style="width: 410px; height: 320px"></div>
</body>
各 API KEY の取得は下記ページから
Sign-up for an AJAX Search API Key – Google AJAX Search API – Google Code
Sign Up for the Google Maps API – Google Maps API – Google Code