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

Re: テーマのカスタマイズのみでblog widgets blog_recent_entries でブログの投稿日時を表示させる。

goichi > Re: テーマのカスタマイズのみでblog widgets blog_recent_entries でブログの投稿日時を表示させる。 @ 2012/11/2 22:25
こんにちは(^^
上手く動かなかったらすみません、参考までに書き込んでいます。
(他に良い方法があるような気もしますが、思いついたのは以下の様なものです。)

まず、テーマ内でブログのウィジェット部分の表示を変更できるよう、
以下のフォルダ構造を作ります。

/app/webroot/themed/テーマ名/blog/views/elements/widgets/

この「widgets」フォルダに
今回編集するファイル「blog_recent_entries.php」を作成します。
(/baser/plugins/blog/views/elements/widgets/からコピーします)

これで下準備が整ったとおもいますので、
ファイルを編集します。

まず、今回はviewファイルからDBを利用できるようにしなくてはなりません。。。

(MVCの概念からはちょっと外れますが、そこは目をつむって頂いて・・・。)
そこで、記事のリストを表示するループ処理の前段階で、
$blogModel = ClassRegistry::init('BlogPost');

と書いておきます。これでモデルが使えます。

次にDBを検索しますが、今回、ループ処理内の各記事のデータが「no」を持っていますので、
これを検索条件にしたら良いと思います。
$blogData = $blogModel->find('first',array(
	'conditions' => array(
		'no'=>$recentEntry['BlogPost']['no']
	),
	'feild' => array('posts_date')
	));



あとは取得した情報を出力します。
echo $blogData['BlogPost']['posts_date'];



参考までに上の追記をした「blog_recent_entries.php」全文を記載しておきます(^^
上手く動かなかった申し訳ないのですが、参考までにご覧いただければと思います。

<?php
/* SVN FILE: $Id$ */
/**
 * [PUBLISH] ブログ最近の投稿
 * 
 * PHP versions 5
 *
 * baserCMS :  Based Website Development Project <http://basercms.net>
 * Copyright 2008 - 2012, baserCMS Users Community <http://sites.google.com/site/baserusers/>
 *
 * @copyright		Copyright 2008 - 2012, baserCMS Users Community
 * @link			http://basercms.net baserCMS Project
 * @package			baser.plugins.blog.views
 * @since			baserCMS v 0.1.0
 * @version			$Revision$
 * @modifiedby		$LastChangedBy$
 * @lastmodified	$Date$
 * @license			http://basercms.net/license/index.html
 */
if(!isset($count)) {
	$count = 5;
}
if(isset($blogContent)){
	$id = $blogContent['BlogContent']['id'];
}else{
	$id = $blog_content_id;
}
$data = $this->requestAction('/blog/blog/get_recent_entries/'.$id.'/'.$count);
$recentEntries = $data['recentEntries'];
$blogContent = $data['blogContent'];
$baseCurrentUrl = $blogContent['BlogContent']['name'].'/archives/';

/* 追記 */
//ブログ記事のDBをViewから利用できるようにしておく。
$blogModel = ClassRegistry::init('BlogPost');

?>
<div class="widget widget-blog-recent-entries widget-blog-recent-entries-<?php echo $id ?> blog-widget">
<?php if($name && $use_title): ?>
<h2><?php echo $name ?></h2>
<?php endif ?>
	<?php if($recentEntries): ?>
	<ul>
		<?php foreach($recentEntries as $recentEntry): ?>
			<?php if($this->params['url']['url'] == $baseCurrentUrl.$recentEntry['BlogPost']['no']): ?>
				<?php $class = ' class="current"' ?>
			<?php else: ?>
				<?php $class = '' ?>
			<?php endif ?>
		<li<?php echo $class ?>>
        
        <?php 
		/* 追記 */
		//検索を行う
		$blogData = $blogModel->find('first',array(
				//記事の「no」が分かっているので、とりあえずそれを条件にする。
				'conditions' => array(
					'no'=>$recentEntry['BlogPost']['no']
				),
				//今回必要な投稿日時のみを取得する。
				'feild' => array('posts_date')
				));
		
		//とりあえず出力する。(適当に整形してみてください)
		echo $blogData['BlogPost']['posts_date'];

		?>
        
			<?php $bcBaser->link($recentEntry['BlogPost']['name'],array('admin'=>false,'plugin'=>'','controller'=>$blogContent['BlogContent']['name'],'action'=>'archives',$recentEntry['BlogPost']['no'])) ?>
		</li>
		<?php endforeach; ?>
	</ul>
	<?php endif; ?>
</div>
ログイン
ユーザー名:
パスワード:


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

検索

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

フォーラムガイド


関連リンク

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

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