首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有流线型的病毒来截断一个URL?如果没有,我该怎么做呢?

有没有流线型的病毒来截断一个URL?如果没有,我该怎么做呢?
EN

Stack Overflow用户
提问于 2013-12-10 16:11:59
回答 2查看 1.7K关注 0票数 0

在TYPO3 3的流体中还是在Fedext/vhs中,是否有一种可以转换的病毒?

代码语言:javascript
复制
http://www.stackoverflow.com/questions/ask

转到

代码语言:javascript
复制
www.stackoverflow.com

PS:这就是目标:

代码语言:javascript
复制
<f:format.raw><f:link.external uri="{item.link}">{item.just-display-the-domain}</f:link.external></f:format.raw>

编辑(根据我得到的答案修改问题):如果我必须构建一个定制的视图助手,我该如何继续呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-10 19:55:29

我真的怀疑是否有任何合理的理由将这种VH添加到核心中,事实上,编写自定义VH就像小菜一碟(当您最终意识到这一点时),因此devs可以在几分钟内在他们的定制工具exts中创建简单的格式化器。

即。在TYPO3 4.x中,假设您有一个带有键urs的自定义扩展,只需创建一个适当的类,其中包含render($params)方法和扩展Tx_Fluid_Core_ViewHelper_AbstractViewHelper类:

/typo3conf/ext/urs/Classes/ViewHelpers/GetDomainViewHelper.php

代码语言:javascript
复制
<?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]);
    }
}
?>

下一个在您的临时程序中声明它的命名空间和..。仅此而已,你可以用它:

代码语言:javascript
复制
{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 ver.6.x

事情很相似,当然,主要的变化是新的名称空间。

/typo3conf/ext/urs/Classes/ViewHelpers/GetDomainViewHelper.php

代码语言:javascript
复制
<?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]);
    }
}

在模板中:

代码语言:javascript
复制
{namespace urs=TYPO3\Urs\ViewHelpers}

<urs:getDomain link="http://stackoverflow.com/questions/20499453" />

当然,在这两种情况下,您不会使用硬编码链接,而是使用:

代码语言:javascript
复制
<urs:getDomain link="{item.link}" />
票数 2
EN

Stack Overflow用户

发布于 2013-12-10 17:37:10

所有ViewHelper都位于typo3/sysext/fluid/Classess/ViewHelper。每个文件的头中也有示例。所有的Fedext的ViewHelper都可以在网站上进行回顾。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20499453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档