Liquid構文を使用してLocomotiveCMSインストールでSEOを設定しようとしています。 {{page.title}}を使用してページタイトルが動的にプルされるようにコーディングし、各単語の最初の文字を大文字にするように強制しようとしています。
私はこれを試しました:
<title>
{{ page.title | camelcase }} | {{ site.name }}
</title>
ここの液体構文ドキュメントに基づく: http://docs.shopify.com/themes/liquid-basics/output#camelize
しかし、それは機能していません。 capitalize
の使用は機能しますが、最初の単語の最初の文字のみを大文字にします。
ありがとう!
この動作を取得するには、プラグインを使用することをお勧めします
_plugins/_capitalize_all.rb
:
require 'liquid'
require 'uri'
# Capitalize all words of the input
module CapitalizeAll
def capitalize_all(words)
return words.split(' ').map(&:capitalize).join(' ')
end
end
Liquid::Template.register_filter(CapitalizeAll)
使用法:
{{ "mein text" | capitalize_all }}
Liquid構文のみを使用してこれを実現する方法があります。プラグインは必要ありません。
単語の文字列を配列に分割し、forループを大文字のフィルターと組み合わせて使用して、各単語の最初の文字を大文字にします。これをキャプチャステートメント内に適切にカプセル化すると、すべてのWordの最初の文字が大文字になります。
{% assign words = "Hi, how are you today?" | split: ' ' %}
{% capture titlecase %}{% for Word in words %}{{ Word | capitalize }} {% endfor %}{% endcapture %}
{{ titlecase }}
出力:
こんにちは、今日はお元気ですか?
これらすべてが1行にあり、キャプチャステートメント全体で空白が1つだけ出現することに注意してください。
これをCSSで設定するのはどうですか?
title {
text-transform:capitalize;
}
編集:テキスト変換についてタイプミスをしましたが、修正されました。
あなたが投稿したリンクに関して、キャメルケースは次のように機能します。
{{ 'coming-soon' | camelcase }}
単語が「-」で区切られた文字列を受け取り、キャメルケースで囲みます。質問は1つだけです。「page.title」はどうですか?その単語は「-」で区切られていますか?または、「これは私のページのタイトルです」のようなテキストがありますか?その場合は、「this-is-the-title-of-my-page」に置き換える必要があります。
お役に立てれば。
この一連のフィルターは私のために働いています。ただし、タイトルに5つの連続したダッシュまたはダッシュがあり、次の文字を大文字にしたくない場合は、問題が発生します。
{% assign headerTitle = page.title | split: " " | join: "-----" | camelcase | split: "-----" | join: " " %}
回答ありがとうございます。これを投稿した直後に、実際に回避策を見つけました。 page.title
を呼び出す代わりに、page.seo_title
をプルしています。これは、LocomotiveCMSバックエンドから正しい大文字で手動で入力できます。
これは私にとってはうまくいきます:{{page.title |大文字にする}}
文の最初の単語のみを大文字にします。
私の最初の本能は、これがすべての単語を大文字にするだろうということでしたが、そうではありません。
ソース: https://docs.shopify.com/themes/liquid-documentation/filters/string-filters#capitalize