我正在尝试使用液体语法在LocomotiveCMS安装中设置SEO。我正在尝试对其进行编码,以便使用{{page.title}}动态提取页面标题,然后强制它将每个单词的第一个字母大写。
我试过了:
<title>
{{ page.title | camelcase }} | {{ site.name }}
</title>
基于此处的流动语法文档:http://docs.shopify.com/themes/liquid-basics/output#camelize
但它不起作用。使用capitalize
有效,但它只会将第一个单词的第一个字母大写。
谢谢!
答案 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