Cocoonフォーラム

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

何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。

不具合・カスタマイズ対象ページのURL:

相談内容:

不具合の発生手順:

解決のために試したこと:

※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:

※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。

環境情報の取得方法はこちら。
https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
https://wp-cocoon.com/theme-trouble/

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

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

フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。

ブロックエディターツールボタンのドロッ...
 
共有:
通知
すべてクリア

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

28 投稿
2 ユーザー
14 Reactions
5,613 表示
ろこ
(@lococo)
Prominent Member Registered
結合: 7年前
投稿: 830
Topic starter  

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

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

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

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

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

 

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

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


   
pono reacted
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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

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

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

https://notepad.pw/code/f3r2542c3

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

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


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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

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


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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

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

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

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


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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


   
ろこ
(@lococo)
Prominent Member Registered
結合: 7年前
投稿: 830
Topic starter  

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

 

まずドロップダウン化の方ですが、示していただいている『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のもので統一しようかと考えていたのですが、カラムは公式ブロックのみならそれでも私は構いません。


   
pono and わいひら reacted
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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

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


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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

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

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


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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

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


   
ろこ
(@lococo)
Prominent Member Registered
結合: 7年前
投稿: 830
Topic starter  

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

 

私も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点ではないかと思います。


   
pono and わいひら reacted
ろこ
(@lococo)
Prominent Member Registered
結合: 7年前
投稿: 830
Topic starter  

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


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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

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

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

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


   
ろこ
(@lococo)
Prominent Member Registered
結合: 7年前
投稿: 830
Topic starter  

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

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

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

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

 

わいひら様が示された

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

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

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

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


   
pono and わいひら reacted
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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

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

ちなみに、実際に試してはいないので詳しくは分かりませんが、『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)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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

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


   
ろこ
(@lococo)
Prominent Member Registered
結合: 7年前
投稿: 830
Topic starter  

「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

とのことです。


   
pono reacted
ろこ
(@lococo)
Prominent Member Registered
結合: 7年前
投稿: 830
Topic starter  

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


   
pono reacted
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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

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


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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

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


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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


   
ろこ
(@lococo)
Prominent Member Registered
結合: 7年前
投稿: 830
Topic starter  

わいひら様、どうやらドキュメントの方は少し古いみたいで、現在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


   
pono reacted
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

ありがとうございます。

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

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

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

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


   
ろこ
(@lococo)
Prominent Member Registered
結合: 7年前
投稿: 830
Topic starter  

分かりました。

よろしくお願いします。


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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


   
ぷっぷ reacted
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17211
 

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

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


   
共有:

問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。

また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。

「いいね!」機能はフォーラム登録者のみが利用できる機能です。

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

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

最近の書き込みはこちら。

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

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