【Cocoon】投稿から一定期間だけ表示する新着ナビを作成しました

新着ナビはじめましたブログ

ありがたいことにPV0と格闘していた当ブログも検索流入で見に来てくれる方が増えてきました。しかし、悩みは尽きないもので、PV0が解決した次に気になったのは直帰率が高い点です。

記事に検索から入ってきて、記事一覧ページに行かずにあばよと去っていく人のなんと多いことでしょう。そんな現状を少しでも緩和すべく、新しく投稿した記事のプロモーション活動をすることにしました。

具体的には「投稿をした日から3日間、記事中に新着記事のリンクが表示される」という期間限定ナビゲーションを追加しました。

Cocoonで用意されている新着記事一覧のショートコードを利用して、開発の手間を軽減しています。(したつもりです)

アウトプット

新着ナビのサンプル
新着ナビのサンプル

指定した期間(私の場合は3日間)、上記のナビが表示されます。
基本的にCocoonの新着記事を踏襲していますが、左上のNEWリボンはCSSを利用して追加でデザインしています。

ショートコードでの指定

基本的なデザインはCocoonで用意されている新着記事に乗っかっています。下記の記事を参考にお好みの表示形式のショートコードを考えます。

私の場合は、
[new_list count=1 bold=1 arrow=1 class="new-navi" cats=4,5 children=1]
のようなショートコードを作成しました。

  • 1記事のみの表示を想定しているのでcount=1を指定してください
  • 以後のJavaScriptやCSSでの指定に利用するためclassを付与してください

作成したコード

作成したのはJavaScriptとCSSです。上記のショートコードで生成される新着記事リストに対して加工を加えます。

JavaScript

JavaScriptによって、以下の2つの要素を追加しています。

  • 投稿日時から特定の期間が経ったらナビを非表示にする
  • NEWを表示するためのHTMLタグを追加する

親テーマのjavascript.jsとは独立した動作をするので、子テーマのjavascript.jsに追記をしています。

//ここに追加したいJavaScript、jQueryを記入してください。
//このJavaScriptファイルは、親テーマのJavaScriptファイルのあとに呼び出されます。
//JavaScriptやjQueryで親テーマのjavascript.jsに加えて関数を記入したい時に使用します。

$(function(){
  //NEWリボン用にタグを追加
  $('div.new-navi').append('<span class="ribbon">NEW</span>');

  //表示する期間をミリ秒で指定①
  //下記は3日
  var judge = 3 * (24 * 60 * 60 * 1000);

  //新着記事に含まれる投稿日を取得②
  var post_date = $("div.new-navi .new-entry-card-post-date").html();

  //post_dateをparseでDateに変換
  post_date = post_date.replace(/\./g, '/');
  post_date = new Date(Date.parse(post_date));

  //現在日時との差日を求める
  var today = new Date();
  var diff = today - post_date

  //新着記事のURLを取得
  var post_url = $("div.new-navi .new-entry-card-link").attr('href');

  //表示中の記事のパス
  var pathname = location.pathname;

  //以下の場合、ナビを非表示にする
  //・投稿から指定期間以上経過している場合
  //・表示中の記事が該当の新着記事の場合
  if (diff > judge || post_url.indexOf(pathname) != -1) {
    $("div.new-navi").hide();
  }
});

以下、補足です。

  1. ナビが表示される期間をミリ秒に換算して指定します
  2. 元々の機能で埋め込まれる投稿日をDOMを指定して取得します

ハイライト部には、ショートコードで指定したclassを入れます

CSS

左上のNEWリボンはコピペで簡単に作れるみたいなのを参考に作っていたのですが、まったく簡単には作れず自分で試行錯誤の末に出来上がりました。

下記コードをコピペしてもうまく行くかは保証できませんが、参考までに記載します。

/* 新着ナビ */
.new-navi {
  position: relative;
  overflow: hidden;

  display: block;
  margin: 15px auto;

  background: #f1f1f1;
  box-shadow: 0 3px 5px rgba(0, 0, 0, 0.14);
  box-sizing: border-box;
}

.new-navi .new-entry-card-title{
  padding: 5px;
}

.ribbon {
  background: #ec3138;
  color: #fff;
  font-size: 15px;
  font-weight: bold;
  width: 400px;
  height: 25px; /* リボンの幅 */

  transform: rotate(-45deg);
  transform-origin: top center;

  position: absolute;
  top: 30px;
  left: -210px;
  padding: 0px 0px 0px 55px; /* NEWの横位置 */

  box-sizing: border-box;
  text-align: center;
}

ナビゲーションの設置

最後の仕上げとしてナビゲーションの設置です。設置したい場所に用意したショートコードを書きます。

複数ページにまとめて設置できるため、テキストウィジェットを利用しての設置がおすすめです。

テキストウィジェット
テキストウィジェット

あとがき

Cocoonで用意されている新着記事を利用したため、PHPで吐き出されたコードをJavaScriptで加工するという変な感じになっています。普通にPHPで一から作ったほうが楽だったような気がしなくもないですが、色々勉強になりました。

CSSはどこを変更したら求める部分に変更が入るのかが分からず苦労しました。もっと経験が必要です。。

最後までお読みいただきありがとうございます!
オラに元気を分けてくれ!

にほんブログ村 株ブログ サラリーマン投資家へ


ブログ
\この記事をシェアする/
\クノウをフォローする/
無能投資家の苦悩

コメント

タイトルとURLをコピーしました