View の分類用語があり、何らかの理由で用語のフィールドを上書きし、「このフィールドをリンクとして出力」を使用して「手動」でリンクする必要があります。画面に出力する前に transliteration プロセスを通じて '[name]'トークンを処理するにはどうすればよいですか?
ここに私のために働いた回避策があります。
前提条件:Pathautoおよび文字変換モジュール。
これにより、リンクHTMLを作成できるテキストボックスが表示されます。例えば:
<a href='PUT-YOUR-PATH-HERE/[field_cleaned_name]'>[name]</a>
次に、hook_views_pre_renderを実装します。名前を取得し、pathauto_cleanstringを実行して、cleaned_nameフィールドに保存するという考え方です。私は次のコードを使用しました:
function YOUR_MODULE_NAME_views_pre_render(&$view) {
if ($view->name == "MACHINE_NAME_OF_YOUR_VIEW") {
//dpm($view->result); INSTALL DEVEL MODULE AND UNCOMMENT THIS IF YOU NEED TO SEE WHAT FIELD NAMES TO USE
module_load_include('inc','pathauto');
foreach($view->result as $key => &$result) {
$cleaned_name = pathauto_cleanstring($result->taxonomy_term_data_name);
$result->field_field_cleaned_name[0]['rendered']['#markup'] = $cleaned_name;
} // End of FOREACH statement
unset($result);
}
}
分類にフィールドを追加して、文字変換されたバージョンのフィールドを返す場所を用意するのは、少し醜いです。私が試したもう1つの方法は、nameautoフィールドをビューに2回追加することでした。その1つだけをpathauto_cleanstringで実行し、クリーンなバージョンとクリーンされていないバージョンの両方をトークンとして使用してリンクを構築することを考えました。ただし、これは機能しませんでした。用語名フィールドをビューに2回追加でき、ビューは2つのトークン([name]、[name_1])を作成しますが、バックエンドでは両方のトークンが同じフィールドを指します。このフィールドを変更すると、両方のトークンが変更された値を出力します。
私が試したもう1つの方法は、hook_views_pre_render関数内にリンクhtmlを作成し、それを使用して$ result-> taxonomy_term_data_nameの値を上書きすることでした。これにより、分類にフィールドを追加する必要がなくなります。ただし、ここでの問題は、ビューがHTMLを表示するときにHTMLをエスケープすることです。これを回避する方法を見つけることができませんでした。