0

検索結果を作成するために、ページへのパスが格納されるチャネル フィールドがあります (例: /products/bikes)。各エントリには独自のパスがあります。

さまざまなチャネルがあるため、すべてのチャネルには一意の名前のチャネル フィールドがあります。チャネル「製品」の場合: {products_search_path_nl}.

結果ページ内で{exp:search:search_results}、フィールドは次のように動的に作成されます:{channel_short_name}_search_path_{language}として表示されproducts_search_path_nlます。

問題は、解析されないことです。私が試したEEの解析順序を見た後:

  • スニペットとして使用する
  • それをPHP変数に割り当て、後で出力する
  • PHP 解析段階の変更 (入力/出力)
  • テンプレートを使用して埋め込む{embed="search/uri_embed"}
  • テンプレートとテンプレート変数を使用して埋め込む{embed="search/uri_embed" passed_var="{channel_short_name}"}
  • 単純な条件ステートメント内で使用する{if "1" == "1"}

読んでくれてありがとう!どんな助けでも感謝します!

4

2 に答える 2

1

これ{channel_short_name}は、すべてのカスタム フィールドが同じループに存在するため、同時に解析されるためです。解析する理由{language}は、(私は推測していますが) それは早期に解析されたグローバル変数であり、多言語モジュールによって動的に設定されるか、構成設定を介して設定されるためです。

{channel_short_name}また、embed も機能しますが、との両方を渡し、{entry_id}結果ごとに Channel Entries ループ全体を実行する必要があるため (例: {exp:channel:entries channel="{embed:channel_short_name}" entry_id="{embed:entry_id}" limit="1" disable="member_data|pagination|categories"}{{embed:channel_short_name}_search_path_{language}}{/exp:channel:entries})、非常にコストがかかります。

複数のチャネル多言語からの検索結果を処理するための推奨される方法は、サイト パスを動的に変更する多言語ソリューションを使用することです (したがって、すべての変数{path=""}{permalink="}変数は現在の言語の適切な URL を返します)。次に、検索結果を使用します。コントロール パネルの各チャネルのパス設定 ( [管理] → [チャネル管理] → [チャネル] → [編集] → [パス設定] )。これにより、検索結果で{auto_path}and/or変数を使用できるようになります。{id_auto_path}

それが役立つことを願っていますか?

于 2012-10-09T16:51:15.167 に答える
0

Low の提案のおかげで、ループを使用しました。これは、適切な方法で解決することが不可能に思えるためです。

    {if "{channel_short_name}" == "news"}
        {if "{news_search_path_{language}}" != ""}
            <h3><a href="{base_url}{news_search_path_{language}}{url_title}">{title} </a></h3>
            {excerpt}
        {/if}

    {if:elseif "{channel_short_name}" == "products"}    
        {if "{products_search_path_{language}}" != ""}
            <h3><a href="{base_url}{products_search_path_{language}}{url_title}">{title} </a> </h3>
            {excerpt}
        {/if}

     // ....... and so on
于 2012-10-10T08:30:13.677 に答える