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

ブログの記事のPrev/Nextの部分の≫、≪マークの削除もしくは変更

 

 1  |  2   | 次のページ>

Nori > ブログの記事のPrev/Nextの部分の≫、≪マークの削除もしくは変更 @ 2018/10/22 16:41
お世話になります。

質問ばかりで申し訳ございません。

basercolumnにてサイト制作中です。

表題の件、single.phpの内容で書き換えられる事までは把握できたのですが、
現行内容を削除すると表示は「≪[記事タイトル]」もしくは「[記事タイトル]≫」となり、
代わりに""としてarrowだけを消そうとすると、今度は記事タイトルの表示も出来なくなります。

当方の希望としては記事タイトルのみの表示です。
coreの変更かとも思いましたが、どれをどういじればいいかも分からず…

いくつかも質問させて頂き、
その都度的確なアドバイスを頂けたおかげで何とか希望通りのサイトが出来つつあります、
今一度お力お貸しいただける方いらっしゃいましたら宜しくお願いいたします。

■ BaserCMSのバージョン:4.1.3
■ レンタルサーバー名:ロリポップ
■ スマートURLの利用:OFF
■ 設置フォルダ:サブフォルダ
■ 利用しているデータベース:MySQL
■ PHPスキル:D

seto > Re: ブログの記事のPrev/Nextの部分の≫、≪マークの削除もしくは変更 @ 2018/10/23 10:24
こんにちは

以下のコードでタイトルのみの表示ができたのですが、baserのバージョンは何をお使いですか?
Noriさんの署名欄に「3.0.9」と記載されていましたが、baser3系のbccolumnを見つけることができなかったため、私は4.1.3で確認しました。

<div class="post-navi">
	<?php $this->Blog->prevLink($post, __('前の記事')) ?>
	&nbsp;  &nbsp;
	<?php $this->BcBaser->link(__('一覧へ'), '/'.$this->request->params['Content']['name'].'/index') ?>
	&nbsp;  &nbsp;
	<?php $this->Blog->nextLink($post, __('後の記事')) ?>
</div>
Nori > Re: ブログの記事のPrev/Nextの部分の≫、≪マークの削除もしくは変更 @ 2018/10/23 19:12
seto 様


アドバイス頂きありがとうございます!

私の説明不足で申し訳ございませんが、ご指南いただいた方法だと、
確かに“≫”、“≪”は消えるのですが、表示が記事タイトルではなく、「前の記事」や「後の記事」と指定された文字列になってしまいます。

私はその「前の記事」、「後の記事」の所を該当する記事の実際のタイトルにしたいです。

また、バージョンのご指摘、大変申し訳ございませんでした。
使っているのはseto様同様4.1.3でした。
署名欄も修正しておきます。

■ BaserCMSのバージョン:4.1.3
■ レンタルサーバー名:ロリポップ
■ スマートURLの利用:OFF
■ 設置フォルダ:サブフォルダ
■ 利用しているデータベース:MySQL
■ PHPスキル:D

seto > Re: ブログの記事のPrev/Nextの部分の≫、≪マークの削除もしくは変更 @ 2018/10/24 12:34
記事タイトルでしたね。見逃していました。

さて、前後の記事のタイトルを取得する方法ですが、ちょっと面倒な手順が必要です。
まず、lib/Baser/Plugin/Blog/View/Helper/BlogHelper.php には、getPrevPostやgetNextPostといった前後の記事の情報を取得する関数が既に存在します。

しかし、この2つの関数はprivate関数の為、呼び出して使うことができません。
なので、ビューかヘルパーにこの2つの関数をコードごとコピーして、それをsingle.phpから利用する形にする必要があります。
Nori > Re: ブログの記事のPrev/Nextの部分の≫、≪マークの削除もしくは変更 @ 2018/10/26 16:13
seto 様


ご返信の言葉から察するに、
相当専門的な改造が必要という事でしょうか?

既にお察しかとは思いますが、
私は完全に素人故、参考になる手順サイトなどあればまだ自力でやれるのですが…

■ BaserCMSのバージョン:4.1.3
■ レンタルサーバー名:ロリポップ
■ スマートURLの利用:OFF
■ 設置フォルダ:サブフォルダ
■ 利用しているデータベース:MySQL
■ PHPスキル:D

seto > Re: ブログの記事のPrev/Nextの部分の≫、≪マークの削除もしくは変更 @ 2018/10/26 16:35
いえ、コピペするだけなので、そんなに難しくありません。

まず、getPrevPostとgetNextPostのコードはこちらです。
お使いのbaserにも同じコードが入っているはずです。

getPrevPost
https://github.com/baserproject/basercms/blob/dev-4/lib/Baser/Plugin/Blog/View/Helper/BlogHelper.php#L1151

getNextPost
https://github.com/baserproject/basercms/blob/dev-4/lib/Baser/Plugin/Blog/View/Helper/BlogHelper.php#L1111

一番簡単な方法は、single.phpにこの2つの関数をコピーしてもってくることです。
そうすれば、single.phpから前後の記事の情報を取得できるようになります。
(※コピーの際は、function の前にある private を忘れずに取ってください。)
Nori > Re: ブログの記事のPrev/Nextの部分の≫、≪マークの削除もしくは変更 @ 2018/10/26 17:58
ご説明いただきありがとうございます!

ひとつ前のアドバイスから
lib/Baser/Plugin/Blog/View/Helper/BlogHelper.php
に該当する箇所(≪と≫を指示している箇所)を見つけたのですが、
これの該当箇所を変更して書き写すという方法ではなくて、
あくまでgetPrevPost.phpとgetNextPost.phpを新規作成した方が良いのでしょうか?
(今回のアドバイスを見る前に自分なりに考えて挑戦していたもので…ちなみに[アカウント名]/theme/bccolumn/Helper/へのBlogHelper.phpのアップでは機能せず困っていたところです…(;^_^A)

なお、今回のアドバイスの、新規作成する2つは他の追加のphpと同様に、theme内のElementにあげればよいでしょうか?

宜しくお願いいたします

■ BaserCMSのバージョン:4.1.3
■ レンタルサーバー名:ロリポップ
■ スマートURLの利用:OFF
■ 設置フォルダ:サブフォルダ
■ 利用しているデータベース:MySQL
■ PHPスキル:D

seto > Re: ブログの記事のPrev/Nextの部分の≫、≪マークの削除もしくは変更 @ 2018/10/29 10:25
Helperに処理を置くことは正しいですが、まずは動かすところからやってみましょう。

single.phpに、getPrevPost関数とgetNextPost関数を置いてください。
そうすれば、single.phpでgetPrevPost関数とgetNextPost関数を使用できるようになります。

# single.php

function getPrevPost($post) {
	# BlogHelperから持ってきたコードをここに貼り付ける
}

function getNextPost($post) {
	# BlogHelperから持ってきたコードをここに貼り付ける
}
Nori > Re: ブログの記事のPrev/Nextの部分の≫、≪マークの削除もしくは変更 @ 2018/10/29 10:50
seto 様


頂いたアドバイスですが、
もう少し詳細を教えて頂けますでしょうか?

私の見つけたBlogHelper.php内で該当する記述はこちらかと思っています。

/**
 * 前の記事へのリンクを出力する
 *
 * @param array $post ブログ記事
 * @param string $title タイトル
 * @param array $htmlAttributes HTML属性
 *	※ HTML属性は、HtmlHelper::link() 参照
 * @return void
 */
	public function prevLink($post, $title = '', $htmlAttributes = []) {
		$prevPost = $this->getPrevPost($post);
		$_htmlAttributes = ['class' => 'prev-link', 'arrow' => '≪ '];
		$htmlAttributes = am($_htmlAttributes, $htmlAttributes);
		$arrow = $htmlAttributes['arrow'];
		unset($htmlAttributes['arrow']);
		if ($prevPost) {
			if (!$title) {
				$title = $arrow . $prevPost['BlogPost']['name'];
			}
			echo $this->getPostLink($prevPost, $title, $htmlAttributes);
		}
	}

/**
 * 前の記事へのリンクがあるかチェックする
 *
 * @param array $post ブログ記事
 * @return bool
 */
	public function hasPrevLink($post) {
		$prevPost = $this->getPrevPost($post);
		if ($prevPost) {
			return true;
		}
		return false;
	}
	
/**
 * 次の記事へのリンクを出力する
 *
 * @param array $post ブログ記事
 * @param string $title タイトル
 * @param array $htmlAttributes HTML属性
 *	※ HTML属性は、HtmlHelper::link() 参照
 * @return void
 */
	public function nextLink($post, $title = '', $htmlAttributes = []) {
		$nextPost = $this->getNextPost($post);
		$_htmlAttributes = ['class' => 'next-link', 'arrow' => ' ≫'];
		$htmlAttributes = am($_htmlAttributes, $htmlAttributes);
		$arrow = $htmlAttributes['arrow'];
		unset($htmlAttributes['arrow']);
		if ($nextPost) {
			if (!$title) {
				$title = $nextPost['BlogPost']['name'] . $arrow;
			}
			echo $this->getPostLink($nextPost, $title, $htmlAttributes);
		}
	}
	
/**
 * 次の記事へのリンクが存在するかチェックする
 *
 * @param array $post ブログ記事
 * @return bool
 */
	public function hasNextLink($post) {
		$nextPost = $this->getNextPost($post);
		if ($nextPost) {
			return true;
		}
		return false;
	}


それぞれ

	public function nextLink($post, $title = '', $htmlAttributes = []) {

	public function hasNextLink($post) {


というような感じで1行目がスタートしているので、
微妙に違うのですが…(;^_^A

あと、single.phpにそれぞれの関数を置く、との事ですが具体的にどちらに置けばよいでしょうか…(;^_^A

■ BaserCMSのバージョン:4.1.3
■ レンタルサーバー名:ロリポップ
■ スマートURLの利用:OFF
■ 設置フォルダ:サブフォルダ
■ 利用しているデータベース:MySQL
■ PHPスキル:D

seto > Re: ブログの記事のPrev/Nextの部分の≫、≪マークの削除もしくは変更 @ 2018/10/29 12:23
> 私の見つけたBlogHelper.php内で該当する記述はこちらかと思っています。
prevLink・hasPrevLink・nextLink・hasNextLink ではなく、getPrevPost と getNextPost です。

> あと、single.phpにそれぞれの関数を置く、との事ですが具体的にどちらに置けばよいでしょうか…(;^_^A
single.phpの中でしたらどこでも大丈夫です。

 

 1  |  2   | 次のページ>

ログイン
ユーザー名:
パスワード:


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

検索

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

フォーラムガイド


関連リンク

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

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