現在デフォルトスキンとして「 Like Simplicity」を適用中。

ブロックエディターツールボタンのドロップダウン化について | Cocoon Blocksに関する質問・不具合報告・要望 | Cocoon フォーラム

書き込みの前に以下の3点をご確認ください。
  1. 1つのトピックにつき1つの質問を書き込んでください
  2. 不具合・カスタマイズ対象ページのURLを提示してください
  3. 該当部分のキャプチャ・環境情報とともに書き込んでいただけると助かります

フォーラム利用ガイドリンク

  1. フォーラムガイドライン
  2. よくある質問と答え(FAQ)
  3. サポート対象外のケース
  4. 原因不明の不具合用トラブルシューティング
  5. トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw
  6. 真っ白画面でのエラーメッセージの確認方法 
  7. ブラウザ環境チェックツール

フォーラムの内容は、CCライセンス(CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。

フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。

詳細なカスタマイズ依頼をするならこちら。

フォーラムのTwitterアカウント(@CocoonForum)はこちら

スポンサーリンク
ブロックエディターツールボタンのドロッ...
 
Share:

[解決済] ブロックエディターツールボタンのドロップダウン化について  


ロコ
(@lococo)
Reputable Member
参加: 1年 前
投稿: 417
2019年3月18日 01:32  

わいひら様、アップデートありがとうございます。

https://wp-cocoon.com/bugs-and-wants/

こちらの記事の「ツールボタンをドロップダウン化したい」にて、

今のところやり方は、よくわかってない

とありますが、Gutenberg公式のテーブルブロックがサンプルとして参考になるかと思いますがいかがでしょうか。

 

https://wp-cocoon.com/cocoon-blocks-response-status/

また、「今後特にやりたいこと」には挙げられていなかったのですが、可能であればCocoon用のレイアウトブロックも対応していただければ幸いです。
こちらも公式のカラムブロックとそれをフォークしたようないくつかのプラグインが参考になるかと思います。


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月18日 20:49  

Gutenberg公式のテーブルブロックがサンプルとして参考になるかと思いますがいかがでしょうか。

これは、多分これを利用していると思うのですが、いまいち実装してみても動作しなくて。
https://wordpress.org/gutenberg/handbook/designers-developers/developers/components/dropdown-menu/

こんな感じでやってみても、ボタンが表示すらされなかったりして。

https://notepad.pw/code/f3r2542c3

※突貫で書いたコードなので余計なコードも多少入っています

何か使い方自体間違っているんでしょうかね。


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月18日 20:51  

こちらも公式のカラムブロックとそれをフォークしたようないくつかのプラグインが参考になるかと思います。

例えばどのプラグインでしょうか?
よろしければURLをいただければ幸いです。


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月18日 20:54  

また、「今後特にやりたいこと」には挙げられていなかったのですが、可能であればCocoon用のレイアウトブロックも対応していただければ幸いです。

これも以前、作ろうと思って以下のように何も考えず作ってはみました。
https://notepad.pw/code/zjnn4wl6

けれどこれだと、<InnerBlocks />を2つ入れると、それぞれ別のものが表示されと思っていたのですが、同じものが表示されてしまうんですよね。

ここら辺の解決方法がまだよくわかっていません。というか調べる時間がなくてまだ調べていません。


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月18日 20:55  

というか、公式のカラムブロックがあるのでいいかなと思って、暫く放置しています。
公式のカラムブロックではダメなのでしょうか?


ロコ
(@lococo)
Reputable Member
参加: 1年 前
投稿: 417
2019年3月19日 01:04  

わいひら様、返信ありがとうございます。

 

まずドロップダウン化の方ですが、示していただいている『DropdownMenu』を公式でも利用しているようで、サンプルコードと比較した感じだと、

https://github.com/WordPress/gutenberg/blob/master/packages/block-library/src/table/edit.js

このあたりが参考になるのではないかと思いました。

 

同様に公式カラムブロックのコードは以下で、

https://github.com/WordPress/gutenberg/tree/master/packages/block-library/src/columns

プラグインだと例えば、

https://wordpress.org/plugins/variable-column-block/

などがありました。

 

Cocoon用にカラムブロックを用意する予定とのことだったので、ブロックも可能な限りCocoonのもので統一しようかと考えていたのですが、カラムは公式ブロックのみならそれでも私は構いません。


わいひら 件のいいね!
わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月19日 20:39  

リンクありがとうございます。
DropdownMenuですが、僕も同様のことを試したことあるのですが、うまくいきませんでした。
僕もこれに関しては、以前からトータルで十数時間は試しているのですが、ダメでした。
これは、僕自身JSXを始めたのが、Gutenbergエディター組み込み後のWordPress5.0以降で、現在行っているプログラミング自体付け焼刃のものだからだと思います。
しっかりと書籍を購入して、仕様時手をしっかりと理解しないと、できないような気もします。
これ自体、何時間かやれば必ずうまくいくというのであれば、やるのですが、何時間やってもうまくいかない可能性があるので、ちょっとこれは良いサンプルコード待ちをしようと思います。

「これをやればうまくいく」的なものがあればいいのですが、僕も他に仕事があるので、トライ&エラー時間があまりなくて。


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月19日 20:48  

Gutenberg Variable Columnsプラグインも見てみました。
これと同様に、カラムの中にテキストしか挿入しないものであれば、今も作成できるかもしれません。
<InnerBlocks />を入れて、カラム内にブロックを入れようと思っているからダメだったり。
調べても、1つのブロック内に複数のInnerBlocksはできないっぽいです。
https://wordpress.org/support/topic/multiple-inner-blocks/

それを、うまく動作させるには、「公式のカラムブロック」みたいなことをやればいいとは思うのですが、それだったら「公式のもの」でいいのかなと思ってしまいました。

テキストだけで良いのであれば、多分できると思います。
けれど、「リストは入れられないの?」とか問い合わせが来そうで、どうしたものか…と思って現在に至る感じです。


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月19日 21:42  

Gutenbergのツールボタンですが、そのプラグインのおかげで、様々な表現ができることはわかっています。
https://technote.space/add-richtext-toolbar-button
なんで、このプラグインのような表現を目指して情報収集出来ればと思います。
※プラグインコードを見てみたのですが、コンパイル後のコードしか見つけられなかったので、正直よくわからなかった…。

でも、できるということが分かっただけでもありがたい。


ロコ
(@lococo)
Reputable Member
参加: 1年 前
投稿: 417
2019年3月20日 07:23  

わいひら様、お忙しい中ありがとうございます。

 

私もJSXは初心者なのですが、

https://wordpress.org/gutenberg/handbook/designers-developers/developers/components/dropdown-menu/

https://github.com/WordPress/gutenberg/blob/master/packages/block-library/src/table/edit.js

を参考に、Create Guten Block Toolkitを用いて試してみたところ、ドロップダウンは表示されました。

 

わいひら様は

https://notepad.pw/code/f3r2542c3

にあるようなコードで試したとのことですが、「ひとまずドロップダウンを表示させる」という観点から言えることは、ひとつはコンポーネントを適切に扱うことです。

コンポーネントが正しく構造化されていないと表示が崩れたりするので、丁寧に記述されている公式の各ブロックを参考に、今回の場合は

<Fragment><DropdownMenu ... /></Fragment>

よりも

<Fragment><BlockControls><Toolbar><DropdownMenu ... /></Toolbar></BlockControls></Fragment>

の方が適切なようです。(公式テーブルブロックのドロップダウン部分のコードを参照)

もうひとつは該当のコードが動作するようにビルドされているかを確認することです。

ビルド時にエラーが出ていないか、該当のコードが書かれたファイルがきちんと読み込まれているかなどを再度確認してみてください。

 

今のところ、ドロップダウンが表示されない原因について心当たりがあるのは上記の2点ではないかと思います。


わいひら 件のいいね!
ロコ
(@lococo)
Reputable Member
参加: 1年 前
投稿: 417
2019年3月20日 07:36  

朝一に動作確認のみを大雑把に行ってみて、とりあえず書き込んだだけなので、少ない情報ですみませんが、また何か分かったことがあれば追記させていただきます。


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月20日 21:02  

!!!
というか、そんな部分に表示されるんですね。
僕としては、「太字(boldクラス指定)」の手前に表示される順番で挿入し、そのつもりでいたのでその部分は見てもいませんでした。。
<BlockControls><Toolbar>も以前試したときに、やったと思うんですが、まさかそんなところに表示されると思わず、太字の手前ばかり見ていました。
僕の環境でも出ていました。。
今後、順番変更方法も探りながら、動作方法を探ってみたいと思います。

ちゃんとターミナルやブラウザーのコンソールに、エラーが出てくれれば、ありがたいんですけどね…。でないケースが結構あって。

書き込みのおかげで、かなり進展しました。
ありがとうございます!

またあとでコードを書いてみて進捗があれば書き込もうと思います。


ロコ
(@lococo)
Reputable Member
参加: 1年 前
投稿: 417
2019年3月21日 03:02  

エディタのツールバーについて、基本は既存コンポーネント群→追加コンポーネント群→最後尾にフォーマットボタン用コンポーネント群と表示されるみたいです。

Gutenbergの仕様に則ってカスタマイズするのであれば、フォーマットボタンの自由度は高くなく、用意されている様々なコンポーネントを活用するには新たにコンポーネント群を追加するのが良さそうです。

コンポーネント『DropdownMenu』や『Toolbar』などを用いることで、コンポーネント群を追加する形です。
(『Toolbar』は例えば、テキストの左・中央・右寄せボタンの箇所など。)

ちなみに、実際に試してはいないので詳しくは分かりませんが、『MenuItem』を用いると『DropdownMenu』内をより細かく構築できるとのことです。

 

わいひら様が示された

https://technote.space/add-richtext-toolbar-button

にあるプラグインを軽く読んでみましたが、フォーマットボタン用コンポーネント下に新たな独自コンポーネントを用意し、より自由度の高いフォーマットボタンへと拡張させることで実現しているようですね。

独自コンポーネントを追加すれば、その分拡張性は増すわけですが、そこにかける労力や今後のメンテナンス等を考えると、極力既存のコンポーネントのみでうまく組み合わせて作った方が良いのでは?と個人的には思います。

コンポーネント群の順番変更方法についてはまだよく見ていないので分からないですが、少なくとも順番を気にしなければ、既存のコンポーネントだけでもプラグインと同じような機能の多くは実現可能かと。


わいひら 件のいいね!
わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月21日 22:00  

エディタのツールバーについて、基本は既存コンポーネント群→追加コンポーネント群→最後尾にフォーマットボタン用コンポーネント群と表示されるみたいです。

そうだったんですね。そうとは知らず、追加されていた部分は見てませんでした…。

ちなみに、実際に試してはいないので詳しくは分かりませんが、『MenuItem』を用いると『DropdownMenu』内をより細かく構築できるとのことです。

そうなんですね。あとでMenuItemで検索してみたいと思います。

Add RichText Toolbar Button

これは、どのファイルをよく読まれたのでしょうか。
以下のファイルをBeautifyして読んだとかでしょうか。
https://github.com/technote-space/add-richtext-toolbar-button/blob/master/assets/js/add-richtext-toolbar-button-gutenberg.min.js

プラグインを軽く読んでみましたが、フォーマットボタン用コンポーネント下に新たな独自コンポーネントを用意し、より自由度の高いフォーマットボタンへと拡張させることで実現しているようですね。

やっぱりtechnoteさんの技術力は半端ないですね。

独自コンポーネントを追加すれば、その分拡張性は増すわけですが、そこにかける労力や今後のメンテナンス等を考えると、極力既存のコンポーネントのみでうまく組み合わせて作った方が良いのでは?と個人的には思います。

僕も、既存のものでないと、現在の僕の能力では多分手に負えなくなると思います。
Reactの記法はなじみがなくて、正直全然慣れません…。
やるとしても、ちゃんとした本を一冊読まないとダメそう。


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月21日 22:09  

現在、テキスト色だけは、昨日こんな感じで作成してみました(これが作法的に良いのかわかりませんが)。
https://github.com/yhira/cocoon/blob/blocks/blocks/src/toolbutton/letter-colors.js

色つけや太字のような動作はするのですが、isActiveの「現在該当のインライン要素を選択中か」の取得方法は謎ですね…。


ロコ
(@lococo)
Reputable Member
参加: 1年 前
投稿: 417
2019年3月22日 00:22  

「Add RichText Toolbar Button」については、わいひら様がおっしゃるように

https://github.com/technote-space/add-richtext-toolbar-button/blob/master/src/classes/models/editor.php

にてツールバー用のJS(add-richtext-toolbar-button-gutenberg.min.js)が読み込まれているので、ツールバーの動作についてはそちらを読むのがよいかと。

Gutenberg公式の資源を流用しつつ…といった感じではありますが、やはり正攻法とは言えなさそうなので、少なくともしばらくはGutenbergの仕様変更についていくのが大変だと思います。

今朝、ブロックエディタのツールバーについていろいろ調べていて見つけたのですが、どうやら次回のWordPressアップデートでツールバーにも変更が加えられるようです。

https://make.wordpress.org/core/2019/03/20/whats-new-in-gutenberg-20th-march/

のEnhancementsにある、

Add a RichText collapsed format toolbar for code, inline image and strikethrough formats.

https://github.com/WordPress/gutenberg/pull/14233

とのことです。


ロコ
(@lococo)
Reputable Member
参加: 1年 前
投稿: 417
2019年3月22日 01:30  

DropdownMenuのcontrolsにはisActiveというオブジェクトが用意されていないようです。

https://wordpress.org/gutenberg/handbook/designers-developers/developers/components/dropdown-menu/

Gutenbergのテーブルブロックでは、isDisabledでテーブルセルが選択されているかどうかを取得しています。

https://github.com/WordPress/gutenberg/blob/master/packages/block-library/src/table/edit.js


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月22日 19:06  

DropdownMenuのcontrolsにはisActiveというオブジェクトが用意されていないようです。

これは、isActiveにtrueを設定すると、選択状態にできるので、値を渡してやればできるようです。


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月22日 19:08  

とりあえず、editの引数のvalueの値から、判別処理を書くと何とか「選択/解除」できるっぽいです。


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月22日 19:11  

問題は、controlsの中それぞれに、classの指定方法がちょっとわからないことです。
添付画像のように、色を指定できないので、わかりづらい…。


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月22日 19:16  

ただ、「Add RichText Toolbar Button」を見てみると、しっかりとclassが入ってスタイリングされているので、やろうと思えばできるっぽいですね。

とりあえず、現在までの進捗はこんな感じです。
あとは、classの指定方法がわかれば、完成が見えてきそうです。ちょっとプラグインのソースコードを探れればと思います。


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月22日 19:24  

もしやと思って、titleにこんなふうに書いてみたら、普通にHTML要素(class)を追加できました。


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月22日 19:28  

意外に結構なんでも出来るっぽい。
これで標準機能だけでも、なんとかやりたいことは出来そう。


ロコ
(@lococo)
Reputable Member
参加: 1年 前
投稿: 417
2019年3月22日 20:42  

わいひら様、どうやらドキュメントの方は少し古いみたいで、現在controlsには以下のオブジェクトが格納できるようです。

{
icon: string,
title: string,
subscript: string,
onClick: Function,
isActive: boolean,
isDisabled: boolean
}

https://github.com/WordPress/gutenberg/blob/148e816ed15814a08fb99ed8d329fc3ebbe72dfb/packages/components/src/toolbar/index.js

ToolbarButtonやToolbarContainerもありますが、まだコンポーネントとしては採用されていないようなので、今後の変更で新たにコンポーネントとして追加されるのかも…?

 

あと、ドロップダウン下に置く各個別ボタンの機能については、MenuItem等(MenuItem, MenuItemsChoice, or MenuGroup)でできることを確認しながら作るのがよいかもしれません。

MenuItem等でできることは大抵何とかすればDropdownMenu下でできるでしょう(ショートカットキーの設定とかも?)し、逆にMenuItem等を使った方が楽にできるパターンもあるのではないでしょうか。

https://github.com/WordPress/gutenberg/blob/e96995457dbdb80fe715bb2aab677a80b55470c8/docs/designers-developers/designers/menu-item.md

https://github.com/WordPress/gutenberg/blob/2b7085a02381e01314398303375da1486f63786a/packages/components/src/menu-item/index.js


わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月22日 22:48  

ありがとうございます。

controlsには以下のオブジェクトが格納できるようです。

subscriptも設定できるんですね。これは初めて見ました。

MenuItemは、リンク先を見る限りでは、ツールボタン右端の「3つの点」をクリックすると表示されるメニューアイテムのことでいいのかな。

とりあえず、DropdownMenuでやりたいことの材料は揃ったので、一度DropdownMenuで実装します。
その後、補足機能が必要であれば、随時書き換えていこかなと。
とりあえず、時間ができたらMenuItemのデモを作ってみて、動作を確認してみようと思います。


ロコ
(@lococo)
Reputable Member
参加: 1年 前
投稿: 417
2019年3月23日 00:06  

分かりました。

よろしくお願いします。


ぷっぷわいひら 件のいいね!
わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月24日 20:44  

最新版で、ようやく機能追加できました。
https://wp-cocoon.com/1-7-2/
この実装ができたのも、ロコさんのご協力のおかげです。
ありがとうございました!


ぷっぷ 件のいいね!
わいひら
(@yhira)
メンバーサイト Admin
参加: 2年 前
投稿: 6811
わいひら - Facebookわいひら - Twitter
2019年3月24日 20:45  

次は、カラムレイアウト機能を出来ればと。

まずは調べるところからですが^^;


Share:
スポンサーリンク
わいひらをフォローする
おすすめサーバ

性能も兼ね備えながら安くブログ運営を開始したいのであればここ1択。

◎LiteSpeedを用いた高速サーバー(完全SSD)
◎http/2・QUIC(高速化プロトコル)に対応
◎東京・大阪でリージョン選択が可能
◎プランのアップ・ダウングレードが自由自在
◎同サービス内でドメイン管理が可能
◎転送量が多い
◎毎日無料バックアップ(14日分)
◎復元ポイントを指定して復旧可能(無料)
◎アダルト・出会い系サイト可
◎ドメインとサーバー代のチャージ払いが可能
○サーバ引っ越しオプションあり(有料)
サービス運営期間:1年2ヶ月

1年以上の契約をする場合は、クーポンコード入力でさらに10%割引(※2019/12/31まで)。

クーポンコード:PK4JK4RJ

クーポンの使用方法はこちら

プラン変更で負荷対策が行えるので、ブログ向きのレンタルサーバーです。

◎LiteSpeedを用いた高速サーバー(完全SSD)
◎http/2・QUIC(高速化プロトコル)に対応
◎プランのアップ・ダウングレードが自由自在
◎転送量が多い
◎毎日無料バックアップ(14日分)
◎復元ポイントを指定して復旧可能(無料)
◎アダルト・出会い系サイト可
○サーバ引っ越しオプションあり(有料)
○サーバー料金をチャージ払いが可能
サービス運営期間:3年

安定感抜群のサーバーです。あまり急激なアクセス変動がないアフィリエイトサイトに向いています。

◎nginxを用いた高速サーバー(完全SSD)
◎老舗サーバーなので安定感抜群
◎ディスク容量が多い
◎転送量が多い
◎同サービス内でドメイン管理が可能
○http/2(高速化プロトコル)に対応
○毎日無料バックアップ(14日分)
△DBは7日分だけ無料復旧可能(ファイルは有料)
×プラン変更でCPUのスペックアップができない
×プラン変更しても即時反映されない
×アダルト・出会い系サイト不可
サービス運営期間:16年

とにかく速い。サイトに表示スピードを求めるならココ。

◎nginxを用いた高速サーバー(完全SSD)
◎プランのアップ・ダウングレードが自由自在
◎ディスク容量が多い
◎転送量が多い
○http/2(高速化プロトコル)に対応
○毎日無料バックアップ(14日分)
○DB復旧は無料(ファイルは有料)
○サーバ引っ越しツールあり
○サーバー料金をチャージ払いが可能
△新しいサービスなので運営櫪がまだ短い
サービス運営期間:1年

格安な値段で始められる高機能サーバーです。
性能も備えつつ最安ならここ。
サイトを続けるうちにアクセスが増えれば、プランのアップグレートで対応可能です。

◎LiteSpeedを用いた高速サーバー(完全SSD)
◎激安プランが用意してある
◎値段あたりのスペックが高い(コスパ良し)
◎サーバ引っ越しオプションあり(無料)
◎アダルト・出会い系サイト可
○http/2(高速化プロトコル)に対応
△プランのアップは可能だがダウンは不可
△毎日自動バックアップ(1日分)
△前日のバックアップからのみ復元できる(無料)
サービス運営期間:3年

Cocoon
  
動作中

ログイン または 登録 してください

タイトルとURLをコピーしました