web-dev-qa-db-ja.com

お問い合わせフォームからコンテンツ翻訳リンクを削除する

作業中のサイトの問題を診断するのに苦労しています。多言語サイトではデフォルトでDrupalは「コンテンツ翻訳リンク」をノードの下部に配置します。言語スイッチャーブロックを優先してコンテンツ翻訳リンクを無効にしました。ただし、連絡フォームでは連絡モジュールから、フォームの下部にコンテンツ翻訳リンクのように見えます(下のスクリーンショットを参照)。

screenshot of contact form

スクリーンショットでは、不要な翻訳リンクに#1、言語スイッチャーブロックに#2のラベルが付いています。

/ admin/settings/language/i18nの下にある「コンテンツ翻訳リンクを非表示にする」を選択しましたが、これは何らかの理由でお問い合わせフォームには当てはまらないと思います。

これまでのところ、page.tpl.phpからprint $contentを削除するとリンク(もちろん、連絡先フォーム自体)が削除されるため、これらのリンクが$ content変数を介して渡されていると推測できました。姿を消す。また、リンクはお問い合わせフォーム自体の一部として扱われているようです。パネルサイトの連絡先ページのオーバーライドを使用しようとしたとき、連絡先フォームウィジェットを追加するたびにリンクが含まれていました。

これが多分「ローカライズ」されている(意図しないしゃれを許す)質問である場合はお詫びしますが、お問い合わせフォームのページからこれらのコンテンツ翻訳リンクを削除する方法を理解するための支援があれば、大歓迎です。一方では、これが予想されるデフォルトの動作であることを強く疑っています。そのため、設定を誤って設定したり、どこかで設定を見落としたりしたように感じます。しかし、同時に、考えられる限りのすべてを調べてきたので、途方に暮れています。

4
Jay

これがお問い合わせフォームの問題のみの場合は、hook_form_alterまたはcssを使用してリンクを削除できる場合があります。

1
googletorp

Drupal 7を使用する場合、hide($content['language']);をnode.tpl.phpに配置できます。

2
Lucian Neghina

そのボタンを非表示にしたい場合は、 CSS Injector モジュールを使用して、そのデータに適用するCSSクラスを作成し、display:none !important。 Drupalフックを使用する必要はありません。

2
Manuel

これはDrupal 6の問題だけでなく、Drupal 7でも同じ問題があり、解決してこのディスカッションが見つかるまで続きました。私の解決策はtemplate_preprocess_node()を実装することでした。 template.phpで、$variables['content']['links']['translation']を設定解除します。

Laxmanとは異なり、node.tpl.phpの$content['language']にデータが見つからず、そのような変数が存在するとは思わない。 var_dump($content['language']);でこれを試すことができ、空の結果が得られます。ただし、var_dump($content['links']['translation']);を使用すると、現在のノードがどの言語に翻訳されているかに関する情報を含む配列になります。

Drupal APIの translation_node_view について読むことから多くの助けが得られました。

1
tscok