<?php
/**
* ブログ詳細ページ
*/
$this->BcBaser->setDescription($this->Blog->getTitle() . '|' . $this->Blog->getPostContent($post, false, false, 50));
# single.php
function getPrevPost($post) {
$BlogPost = ClassRegistry::init('Blog.BlogPost');
// 投稿日が年月日時分秒が同一のデータの対応の為、投稿日が同じでIDが大きいデータを検索
$conditions = [];
$conditions['BlogPost.id <'] = $post['BlogPost']['id'];
$conditions['BlogPost.posts_date'] = $post['BlogPost']['posts_date'];
$conditions['BlogPost.blog_content_id'] = $post['BlogPost']['blog_content_id'];
$conditions = am($conditions, $BlogPost->getConditionAllowPublish());
$order = 'BlogPost.posts_date DESC, BlogPost.id DESC';
// 毎秒抽出条件が違うのでキャッシュしない
$prevPost = $BlogPost->find('first', [
'conditions' => $conditions,
'order' => $order,
'recursive' => 0,
'cache' => false
]);
if (empty($prevPost)) {
// 投稿日が古いデータを取得
$conditions = [];
$conditions['BlogPost.posts_date <'] = $post['BlogPost']['posts_date'];
$conditions['BlogPost.blog_content_id'] = $post['BlogPost']['blog_content_id'];
$conditions = am($conditions, $BlogPost->getConditionAllowPublish());
// 毎秒抽出条件が違うのでキャッシュしない
$prevPost = $BlogPost->find('first', [
'conditions' => $conditions,
'order' => $order,
'recursive' => 0,
'cache' => false
]);
}
return $prevPost;
}
function getNextPost($post) {
$BlogPost = ClassRegistry::init('Blog.BlogPost');
// 投稿日が年月日時分秒が同一のデータの対応の為、投稿日が同じでIDが小さいデータを検索
$conditions = [];
$conditions['BlogPost.id >'] = $post['BlogPost']['id'];
$conditions['BlogPost.posts_date'] = $post['BlogPost']['posts_date'];
$conditions['BlogPost.blog_content_id'] = $post['BlogPost']['blog_content_id'];
$conditions = am($conditions, $BlogPost->getConditionAllowPublish());
$order = 'BlogPost.posts_date, BlogPost.id';
// 毎秒抽出条件が違うのでキャッシュしない
$nextPost = $BlogPost->find('first', [
'conditions' => $conditions,
'order' => $order,
'recursive' => 0,
'cache' => false
]);
if (empty($nextPost)) {
// 投稿日が新しいデータを取得
$conditions = [];
$conditions['BlogPost.posts_date >'] = $post['BlogPost']['posts_date'];
$conditions['BlogPost.blog_content_id'] = $post['BlogPost']['blog_content_id'];
$conditions = am($conditions, $BlogPost->getConditionAllowPublish());
// 毎秒抽出条件が違うのでキャッシュしない
$nextPost = $BlogPost->find('first', [
'conditions' => $conditions,
'order' => $order,
'recursive' => 0,
'cache' => false
]);
}
return $nextPost;
}
?>
お疲れ様です。
アドバイスに従い、このように書き直しました。
間違いないでしょうか?
引用:
あとは、こうして使うことで前後の記事のデータが取得できます。
$prevPost = getPrevPost($post);
p($prevPost);
$nextPost = getNextPost($post);
p($nextPost);
この部分がまだ少しわかりません。
申し訳ありませんが今一度アドバイスお願いいたします。