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カスタマイズ依頼

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

Cocoonインラインを複数用いたとき...
 
共有:
通知
すべてクリア

[解決済] Cocoonインラインを複数用いたときの不具合

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

1か所に複数のCocoonインラインを用いた場合、インラインのactive判定に不具合が見られます。
具体的には、複数のCocoonインラインが使用されているにもかかわらず、ひとつのCocoonインライン(一番外側を囲うタグ?)しかactiveと判定されていません。

以下に例を示しておきます。

画像にある例:

  1. デフォルトインラインの太字+イタリックで装飾した場合
  2. Cocoonインラインの赤色+黄色アンダーラインマーカーで装飾した場合

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

デフォルトインラインで複数装飾した場合は、用いたそれぞれの装飾がactiveと判定されます。


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

Cocoonインラインで複数装飾した場合、ひとつはactiveと判定されています。


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

しかし、用いているはずの別の装飾はactiveと判定されていません。


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

※HTMLで見ると、より外側を囲うタグ「黄色アンダーラインマーカー」がactiveと判定され、内側を囲うタグ「赤色」はactive判定されていない。


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

active判定されているインライン(=黄色アンダーラインマーカー)を外すと、別の装飾インライン(=赤色)がactive判定になります。


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

それなんですが、以下のようにボタンで判定するのであれば、以下のようなコードでできました。
https://notepad.pw/code/j20uqnro

けれど、ドロップダウンで行うとなると、editの引数?みたいなものから、isActiveが取得できなくて、ちょっとどうやって良いのかわかりませんでした。
※取得できたとしても、ドロップダウンのルートのisActiveしか取得できないぽかったので。
こんな感じで無理やりやっています。
https://notepad.pw/code/p2x6aykzk


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

RichTextToolbarButtonでないと、正確なActive判定が取得できないということなのですね。

Gutenbergでは、各種インラインボタンをRichTextToolbarButtonで用意し、BlockFormatControlsで一部除いたボタンのドロップダウン化を行っているようです。

そのままRichTextToolbarButtonを用いるだけだとデフォルトのドロップダウン内に格納されてしまうと思うので、「新たなBlockFormatControlsの中に、RichTextToolbarButtonで作成したCocoonインラインボタンをドロップダウン化させて入れる。」みたいな方法ではできないでしょうか?


【追記】

この方法だと、

RichTextToolbarButtonで作成した…

は、ToolbarButtonを用いたRichTextToolbarButtonと同様の関数を用意して作成する必要があるかもしれませんね。


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

ということは、DropdownMenuは使用しないでドロップダウン化するということでしょうか。
DropdownMenuコンポーネントを使うと、controls属性に配列を指定することになるのでどうしてもできないような気がします。
サンプルでも、isActiveを指定する方法がなくて、現在は無理やりやっている感じです。
https://wordpress.org/gutenberg/handbook/designers-developers/developers/components/dropdown-menu/

「BlockControlsもしくはBlockFormatControls」と「DropdownMenu」と「RichTextToolbarButton」を組み合わせる方法があるのだろうか。
ただ、以下に書かれているテーマは多分当テーマだと思うので、何かしら方法はあるのだと思います。
https://technote.space/wordpress/add-dropdown-to-richtext-toolbar

方法があるということがわかっただけでも収穫です。
とりあえず、自分でもいろいろ試してみたいと思います。
ただ、現在フォーラムに書き込みが多くて、その対応だけで手一杯だったりします。
この不具合は、そこまで重大な不具合ではないので、時間ができてからの対応になるかもしれません。。


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

この不具合は、そこまで重大な不具合ではないので、時間ができてからの対応になるかもしれません。。

発見した不具合を書き込んだだけので、後回しでも大丈夫です。


前回の返信内容で詳しくまとめたつもりだったのですが、私はツールバーのボタン周辺の自作をまだきちんとしたことがないので言葉足らずだったかもしれません。

なので、より細かい説明を加えておきます。

 

DropdownMenuは使用しないでドロップダウン化するということでしょうか。

いいえ、DropdownMenuは使用します。

 

まず、WordPress5.2からFormatToolbarが部分的にドロップダウン化されることは、以前「インラインブロックについて(insertObject)」で少し触れましたが、前回の返信でまとめた以下のリンク集がこのドロップダウン周りのコードとなっています。

スマートな方法かどうかは分かりませんが、このコードを参考に作成することでisActive判定の問題は解決できると思いました。

 

次に、コードについて要点の解説を加えておきます。

もっとも重要なのはおそらく「FillとSlot」で、今のところ「対となるFillとSlotについて、FillでラップされたものをPropsまで含めた形でSlotに受け渡すことができる(=呼び出し箇所をSlotで指定できる)」みたいな認識です。

RichTextToolbarButton」と「FormatToolbar」のコードを見れば分かるように、FillからSlotへPropsを受け渡すことで、各々のRichTextToolbarButtonをひとまとめにするドロップダウン化が実現しています。

 

最後に、上で挙げたコードをもとにしたサンプルコードを添付しておきます。
朝一でとりあえずisActive判定を確認しただけなのでかなり適当です。

toolbar-button.jsではRichTextToolbarButtonで公式のドロップダウン内に格納されてしまうのを避けるために同様のコンポーネントを用意しており、cocoon-buttons.jsで各ボタンを実装、cocoon-dropdown.jsで実装されたボタンをBlockFormatControlsにてまとめてドロップダウン表示しています。
あとはcocoon-buttons.jsとcocoon-dropdown.jsをimportしたものをビルドする感じで。


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

僕がいまいち理解しておらず、お手数をおかけして恐縮です。
ただ、コードを拝見して、今の自分からは出てこないコードだと思いました。理解不足的な意味で。
その点、サンプルコードをいただいたおかげである程度は理解することができました。
そのおかげで、多分修正することができたかと思います。
https://github.com/yhira/cocoon
ありがとうございます!
多分、僕では無理だったと思うので本当に助かりました。

1つ、β版のGutenberg(5.6.1)だと、まだ<s>タグのツールボタンに対して、spanのときのようなエラーが出ますね。

Format "cocoon-blocks/strike" is already registered to handle bare tag name "s".

これも、spanと同様に直れば良いなと。それとも本当に不具合なのか。
とりあえず、spanの時と同様、問題なく動作はするようですけど。


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

まだ<s>タグのツールボタンに対して、spanのときのようなエラーが出ますね。

これはCocoon側の問題かと。

Gutenberg公式でsタグ用のフォーマットが用意されており、Cocoonのsタグ「打ち消し線(訂正)」と重複していることからエラーが出ています。
(CocoonではGutenberg公式の「取り消し線」が表示されない。)

このエラーはもともとフォーマットの重複を防ぐために用意されたもので、class名を含むspanタグ等の重複判定に問題があった部分に修正が入ったようなので、挙動から考えると「重複するフォーマットは登録しないようにしましょう。」ということなのだと思います。


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

いつの間にか「del → s」に仕様変更があったんですね。
WordPressデフォルトはずっとdelタグななのだと思い込んでいました。
sに変わったのであれば、本来欲しいタグだったので、テーマの方は削除しておこうと思います。
削除したものはこちら。
https://github.com/yhira/cocoon


   
返信引用
共有:

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

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

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

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

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

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

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

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