「前のカテゴリー」「次のカテゴリー」のリンクとラベル名を出力する機能

機能の改善・追加に関するリクエストはこちらにお願いします。

「前のカテゴリー」「次のカテゴリー」のリンクとラベル名を出力する機能

投稿記事by polka on 2019年4月11日(木) 18:41

いつもありがとうございます。


ブログ記事ページで使える
b_block:id="prev_entry"
b_block:id="next_entry"

のカテゴリ版
b_block:id="prev_category"
b_block:id="next_category"

は、できないでしょうか?



SOY CMSのブログカテゴリページを
あたかも記事ページのように使うケースが時々ありまして
(複数の記事をカテゴリ用のラベルに格納して出力させています)
希望する次第です。

ご検討よろしくお願い致します。
polka
 
記事: 188
登録日時: 2013年5月20日(月) 08:15
所在地: 大阪府泉大津市二田町1-20-30-2F

Re: 「前のカテゴリー」「次のカテゴリー」のリンクとラベル名を出力する機能

投稿記事by inunosinsi on 2019年4月12日(金) 06:11

今回のご連絡の件は現時点でのSOY CMSの仕様では難しいです。
難しい点としまして、記事には日付で前後関係が出来ていますが、カテゴリには前後関係がなく、次のカテゴリや前のカテゴリの概念がありません。

表示順の設定と作成順の設定を加味すれば、そこそこの動作をするものが出来ますが、
親カテゴリの設定をした場合は表示順とかをどのように捉えれば良いか迷います。

丁寧な設計が必要になります
大阪でフリーのプログラマをしています。
以前はSOY CMSの開発元で働いていました。

SOY ShopのプラグインやSOY Appの開発のサポートをしています。
http://saitodev.co/soycms(SOY CMSのマニュアルを作成しています)

最近はSOY Shopを業務アプリとして使用できないか?と模索しています。
SOY Shopで管理画面のみ使用モードを追加しました - saitodev.co

株式会社京都農販(SOY Shopのサイト)
株式会社コトブキ園(SOY Shop)
inunosinsi
 
記事: 760
登録日時: 2008年6月12日(木) 20:48

Re: 「前のカテゴリー」「次のカテゴリー」のリンクとラベル名を出力する機能

投稿記事by polka on 2019年4月12日(金) 11:22

inunosinsi さんが書きました:今回のご連絡の件は現時点でのSOY CMSの仕様では難しいです。
難しい点としまして、記事には日付で前後関係が出来ていますが、カテゴリには前後関係がなく、次のカテゴリや前のカテゴリの概念がありません。

表示順の設定と作成順の設定を加味すれば、そこそこの動作をするものが出来ますが、
親カテゴリの設定をした場合は表示順とかをどのように捉えれば良いか迷います。

丁寧な設計が必要になります


inunosinsi様

いつもお世話になっております。
早速のご対応ありがとうございます。

現在、b_block:id="category"で出力させたラベル名とURLを、
javascriptを使って配列に格納して、現在カテゴリページより-1、+1で前後カテゴリとして使えないか試しているのですが、
行き詰まっていたのでSOY CMS側でそのような仕組みができないかな?と期待して書き込みさせてもらいました。

ご検討ありがとうございます!
polka
 
記事: 188
登録日時: 2013年5月20日(月) 08:15
所在地: 大阪府泉大津市二田町1-20-30-2F

Re: 「前のカテゴリー」「次のカテゴリー」のリンクとラベル名を出力する機能

投稿記事by polka on 2019年4月12日(金) 15:18

javascript(jQuery)を併用して、この機能を実現してみました。


ご参考までにソースを書き込みします。
(もっと効率のよい書き方があるとは思いますが。。。)



当方は込み入った内容のブログ記事ページ(の役割をもたせたページ)を作るのに、
カテゴリページをよくつかっています。

通常一般は、詳細な内容を見せるのは記事ページを使うでしょうから
この「カテゴリページの順送りの機能」は、あまり利用機会がないとおもいますが、

SOY CMS ブログページのカテゴリを活用しやすくなると思いますので、
よければ、それぞれの環境にあわせてアレンジしてお使いください。



<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function(){

var cateURL= [];
var cateCurrentURL = "https://www.hogehoge.com/gufu/category/<!-- b_block:id="category_alias" /-->";

$("ul.category_list li").each(function(i){
cateURL[i] = $("a",this).attr("href");
});

var maxNum = $("ul.category_list li").length - 1;
var prevNum,nextNum,currentNum;

for(var n=0; n<maxNum; n++){
if(cateURL[n] == cateCurrentURL){
currentNum = n;
prevNum = n - 1;
nextNum = n + 1;
}
}

if(prevNum < 1){
prevNum = maxNum;
}
if(nextNum > maxNum){
nextNum = 1;
}

$("ul.category_navigation").each(function(){
$("li:first-child a",this).attr("href",cateURL[prevNum]);
$("li:last-child a",this).attr("href",cateURL[nextNum]);
});

});
</script>


<ul class="category_navigation">
<li><a href="#">prev</a></li>
<li><a href="#">next</a></li>
</ul>


<ul class="category_list" style="height: 0px; visibility: hidden;">
<!-- b_block:id="category" -->
<li><a href="#" cms:id="category_link"><!-- cms:id="category_name" /--></a></li>
<!-- /b_block:id="category" -->
</ul>



【解説】
SOY CMS ブログページのカテゴリのテンプレートで使えます。

順送りするラベルは、ブログページの「設定」の「カテゴリに使うラベル」にチェックしたラベルです。

ラベルの順序(カテゴリの前後)は、管理画面「ラベル」の「表示順」で変えられます。

上記ソースは<body></body>内で動作OKです。
(jQueryの基本ライブラリは<head></head>内に置く方がいいかもしれないです)

jQueryの基本はバージョンは上記例は「1.12.4」にしていますが、
他のものでも(多分)大丈夫だろうと思います。

cateCurrentURL
現在のカテゴリページのURLを格納する変数です。
b_block:id="category_alias"(ラベル詳細の「URL」)を使っていますが、他の方法でURLを取得しても良いと思います。

ul.category_navigation
画面に表示される順送りリンクです。

ul.category_list
ブログのカテゴリのラベル名とリンク先を出力させています。
(上記例はラベル名は使っていませんが、一応出力させてます^.^;)
このリストは画面には見えてほしくないので、スタイルシートで非表示にしています。
polka
 
記事: 188
登録日時: 2013年5月20日(月) 08:15
所在地: 大阪府泉大津市二田町1-20-30-2F


Return to 機能の改善・追加リクエスト

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[2人]

cron