レンダリングしたフィールドラベルからコロンを削除できるようにしたいだけです。次に例を示します。
ホテル名:ホテル名へ
私はfield.tpl.phpをコピーしてそこでコロンを削除しましたが、Drupalがそれを受け入れることを拒否し、他の場所からコロンを引っ張っています。
template.php関数でこれを行うにはどうすればよいですか?
theme_form_element()
てください。これを行うには上書きする必要があります
レンダリングしたフィールドラベルからコロンを削除できるようにしたいだけです。次に例を示します。
ホテル名:ホテル名へ
私はfield.tpl.phpをコピーしてそこでコロンを削除しましたが、Drupalがそれを受け入れることを拒否し、他の場所からコロンを引っ張っています。
template.php関数でこれを行うにはどうすればよいですか?
theme_form_element()
てください。これを行うには上書きする必要があります
回答:
答えは間違いなくfield.tpl.phpを使用することです。そのファイルのソースを見ると、問題のある行を確認できます。
<?php if (!$label_hidden): ?>
<div class="field-label"<?php print $title_attributes; ?>>
<?php print $label ?>:
</div>
<?php endif; ?>
(分かりやすくするために、スペースとインデントの鉱山)。
コロンの削除は、上記の行を次の行に置き換えるだけです。
<?php if (!$label_hidden): ?>
<div class="field-label"<?php print $title_attributes; ?>>
<?php print $label ?>
</div>
<?php endif; ?>
私はそれを空のDrupalインストールでテストしたところ、完全に動作しました。フィールドラベルの後のコロンは不要です。
既に同じことを行っているが、正しい結果が得られない場合は、1つまたは2つの問題が考えられます。
コロンはテンプレートファイルにハードコードされているため、テンプレートの前処理関数で変更を加えることはできません。
私の場合、関数全体をファイルにコピーし、読み取る行を変更することにより、theme_field()
(field.module
)をオーバーライドすることで機能しましたtemplate.php
$output .= '<div class="field-label"' . $variables['title_attributes'] . '>' . $variables['label'] . ' </div>';
試行する前にキャッシュをクリアしてください。
Drupal 8に関するこの質問への回答はどこにも見つかりませんでした。Drupal 8では、コロンは、ベーステーマとして使用している場合、ClassyコアテーマのCSSファイル(field.css)で追加されます。あなたがしなければならないすべてはあなたのテーマのあなた自身のCSSファイルでそれを上書きすることです。
元のfield.cssファイルから:
.field--label-inline .field__label::after {
content: ':';
}
コロンを削除する私のテーマのCSSファイル:
.field--label-inline .field__label::after {
content: '';
}