■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

Re: 「最近の投稿」にアイキャッチ画像を表示したいです

tecking > Re: 「最近の投稿」にアイキャッチ画像を表示したいです @ 2016/5/14 22:24
Noriさん

nice-tempoではないテーマでの検証ですが、一例としてどうぞ。
(しかもCakePHPの作法からいうと、やや手抜きな方法ではありますが……)

1. /lib/Baser/Plugin/Blog/View/Elements/widgets/blog_recent_posts.php を、お使いのテーマディレクトリの Elements/widgets/ にコピー( widgets ディレクトリがなければ新規作成)。
これで、コピー先のファイルが「最近の投稿」のテンプレートとして優先されるようになります。

※(追記)『nice-tempo』については、すでに Elements/widgets/blog_recent_posts.php があるので 1 の操作は不要です

2. /app/webroot/theme/{お使いのテーマディレクトリ}/Helper 内に FooHelper.php として下記を作成( Helper ディレクトリがなければ新規作成)。
$options の値はブログプラグインの getEyecatch() 関数に準じるので、適宜設定してください(下記コードでは、大きいサイズの画像へのリンクをなくす設定だけ行っています)。

<?php

class FooHelper extends AppHelper {

	public $helpers = array('Blog.Blog');
	
	public function getEyecatch($blogContentId, $postNo) {
		if (empty($blogContentId) || empty($postNo)) return;

		$BlogPost = ClassRegistry::init('Blog.BlogPost');
		$post = $BlogPost->find('first',
			array('conditions' => array(
				'BlogPost.no' => $postNo,
				'BlogPost.blog_content_id' => $blogContentId
			))
		);

		$options = array(
			'link' => false
		);
		return $this->Blog->getEyecatch($post, $options);
	}
}


3. 1のコピー先ファイルの任意の位置(=アイキャッチ画像を挿入したい位置)に下記のように挿入。

<?php $this->BcBaser->link($this->Foo->getEyecatch($id, $recentEntry['BlogPost']['no']), array('admin' => false, 'plugin' => '', 'controller' => $blogContent['BlogContent']['name'], 'action' => 'archives', $recentEntry['BlogPost']['no'])) ?>


これで、個別記事へのリンクが埋め込まれたアイキャッチ画像が表示されるかとおもいます。アイキャッチ画像の大きさは、2. のコードの $options や、CSSで適宜調整してみてくださいね。
ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
29 人のユーザが現在オンラインです。 (29 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 29