0

ノードプレビューごとに、利用可能な翻訳を表す小さなフラグアイコンを上部に配置したいと思います。言語スイッチャーコードを見たことがありますが、常にすべての言語を出力します。人々が自分の言語をクリックすると、とにかくページが英語でしか利用できないことに気付くので、それは迷惑です(私は多種多様な言語の多くの記事があるサイトを持っています)。私はこれが行われるのを見ました。私はDrupalプログラミングに比較的慣れていません。誰かが私にポインタを与えることができますか?

ありがとう!

4

1 に答える 1

0

この問題を抱えているのは私だけではないことを知っているので、自分でそれを理解しました。

私が取り組んでいるテンプレートは scaccarium と呼ばれているので、/ themes /scaccarium/template.php に移動して、次の関数を追加しました。

function scaccarium_preprocess_node(&$vars) {
  $node = $vars['node'];
  $translationlinks = array();
  // Move translation links into separate variable
  foreach ($node->links as $key => $value) {
    if ($value['attributes']['class'] == 'translation-link') {
      $translationlinks[$key] = $value;
      // unset($vars['node']->links[$key]);
    }
  }
  $vars['translationlinks'] = theme('links', $translationlinks, array('class' => 'links translationlinks inline'));
}

テンプレートが別の名前である場合は、明らかに別のフォルダーに移動し、関数名の最初の単語も変更する必要があります。また、テーマに既存の _preprocess_node 関数が付属している場合は、慎重に変更してください。

次に、テンプレートのnode.tpl.phpに移動し、追加しました

<?php if ($translationlinks) {
            print $translationlinks;
      } ?> 

タイトルの横。

次に、これを機能させるために、[パフォーマンス] > [キャッシュ] で Drupal キャッシュをクリアする必要がありました (キャッシュが無効になっていても!)。

終わり!

...完全なノードの上部に言語リンクを追加するには、node.tpl.php の別の場所にも別の「print $translationlinks」を追加する必要がありました。これは、h3 タイトルがノード プレビュー用であったためです。次に、完全なノードの下部にある冗長な言語リンクを削除するために、template.php でコメントアウトされている未設定の行を試しました。別の Web サイトが推奨していたにもかかわらず、効果がないことがわかりました。だから私がやったのは、これにCSSを使用し、テンプレートのCSSファイルに次を追加することでした:

.node-links .translation-link {
  display: none;
}

私の経験が同じ問題を抱えている他の誰かに役立つことを願っています。

于 2012-05-12T18:29:02.583 に答える