Я действительно сомневаюсь, что будет какая-либо разумная причина для добавления такого типа VH в ядро, де-факто, написание собственного VH похоже на кусок пирога (когда вы, наконец, осознаете, что это так), поэтому простые средства форматирования могут быть созданы разработчиками в их пользовательский инструмент расширяется всего за несколько минут.
Т.е. в 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.х
Все работает примерно так же, главное изменение, конечно, новое пространство имен
/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}" />
person
biesior
schedule
10.12.2013