用液体语法将每个单词的首字母大写?

APA*_*AD1 19 html liquid

我正在尝试使用液体语法在LocomotiveCMS安装中设置SEO.我正在尝试对其进行编码,以便使用{{page.title}}动态提取页面标题,然后强制它将每个单词的第一个字母大写.

我试过这个:

<title>
      {{ page.title | camelcase }} | {{ site.name }}
</title>
Run Code Online (Sandbox Code Playgroud)

基于此处的液体语法文档:http://docs.shopify.com/themes/liquid-basics/output#camelize

但它不起作用.使用capitalize作品,但它只会大写第一个单词的第一个字母.

谢谢!

tak*_*ky2 24

有一种方法可以使用Liquid语法来实现这一点.不需要任何插件.

将您的单词串分解为一个数组,并使用for循环和大写过滤器来大写每个单词的第一个字母.如果你在捕获语句中适当地封装它,那么每个单词中的第一个字符都是大写的.

{% assign words = "Hi, how are you today?" | split: ' ' %}

{% capture titlecase %}{% for word in words %}{{ word | capitalize }} {% endfor %}{% endcapture %}

{{ titlecase }}
Run Code Online (Sandbox Code Playgroud)

输出:

你好,你今天怎样?

请注意,所有这些都在一行上,整个捕获语句中只出现一次空格!

  • 我很确定这只是解决方案,尽管使用[自定义插件](http://stackoverflow.com/a/23453152/4058484)或[css-capitalize](http://stackoverflow.com/a /四百零五万八千四百八十四分之二千一百三十一万五千八百五十零). (2认同)

AsT*_*TeR 22

我建议使用插件来获取此行为

_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)
Run Code Online (Sandbox Code Playgroud)

用法:

{{ "mein text" | capitalize_all }}
Run Code Online (Sandbox Code Playgroud)


Ty *_*ayn 10

如何用CSS设置它?

title {
    text-transform:capitalize;
}
Run Code Online (Sandbox Code Playgroud)

编辑:我做了一个关于文本转换的错误,现在它已修复;