IMUZA.com

Xserver<<WordPress(ConoHa)<<はてなブログ

ホーム / laravel4 / プログラマーじゃないけどLaravel4入門(10)blogをつくる

プログラマーじゃないけどLaravel4入門(10)blogをつくる

2014/09/25 laravel4, php

取り残してきたものがいくつかあります。まず、簡単なものから、

「Read more / 続きを読む」を実装する

考え方としては、記事作成時に <!– e.g. readmore –> を入れておき、ビューで <a href=”article/($id)”>Read more</a> に置き換えるのが一番簡単そうです。

まず、作成時からですが、CKEditor の登録プラグインにそれらしきものはなく、こちらにありました。

zionsg/CKEditor-More-plugin · GitHub

ダウンロード後解凍し、public/ckeditor/plugins に入れます。あとは、config.js に

config.extraPlugins = ‘wpmore’;

を追加すれば、”Insert More Break” というアイコンが現れ、文章の適当なところでクリックすれば、more とラインが入り、ソースには <!–more–> が入ります。

ビューの方は、app/views/index.blade.php の {{ $article->content }} を

{{ preg_replace(‘/<!–more–>.*$/s’, ‘<a href=”‘. URL::to(‘article’, array(‘id’=>$article->id)) . ‘”>read more…</a></p>’, $article->content) }}

と read more… に置き換えます。で、こうなりました。

  

「previous / next」を修正する

前回の「Laravel4入門(9)blogをつくる」では、

// get previous article
$previous = Article::where(‘published_at’, ‘=’, Article::where(‘published_at’, ‘<‘, $article->published_at)->max(‘published_at’))->first();

// get next article
$next = Article::where(‘published_at’, ‘=’, Article::where(‘published_at’, ‘>’, $article->published_at)->min(‘published_at’))->first();

こんなコードを書いていたのですが、これでは全然ダメでした。

  • 「非公開」の記事も表示されてしまう
  •  最新、あるいは最古の記事の場合、published_at が 0000-00-00 00:00:00 の下書きデータとマッチしてしまう

これらの解決とカテゴリ内記事トップからタイトルをクリックして各記事を表示した場合の previous、next が全ての記事の previous、next になってしまうことも何とかしなくてはなりません。

で、前者の二つはこうなりました。

// get previous article
$result = Article::where(‘is_published’, TRUE)->where(‘published_at’, ‘<‘, $article->published_at);
$previous = ($result->max(‘published_at’)) ? Article::where(‘published_at’, $result->max(‘published_at’))->first() : NULL;

// get next article
$result = Article::where(‘is_published’, TRUE)->where(‘published_at’, ‘>’, $article->published_at);
$next = ($result->min(‘published_at’)) ? Article::where(‘published_at’, $result->min(‘published_at’))->first() : NULL;

他にもいい方法があるようにも思いますが、とりあえずこれで解決です。

後者については、カテゴリ内記事トップとそこからの各記事表示に別の view を使うことにしました。アクション名とURIも一部変更しました。

考え方は、各記事のカテゴリ表示のリンクを

<p class=”blog-post-meta”><a href=”{{ URL::to(‘category-index’, array(‘id’=>$article->category->id)) }}” class=”btn btn-default btn-xs” role=”button”>{{ $article->category->category }}</a></p>

として、BlogController.php の getCategoryIndex を呼ぶように変更し、ビューの category-index.blade.php の各記事リンクを

<h2 class=”blog-post-title”><a href=”{{ URL::to(‘article-in-category’, array(‘id’=>$article->id . ‘-‘ . $article->category->id)) }}”>{{ $article->title }}</a></h2>

として、記事id とカテゴリid を “-” でつないだパラメータを getArticleInCategory に渡します。こうすれば、同一カテゴリ内の previous、next が取り出せます。

コードは、


ausnichts/laravel4-blog · GitHubにあります。

ブロックに module を表示する

これ、やってみますと、結構変更点も多くなりましたので別記事にすることにしました。 

プログラマーじゃないけどLaravel4入門(9)blogをつくる
プログラマーじゃないけどLaravel4入門(11)blogをつくる
Twitter
Facebook
ブックマーク
LINEで送る

最初のサイドバー

最新記事

2023/03/21

WordPress:メール送信にGmailのSMTPを使う(プラグインなし)

2023/03/10

WordPress:サムネイル付き次の記事/前の記事

2023/02/28

Twitterシェアリンクはintent/tweetを使おう

2023/02/21

GoogleタグマネージャーとアナリティクスGA4

2023/02/8

WordPress:人気記事を直近の期間指定で表示する

最新記事を一覧で見る

よく読まれている記事

よく読まれている記事を一覧で見る

カテゴリー

  • はてなブログ214
  • WebTips109
  • javascript98
  • Joomla!88
  • Windows68
  • Wordpress65
  • CSS63
  • Joomla!更新53
  • Linux49
  • はてなテーマ45
  • Google34
  • Plamo33
  • はてなプラグイン25
  • php22
  • Node.js18
  • Ubuntu16
  • SASS16
  • laravel415
  • Chrome11
  • cms-style10
  • iPhone9
  • ConoHa WING6
  • Git入門6
  • genesis6
  • Python5
  • Android5
  • PC全般4
  • Facebook4
  • スマートフォン4
  • 静的サイトジェネレーター3
  • Firefox3
  • SSD3
  • Blankslate3
  • Docker3
  • Twitter2
  • GitHub2
  • Mactype2
  • はてなブクマ1
  • 映画1
  • youtube1
  • rails入門1
  • Xserver1

Footer

My Web Sites

  • @半径とことこ60分
  • そんなには褒めないよ。映画評
  • IMUZA.com
  • GitHub

Related Sites

  • WordPress公式
  • WordPress関数リファレンス
  • PHPマニュアル

Contact Us

  • お問い合わせフォーム
  • Twitter
  • Facebook
  • Feedly

Copyright © 2023 · IMUZA.com