ログイン後のテキストボックス側に入力文字数を出したい  【解決済み】

質問全般・改善要望
modx_beginner
メンバー
メンバー
記事: 20
登録日時: 2014年7月16日(水) 19:39

ログイン後のテキストボックス側に入力文字数を出したい

投稿記事by modx_beginner » 2019年11月19日(火) 19:57

お世話になります。
MODX利用して間もない者です。

もともとワードプレスを利用していた便利だと思った機能に
テキストボックスのそばに「入力文字数」を出力されていました。

modxでは同様の機能はありますでしょうか。
また何かプラグインなどがあるのでしょうか。

宜しくお願い致します。

[環境]
エックスサーバー
1.0.20J
PHP Version 7.1.18
添付ファイル
2019-11-19_19h40_33.png
2019-11-19_19h40_33.png (6.1 KiB) 閲覧数: 3728 回
mod_kks
メンバー
メンバー
記事: 30
登録日時: 2017年11月04日(土) 01:31

ログイン後のテキストボックス側に入力文字数を出したい  【解決済み】

投稿記事by mod_kks » 2020年2月20日(木) 03:28

投稿から随分時間が経ってしまったようなので、ご覧になっているかどうかわかりませんが、MODxならではの比較的簡単な方法を一つ。

tinymceのプラグインにwordcountというものがあり、tinymceを使うCMSで文字数カウントがあるものはたいていこのプラグインによるものだと思います。tinymceバージョン3系はwordcountプラグインもあるにはあるのですが、文字通り単語を数えるもののようで、思ったものとは違う感じになると思います。また、カスタムプラグインやボタン設定の読み込みがイマイチなので、プラグイン追加ではなくカスタムパラメタを使ったMODxならではの手抜きで力技な方法を紹介してみます。

エレメント管理→プラグイン→tinymceと進み、設定タブ内の「Custom Parameters」の中に以下を差し込みます。

コード: 全て選択

setupcontent_callback: function(editor_id, body, doc){
  tid = editor_id + '-word-count'
  wid = this.getParam('wordcount_target_id')
  if (!wid) {
    row = tinymce.DOM.get(editor_id + '_path_row')
    if (row) {
      tinymce.DOM.add(row.parentNode, 'div', {'style': 'float: right'},
      '文字数 ' + '<span id="' + tid + '">0</span>')
    }
  } else {
    tinymce.DOM.add(wid, 'span', {}, '<span id="' + tid + '">0</span>')
  }
  this.onLoad.add(function(ed) {
    tid = ed.id + '-word-count'
    tc = ed.getContent({ format: 'text' }).replace(/\s/g, '').length
    tinymce.DOM.setHTML(tid, tc.toString())
  })
  this.onKeyUp.add(function(ed, e) {
    tid = ed.id + '-word-count'
    tc = ed.getContent({ format: 'text' }).replace(/\s/g, '').length
    tinymce.DOM.setHTML(tid, tc.toString())
  })
}

こんな感じで放り込むと、wordcountプラグインと同じ所に、なんちゃって文字数カウンターらしきモノが出ます。
ここの設定でsyntaxエラーなものを放り込むとtinymceが動かなくなるので注意が必要ですが、その場合は一旦「Custom Parameters」を空にすると元に戻ります。
modx_beginner
メンバー
メンバー
記事: 20
登録日時: 2014年7月16日(水) 19:39

ログイン後のテキストボックス側に入力文字数を出したい

投稿記事by modx_beginner » 2020年7月09日(木) 13:49

ご確認いただきありがとうございました。早速試してみたく思います。