我对树枝非常不熟悉。这就是我所拥有的:
{% 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个字符,另外理想情况下它会以...结束以指示网址被切断但这是一个奖励。有人可以帮忙吗?
答案 0 :(得分:0)
我相信你正在寻找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
答案 1 :(得分:0)
您可以制作自己的Twig Extension。这很容易。
首先,您必须使用过滤器代码创建文件:
<?php
//Acme/AcmeBundle/Twig/AnExtension.php
namespace Acme\AcmeBundle\Twig;
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: Acme\AcmeBundle\Twig\AnExtension
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