【jQuery】更新からn日以内ならグローバルナビにNEWマークをつける|Blog|株式会社トライム

Keyword

Contact

についての不明点や案件のご相談などございましたらお気軽にお問い合わせください。

Share

X Facebook pocket LINE はてなブックマーク

【jQuery】更新からn日以内ならグローバルナビにNEWマークをつける

2017.01.23

更新日から一定の時間「NEWマーク」を表示することがよくあります。
CMSで管理されたブログの記事等でしたら簡単なのですが、
静的に構築されたサイトのグローバルナビにつけるとなると少し面倒です。

グローバルナビをインクルードするなどして、一括管理していれば良いのですが、
そうでない場合には、全HTMLを開いて「NEWマーク」のためのクラスをふっていかなければならず、あまり現実的ではありません。

沢山のファイルを編集せず、実現するためにJSとJSONファイルを使って実装してみました。

サンプル

HTML

それぞれにクラスをふっておきます。

<nav id="gnav">
  <ul>
    <li class="news"><a href="#">NEWS</a></li>
    <li class="blog"><a href="#">BLOG</a></li>
    <li class="about"><a href="#">ABOUT</a></li>
  </ul>
</nav>

JSON

コンテンツの更新日をJSONで管理します。
HTMLで付けたクラスと更新日を入力しています。

[
  {
    "class" : "news",
    "date" : "2017-01-14"
  },
  {
    "class" : "blog",
    "date" : "2017-01-19"
  },
  {
    "class" : "about",
    "date" : "2017-01-21"
  }
]

JS

$(function(){

  var today = new Date( $.now() ); // 今日の日付を取得

  //JSONファイルを取得
  $.getJSON( 'update.json' )
    .done(function(json, status, request) {
      $(json).each(function(i, data) {

        var elem = '.' + data.class, // class
            date = new Date( data.date ), // date
            ago  = date.setDate(date.getDate() + 7); // 更新日 + 7日

        if ( today < ago ) { // 今日(today)がago(更新日 + 7日)より前なら
          $('#gnav').find(elem).addClass('new'); // クラス「new」を付ける
        }

      });
    });
});

まとめ

このようにすることで、大量のファイルを更新のたびに修正すること無く、
JSONファイルだけ更新すれば「NEWマーク」を付けることが出来るようになりました。

SSIでインクルードしてる場合や、jade(pug)などを使って構築している場合は、グローバルナビを直接修正できるので不要ですが、そうでない場合は大量のファイル修正が発生してしまい、コンテンツ自体の更新作業がよりも大変になってしまいます。

こんな方法もどこかでお役に立てれば幸いです。

Share

X Facebook pocket LINE はてなブックマーク
Webサイト制作についてお悩みでしたら私たちにご相談ください。

私たちはECサイトなどのBtoCのサイトの制作に特化したWeb制作会社です。マーケティング視点をもったクリエイティブにより、運用まで見据えた効果の高いWebサイトを構築いたします。Webサイトについてお悩みのWeb担当者の方は、トライムまでお気軽にご相談ください。

Keyword

Contact

についての不明点や案件のご相談などございましたらお気軽にお問い合わせください。

Contact

お問い合わせ

トライムは常にお客様へ寄りっ沿った提案をさせていただきます。
自社のEC売上の拡大や人材不足などのお客様のデジタル上の課題を、
様々なアプローチにより解決するお手伝いをいたします!
お気軽にお問い合わせください。

TEL

03-6403-3259

受付:10:00 - 19:00