スタッフブログ

  • カテゴリ XOOPS の最新配信
  • RSS

問合せフォームに営業日のお知らせを自動的に表示させる

Ryuji : XOOPS 2012/12/18 9:36

Blogger's Avatar

めんどくさがり屋の龍司です。

めんどくさがり屋なので、楽をするために苦労してみることがあります。

今回は
「年末年始の営業日について『お知らせ』にも『お問い合わせ』にも書くのはめんどくさい」
と思ったのでそれを解決したときの方法をご紹介します。

このサイトでは、「お知らせ」にbulletinを使っています。
お知らせに書いた正月休みについての記事を問合せフォームでも表示できれば、営業日については一度書くだけで済みます。

営業日のお知らせだけを切りだそう


このサイトでは、bulletinをnewsという名前に変更して使ってます。

営業日のお知らせだけでなく、イベント情報なんかも掲載してます。

問合せフォームに表示したいのは営業日についてのお知らせだけなので、取り扱いしやすいように、bulletinに「営業日のお知らせ」というカテゴリを作成します。


作成後に、カテゴリの編集で「営業日のお知らせ」の編集フォームを表示します。
アドレスバーをみるとtopic_id=5となっていてカテゴリIDが5だとわかります。

プログラミング


XOOPS CubeはテンプレートにSmartyを使っているのでテンプレートファイル上にphpコードをかくことができます。

テンプレートにphpコードを書くというのは、通常の開発ではタブーなんですが、既存モジュールをちょっとハックしたいときには便利なやり方です。

今回は問合せフォームのテンレプートに書いていきます。

最初のバージョン
<{php}>
global $xoopsDB;
$sql = sprintf("SELECT * FROM %s WHERE topicid=5  ORDER BY published DESC", 
$xoopsDB->prefix('news_stories'));
$result = $xoopsDB->query($sql, 1);
$news = $xoopsDB->fetchArray($result);
$this->assign('news', $news);
<{/php}>

<div style="border:1px solid #999;padding:10px">
    <div style="font-weight:bold"><{$news.title}></div>
    <{$news.hometext|escape|nl2br}>
    <{$news.bodytext|escape|nl2br}>
</div>

いつまでも表示されちゃうのはイヤだよね


最初のバージョンをつくってみて「ん?」とおもったのは、このままだと正月休みが終わっても、ずーっと問合せフォームに正月休みのお知らせが表示されたままになっちゃうことです。

やっぱり正月休みが終わったら非表示にしたい。
というわけでSQL文をちょっと調整して、bulletinで記事作成時に指定する「掲載日時」「掲載期限」に対応するようにしました。
<{php}>
global $xoopsDB;
$sql = sprintf("SELECT * FROM %s WHERE topicid=5 AND published < UNIX_TIMESTAMP(NOW()) AND expired > UNIX_TIMESTAMP(NOW()) ORDER BY published DESC", $xoopsDB->prefix('news_stories'));
$result = $xoopsDB->query($sql, 1);
$news = $xoopsDB->fetchArray($result);
$this->assign('news', $news);
<{/php}>

<div style="border:1px solid #999;padding:10px">
    <div style="font-weight:bold"><{$news.title}></div>
    <{$news.hometext|escape|nl2br}>
    <{$news.bodytext|escape|nl2br}>
</div>

これで放っておいても正月休みが終わって掲載期限が来れば問合せフォームからもお知らせが消えてくれます。楽ですねぇ〜

こんな風にちょっとの努力で楽できることが大好きなのでまたこんなネタ思いついたらお知らせしますね。

トラックバック

スタッフブログ最新
カテゴリ一覧

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.