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

时间:2014-01-23 17:49:06

标签: html liquid

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

我试过了:

<title>
      {{ page.title | camelcase }} | {{ site.name }}
</title>

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

但它不起作用。使用capitalize有效,但它只会将第一个单词的第一个字母大写。

谢谢!

7 个答案:

答案 0 :(得分:21)

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

_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 }}

答案 1 :(得分:20)

有一种方法可以仅使用Liquid语法实现此目的。不需要任何插件。

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

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

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

{{ titlecase }}

输出:

  

嗨,你今天过得怎么样?

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

答案 2 :(得分:9)

如何用CSS设置它?

title {
    text-transform:capitalize;
}

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

答案 3 :(得分:2)

关于您发布的链接,驼峰案例的工作原理如下:

{{ 'coming-soon' | camelcase }}

它需要一个字符串,其单词用' - '分隔并且表示它。我只有一个问题:你的'page.title'怎么样?它的单词用' - '分隔?或者你有这样的文字:“这是我的页面的标题”?如果是这样,你应该用以下内容替换它:“这是我的页面的标题”

希望这有帮助。

答案 4 :(得分:1)

这一系列过滤器一直在为我工作。如果你的标题有5个连续破折号或破折号,你不希望下面的字母大写,你会遇到问题。

<div class="jumbotron">
<?php 

 $title = 'Change your password Here:';
 $this->headTitle($title);
 ?>
<h2 align="center"><?php echo $this->escapeHtml($title); ?></h2>

<div align="right">
<a href="<?php echo $this->url('profile');?>">View Profile</a>
</div>
<br/>



<?php
 $form = $this->form;
 $form->setAttribute('action', $this->url('profile',
     array(
         'action' => 'changepassword',
         'id'     => $this->id,
     )
 ));
 $form->prepare();
 ?>


 <div align="center">
 <?php



 echo $this->form()->openTag($form);
 echo $this->formHidden($form->get('id'));  
 echo $this->formRow($form->get('old_password'));
 echo "<br/>";
 echo $this->formRow($form->get('new_password'));
 echo "<br/>";
 echo $this->formRow($form->get('confirm_password'));
 echo "<br/>"; 

 echo $this->formSubmit($form->get('submit'));
 echo $this->form()->closeTag();
 ?>
 <a href="<?php echo $this->url('profile');?>">Cancel</a>
 </div> 


 </div>

答案 5 :(得分:0)

感谢您的回复,我实际上在发布后立即找到了解决方法。而不是调用page.title我现在正在拉page.seo_title,可以通过正确的大小写通过LocomotiveCMS后端手动输入。{/ p>

答案 6 :(得分:0)

这对我有用:{{page.title |大写}}

它只使用句子中的第一个单词。

我的第一直觉是,这会把每一个字都用掉,但事实并非如此。

来源:https://docs.shopify.com/themes/liquid-documentation/filters/string-filters#capitalize