簡體   English   中英

在樹枝/木材中突出顯示搜索結果中的搜索詞

[英]Highlight search terms in search results in Twig/Timber

我正在使用這個問題的答案Twig高亮單詞(Timber插件)來更新該功能以在更新的Timber / Twig 2過濾器結構下工作。

但是我收到一個錯誤,“傳遞給{closure}()的參數2必須是數組類型,給定null”。

所以我知道我需要將搜索項傳遞給函數。 我怎么做?

是否可以在search-results.twig模板上從{{ search_query }}獲取搜索詞?

還是我可以從search.php以及該文件中的“ context”調用中獲得的全局搜索術語,即$context['search_query'] = get_search_query();

我需要in search-results.twig中以標准方式使用過濾器,例如{{ content|highlight }}因為我在搜索結果標題和內容中有單獨的字段,並且希望突出顯示每個字段中的術語。

此功能functions.php目前拋出上面提到的錯誤:

add_filter('timber/twig', function($twig) {
   $twig->addExtension(new Twig_Extension_StringLoader());

   $twig->addFilter(
     new Twig_SimpleFilter(
       'highlight', 

function($text, array $terms) {

    $highlight = array();
    foreach($terms as $term) {
       $highlight[]= '<span class="highlight">'.$term.'</span>';
    }

    return str_ireplace($terms, $highlight, $text);
}

 )
   );

   return $twig;
});

更新:這有效

的functions.php:

add_filter('timber/twig', function($twig) {
   $twig->addExtension(new Twig_Extension_StringLoader());

   $twig->addFilter(
     new Twig_SimpleFilter(
       'highlight', 

function($text, array $terms) {

    $highlight = array();
    foreach($terms as $term) {
       $highlight[]= '<span class="highlight">'.$term.'</span>';
    }

    return str_ireplace($terms, $highlight, $text);
}

 )
   );

   return $twig;
});

並在search-results.twig中:

{% set searches = [ search_query ] %}

and

{{ content|highlight(search_query|split(' ')) }}

並在search.php中

$search_results = Timber::get_posts();
$context['search_query'] = get_search_query();

通過您想要這樣突出顯示的術語

{{ content | highlight(['foo', 'bar',]) }}

如果您只定義了一個術語,您可以這樣做

{% set search = 'foo' %}
{{ content | highlight([ search, ]) }}

如果我是你,我將功能更改為此

function($text, $terms) {
    if (!is_array($terms)) $terms = [ $terms, ];
    $highlight = array();
    foreach($terms as $term) {
       $highlight[]= '<span class="highlight">'.$term.'</span>';
    }

    return str_ireplace($terms, $highlight, $text);
}

然后,您可以通過一個或多個學期

{% set search = 'foo' %}
{{ content | highlight(search) }}

{% set searches = [ 'foo', 'bar', ] %}
{{ content | highlight(searches) }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM