6

ウムラウトを含むドイツ語の単語 (ä、ü など) を使用すると、カテゴリが URL エンコードされないという問題があります。Liquid が提供しているように見える cgi_escape を試しましたが、次のコードで成功しました。

<strong>Kategorien</strong><br/>
{% for category in site.categories  do %}
  <small><a href="/categories/{{ category[0] | cgi_escape }}">{{ category[0] }} </a><br/>
         </small>    
{% endfor %}

誰でも助けることができますか?

4

2 に答える 2

7

スペースを含むカテゴリでは、を使用cgi_escapeすると正しく機能しません。リンクは/category/the+categoryではなくとして生成されました/category/the%20category

私が最終的に使用したソリューションはこのブログ投稿:

# _plugins/url_encode.rb
require 'liquid'
require 'uri'

# Percent encoding for URI conforming to RFC 3986.
# Ref: http://tools.ietf.org/html/rfc3986#page-12
module URLEncoding
  def url_encode(url)
    return URI.escape(url, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
  end
end

Liquid::Template.register_filter(URLEncoding)

プラスは、スペースを表す URL のクエリ部分を除く、リテラルのプラスです。 良い URL エンコーディングのリファレンス( archive.org ミラー)。

これは、レイアウトやその他の場所で使用できます。

<a href="{{ site.category_dir }}/{{ category | url_encode }}">
于 2013-07-21T05:11:27.177 に答える