回答:
CSSではなく、テキスト領域のサイズを変更できるのはJSです。すべてのテキストエリアでこの動作を無効にする最も簡単な方法THEMENAME_textarea()
は、テーマに実装してそこから削除することだと思います:
function THEMENAME_textarea($element) {
$element['element']['#resizable'] = false ;
return theme_textarea($element) ;
}
unset($element['#resizable']);
です$element['#resizable'] = false;
。代わりに試してください。そのためのコードを見ると、theme_textarea()
確実に機能するはずです
$element
という配列が含まれelement
、これは働いていたように、: $element['element']['#resizable'] = false;
テーマでこれをオーバーライドするのはギリギリの変更であり、モジュールが反応する機会はありません。
これは、モジュールと#process
コールバックを使用して簡単に実行できます。
/**
* Implements hook_element_info_alter()
*/
function custom_element_info_alter(&$types) {
$types['textarea']['#process'][] = 'custom_process_textarea';
}
/**
* A custom callback to disable "grippies" on textareas.
*/
function custom_process_textarea($element) {
$element['#resizable'] = FALSE;
return $element;
}
これにより、Wysiwygのようなモジュールは、textareaにグリッピーが含まれていないことに気付く機会が与えられるため、エディターを無効にするときにその動作をアタッチすることを回避できます。
これをテーマに実装します。これにより、が強制さ#resizable
れFALSE
、JSおよびマークアップがレンダリングされなくなります。
/**
* Implements template_preprocess_textarea().
*/
function THEME_preprocess_textarea(&$variables) {
// Hide grippie.
$variables['element']['#resizable'] = FALSE;
}
受け入れられた答えは近いですが、theme_ *関数は、意図せずにプロセス/前処理関数をバイパスする可能性があるため、直接呼び出さないでください。
Disable Resizable Textareaと呼ばれる新しいモジュールがリリースされました。
これは、textareaフィールドのデフォルトの#resizableプロパティをオーバーライドする機能を追加する単純なモジュールです。デフォルトでは、すべてのテキストエリアはサイズ変更可能です。このモジュールでは、各フィールドでこの機能を無効にすることができます。
セットアップはとても簡単です。目的のフィールドを編集するだけで、「このテキストエリアの#resizableプロパティを無効にする」オプションが表示されます。フィールドのタイプが「要約付きの長いテキスト」の場合は、要約からサイズ変更可能を無効にすることもできます。
ノードまたはコメントのフォーム変更を行うことができます。
以下のサンプルコードとコメントを確認してください。
$form['body'][LANGUAGE_NONE][0]['value']['#resizable'] = FALSE;
mozillaとchromeについては、まだ問題が見られます。CSSハックを配置します。
textarea {
resize: none;
}
私も最近この問題を解決していて、次の2つの解決策を見つけました。
まず一番好きなもの:テーマの中でこのコードを使用するtemplate.php
と、すべてのグリッピーとtextarea.jsが消えます:
/**
* Override of theme('textarea').
* Deprecate misc/textarea.js in favor of using the 'resize' CSS3 property.
*/
function THEMENAME_textarea($variables) {
$element = $variables ['element'];
element_set_attributes($element, array('id', 'name', 'cols', 'rows'));
_form_set_class($element, array('form-textarea'));
$wrapper_attributes = array(
'class' => array('form-textarea-wrapper'),
);
$output = '<div' . drupal_attributes($wrapper_attributes) . '>';
$output .= '<textarea' . drupal_attributes($element ['#attributes']) . '>' . check_plain($element ['#value']) . '</textarea>';
$output .= '</div>';
return $output;
}
THEMENAMEをテーマ名に変更し、すべてのキャッシュをフラッシュすることを忘れないでください。
第二の方法は、モジュールをインストールすることで無効にサイズ変更可能なテキストエリアを、私はできるだけ低いとしての私のインストールでモジュールの数を維持しようとします。
theme('textarea')
、または無限ループが発生することに注意してください。theme_textarea()
または、別のモジュールからの代替として設定されているテーマ関数を呼び出す必要がありtheme_textarea()
ます。