我真的怀疑是否有任何合理的理由将这种 VH 添加到核心中,事实上,编写自定义 VH 就像小菜一碟(当你最终意识到它是)所以简单的格式化程序可以由开发人员在他们的自定义工具分机只需几分钟。
IE。在 TYPO3 中4.x
假设您有一个带有键的自定义扩展,urs
您需要做的就是创建一个适当的类,包含render($params)
方法和扩展Tx_Fluid_Core_ViewHelper_AbstractViewHelper
类:
/typo3conf/ext/urs/Classes/ViewHelpers/GetDomainViewHelper.php
:
<?php
class Tx_Urs_ViewHelpers_GetDomainViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {
/**
* @param $link string Each `allowed` param need to have its line in PHPDoc
* @return string
*/
public function render($link) {
$link = str_replace('http://', '', $link);
$link = str_replace('https://', '', $link);
$segments = explode('/', $link);
return trim($segments[0]);
}
}
?>
接下来在您的模板中声明其命名空间,然后......就是这样,您可以使用它:
{namespace urs=Tx_Urs_ViewHelpers}
<urs:getDomain link="http://stackoverflow.com/questions/20499453" />
在诸如此类的事情中要特别注意字母大小写Tx_Urs_ViewHelpers...
。
http://docs.typo3.org/typo3cms/ExtbaseFluidBook/8-Fluid/8-developing-a-custom-viewhelper.html中的更多详细信息
在 TYPO3 版本中。6.x
事情很相似,主要的变化当然是新的命名空间
/typo3conf/ext/urs/Classes/ViewHelpers/GetDomainViewHelper.php
:
<?php
namespace TYPO3\Urs\ViewHelpers;
class GetDomainViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper {
/**
* @param $link string Each `allowed` param need to have its line in PHPDoc
* @return string
*/
public function render($link) {
$link = str_replace('http://', '', $link);
$link = str_replace('https://', '', $link);
$segments = explode('/', $link);
return trim($segments[0]);
}
}
在模板中:
{namespace urs=TYPO3\Urs\ViewHelpers}
<urs:getDomain link="http://stackoverflow.com/questions/20499453" />
当然,在这两种情况下,您将使用以下方式而不是使用硬编码链接:
<urs:getDomain link="{item.link}" />