Viewsで取得したコンテンツのリンクをen/node1、ja/node1のように各言語のリンクに変更する方法

Events happening in the community are now at Drupal community events on www.drupal.org.
kenkun's picture

お世話になります。質問内容は以下の通りです。実装案を考えてみたのですが、もっと良い方法があればご教授ください。よろしくお願いします。

[環境]
Drupal8をルートディレクトリにインストールしています。
サイトのデフォルト言語は日本語を設定しています。英語や中国語等の多言語対応をしています。
ユーザーが使用するコンテンツタイプの言語設定は未設定にしています。

[やりたいこと]
ユーザーインタフェースのみ多言語した会員制サイトを構築しようとしています。
Viewsで各ユーザが投稿したコンテンツを表示し、該当言語のパスへリンクするようにしたいです。

例えば、Viewsでコンテンツのタイトルを取得するとタイトルのリンクはnode/1のようになります。

sample.con/enから上記のタイトルのリンクを押下すると、
sample.com/node/1に遷移しユーザインタフェースはデフォルト言語の日本語で表示されてしまいます。

sample.con/enから上記のタイトルのリンクを押下すると、
sample.com/en/node/1に遷移するようにしたいです。

[実装案]
Viewsでフィールドのコンテンツ: パスを表示するようにする。
そしてし、結果の書き換えで以下を設定する。
各言語毎にViewを作成し配置する。

・Override the output of this field with custom text
テキスト
read more

・Output this field as a custom link
リンクパス
/en{{ path }}

Comments

誤記訂正

kenkun's picture

× sample.con/en
○ sample.com/en

shumpei's picture

こんにちは。各言語毎にViewを作成する必要はないと思います。確認してみたところ、コンテンツ:パスのフィールドを表示させると、自動的に/en/,/ja/ 等追加されているようです。

つきましては、例えばのタイトルリストをリンク付きで表示させたい場合には、以下の通りです。

1、Viewsでフィールドのコンテンツ:パスを表示させる。この時、”表示から除外”にチェックを入れて下さい。
2、コンテンツ:タイトルを表示させる。ここで、”結果の書き換え”から、Output this field as a custom linkにチェックを入れ、リンクパスに{{ path }}と入力してください。
3、保存して確認すると、記事のタイトルに各言語のページへのリンクが貼られているはずです。

kenkun's picture

ありがとうございます。1~3の手順を試してみましたが想定した結果は得られませんでした。

コンテンツ:パスの”表示から除外”のチェックを外して内容を確認してみると、たしかに、自動的に/en/,/ja/が追加されていました。ただ、同じことをしているはずのコンテンツ:タイトル側のリンクは自動的に/en/,/ja/が追加されないようです。

とっかかりは掴めた気がしますので後は自分で試行錯誤してみます。別のフィールドでも置換トークンが使えることは知らなかったため大変勉強になりました。ご回答いただきありがとうございました。

kenkun's picture

暫定対処として以下のようにしました。初歩的なことかもしれませんが、誰かの参考になれば幸いです。

1、Viewsでフィールドのコンテンツ:パスを表示させる。
Override the output of this field with custom textにチェックをする。
テキストに任意の文字を入力する。

Output this field as a custom linkにチェックをする。
リンクパスに"{{ path }}"を入力する。

2、その他に追加しているフィールドのリンクを外す。
以下のフィールドを表示するようにしているのですが、タイトルと画像のリンクを外しました。
コンテンツ: タイトル
コンテンツ: 変更済
コンテンツ: 画像
コンテンツ: パス

shumpei's picture

タイトルフィールド編集画面、フォーマッターの下にある、「 %entity_label へのリンク」(英: Link to the Content)のチェックは外してありますでしょうか。(すみません、上に書いておくべきでした。)

ここにチェックが入っていると、Output this field as a custom linkでの書き換えが機能しないようです。画像へのリンクにつきましても、同様に「画像へのリンク」を「なし」に設定し、Output this field as a custom linkで{{ path }}を設定してみてください。

また、置き換えトークンは参照するフィールドが、すでに呼び出されてなくてはならないので、例えば、タイトルと画像の書き換えにパスを使いたい場合には、
コンテンツ: パス [非表示]
コンテンツ: タイトル
コンテンツ: Image
のように、フィールドの「並べ替え」でパスを最初に持ってくる必要がありますので、ご留意ください。

kenkun's picture

Shumpei様

丁寧にご説明いただき誠にありがとうございます。「 %entity_label へのリンク」を外し、「画像へのリンク」を「なし」に設定することで自動的に/en/,/ja/等が追加されるようになりました!

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: