ウィジットエリアのプルダウン表示方法

 

 1  |  2   | 次のページ>

Nori > ウィジットエリアのプルダウン表示方法 @ 2018/10/22 16:47
お世話になります。

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

サイドコラムのブログ用ウィジェットのアレンジをしたくアドバイス頂ければ幸いです。

現在、オリジナル機能の為、
カテゴリ別や月別のアーカイブがリスト形式になっております。

これを、リストではなく、
プルダウンに収納したく考えております。

BcFreeze/select

これかと思い色々自力で挑戦したのですが、いまだうまくできておりません。
アドバイス頂ければ幸いです。

宜しくお願いいたします。

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

seto > Re: ウィジットエリアのプルダウン表示方法 @ 2018/10/23 10:32
プルダウンの表示のみでしたら、以下のコードです。
['a', 'b', 'c'] の部分に任意の配列を入力するといいです。

echo $this->BcForm->select('test', ['a', 'b', 'c']);
Nori > Re: ウィジットエリアのプルダウン表示方法 @ 2018/10/23 19:47
seto 様


いくつもアドバイス頂きありがとうございます。
ご指摘いただいた内容を自分なりに考え、以下の手順でまずは上記そのままの内容でやってみましたがまだわからない事ばかりで。。。

1.上記の内容でblog-pulldown.phpを作成。作成した内容は以下の通り。
<?php echo $this->BcForm->select('test', ['a', 'b', 'c']); ?>


2.blog-pulldown.phpをElements/widgetsにアップロード

3.ウィジェットエリア編集からphpテンプレートを使用し、blog-pulldown.phpを有効化。

この手順で表示されたのは

a、b、cの選択肢を含むプルダウンでした。

そこで質問です。

?それぞれの選択肢を、ブログのカテゴリに変更する方法 (※システム上でカテゴリが追加された場合、自動でこちらにも追加したいです)
?それぞれの選択肢を選んだ際に、選んだカテゴリのアーカイブページにジャンプ

質問ばかりの素人で大変申し訳ございません…

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

seto > Re: ウィジットエリアのプルダウン表示方法 @ 2018/10/24 12:42
ブログカテゴリのリストは、以下の関数で取得できます。

$this->Blog->getCategories()


あとは、取得したカテゴリのデータを元にurlのリストを生成したあと、
 ['a', 'b', 'c']
の箇所にセットしてあげればいいです。

選択した項目にページを移動する方法は、「セレクトエリア url 移動」等で検索すると参考になる情報が見つかると思いますので、お試しください。
Nori > Re: ウィジットエリアのプルダウン表示方法 @ 2018/10/26 16:09
seto 様


アドバイス頂いた内容を自分なりに調べて、以下のようにphpを書いたのですが、
うまく表示されません…

<?php
if($this->Blog->isSingle()) { //詳細記事の時
    $blog_id = $post['BlogPost']['blog_content_id']; //現在表示記事からブログIDを取得
} else {
    $blog_id = $posts[0]['BlogPost']['blog_content_id']; //記事一覧の1記事目から現在表示中のブログIDを取得
}
$actionUrl = '/blog/blog/get_categories/'.$blog_id.'/';
$data = $this->requestAction($actionUrl);
$categories = $data['categories'];
echo $this->BcForm->select('test', $categories );
?>


参考にした情報は関数リファレンスです。
ver4/関数リファレンス/getCategoryList

これだと肝心なGetCategoryListが入っていないのでダメなのでしょうが、
一番自分がやりたい形に近かったので…

ちなみに生成されたhtmlは以下の通りです。

<select name="data[test]" id="test">
<option value=""></option>

<option value="title">カテゴリ1</option>
<option value="name">cate1</option>
<option value="id">3</option>
<optgroup label="BlogCategory">
</optgroup></select>

※現在設定しているカテゴリは1つだけ(カテゴリ1)で、name、valueは既存の通りです。

セレクタエリアのURL設定以前の問題なので、
まずこの部分を質問させて頂きました。

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

seto > Re: ウィジットエリアのプルダウン表示方法 @ 2018/10/26 16:25
getCategoryList ではなく getCategories です。
しかし、wikiを見るとページが作成されていないですね....

こちらの関数のことです。
https://github.com/baserproject/basercms/blob/dev-4/lib/Baser/Plugin/Blog/View/Helper/BlogHelper.php#L1232
Nori > Re: ウィジットエリアのプルダウン表示方法 @ 2018/10/26 18:29
ver4/関数リファレンス/getCategory
を確認し、以下のように書き換えてみましたが…

<?php
$category = $this->Blog->getCategory($post,array(false)); echo h($category[‘title’]);
echo $this->BcForm->select('test', $categories );
?>


これだとプルダウン自体は出るのですが、選択肢は何も出力されませんでした…

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

seto > Re: ウィジットエリアのプルダウン表示方法 @ 2018/10/29 10:18
getCategory ではなく getCategories です。
こんな風に使います。
$categories = $this->Blog->getCategories();


また、取得したカテゴリを$this->BcForm->selectにそのまま入れるだけだとダメです。
取得したカテゴリのデータを元にurlのリストを生成する必要があります。
Nori > Re: ウィジットエリアのプルダウン表示方法 @ 2018/10/29 10:57
アドバイスを基に修正しましたが、
ご指摘の通り正常には作動しませんでした…

<select name="data[test]" id="test">
<option value=""></option>

<option value="title">プレスリリース</option>
<option value="name">release</option>
<optgroup label="BlogCategory">
</optgroup><optgroup label="1">
</optgroup>
<option value="title">テスト</option>
<option value="name">test</option>
<optgroup label="BlogCategory">
</optgroup>
<optgroup label="2">
</optgroup>
<option value="title">カテゴリ名?</option>
<option value="name">categoryname</option>
<option value="id">3</option>
<optgroup label="BlogCategory">
</optgroup>
</select>


既に削除したはずのカテゴリ名が出てきていたり、nameやidもリストに出てきている次第です。

引用:
取得したカテゴリのデータを元にurlのリストを生成する必要があります。


こちらの部分でアドバイス頂ければ幸いです。
宜しくお願いいたします。

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

seto > Re: ウィジットエリアのプルダウン表示方法 @ 2018/10/29 12:58
こんな感じになりました。
$this->Blog->getCategories() だけだと、全てのブログのカテゴリを取得できてしまったので、blogContentIdでブログを指定しています。

$categories = $this->Blog->getCategories(['blogContentId' => $this->request->params['Content']['entity_id']]);
$categoryList = [];
foreach ($categories as $category) {
	$categoryList['http://xxxxx/works/archives/category/' . $category['BlogCategory']['name']] = $category['BlogCategory']['title'];
}
echo $this->BcForm->select('test', $categoryList);

 

 1  |  2   | 次のページ>

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


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

検索

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

フォーラムガイド


関連リンク

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

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