我对树枝很不熟悉。这是我所拥有的:
{% if wp.get_post_meta(post.ID, '_property_website').0 %}
<tr>
<th>{{ wp.__('Website', 'aviators') }}:</th>
<td><a href="http://{{ wp.get_post_meta(post.ID, '_property_website').0 }}">{{ wp.get_post_meta(post.ID, '_property_website').0 }}</a>
</td>
</tr>
{% endif %}
我需要将此输出限制为 35 个字符而不会终止链接。它需要仍然处于活动状态,但只显示 35 个字符,而且理想情况下它会以......指定 URL 被切断,但这是一个奖励。谁能帮忙?
我相信 http://twig.sensiolabs.org/doc/filters/slice.html 就是你要找的
编辑
刚刚发现Twig有一个名为text
扩展名,它包含wordwrap
过滤器,这正是您正在寻找的
链接: https://github.com/fabpot/Twig-extensions/blob/master/lib/Twig/Extensions/Extension/Text.php
您可以制作自己的 Twig 扩展。这很容易。
首先,您必须使用过滤器代码创建文件:
<?php
//Acme/AcmeBundle/Twig/AnExtension.php
namespace AcmeAcmeBundleTwig;
class AnExtension extends Twig_Extension
{
public function getFilters()
{
return array(
new Twig_SimpleFilter('cutText', array($this, 'cutTextFilter'))
);
}
public function cutTextFilter($text, $size = 50)
{
if (strlen($text) > $size)
{
return substr($text, 0, $size) . '...';
}
else
{
return $text;
}
}
public function getName()
{
return 'an_extension';
}
}
然后编辑此捆绑包中的 services.yml 文件,该文件位于:/Acme/AcmeBundle/Resources/config/services.yml 并添加:
services:
acme.twig.an_extension:
class: AcmeAcmeBundleTwigAnExtension
tags:
- { name: twig.extension }
现在,您可以在代码中使用过滤器:
<a href="http://{{ wp.get_post_meta(post.ID, '_property_website').0 }}">
{{ wp.get_post_meta(post.ID, '_property_website').0 | cutText(30) }}
</a>
更多信息: http://symfony.com/doc/current/cookbook/templating/twig_extension.html