Add proper content slug auto generated
This commit is contained in:
parent
98d841e5fc
commit
2c00571cb5
4 changed files with 71 additions and 3 deletions
59
Classes/ViewHelpers/Format/IdViewHelper.php
Normal file
59
Classes/ViewHelpers/Format/IdViewHelper.php
Normal file
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Copyright (C) 2021 Daniel Siepmann <coding@daniel-siepmann.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301, USA.
|
||||
*/
|
||||
|
||||
namespace DanielSiepmann\DsSite\ViewHelpers\Format;
|
||||
|
||||
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
|
||||
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
|
||||
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithContentArgumentAndRenderStatic;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
|
||||
/**
|
||||
* Formats a given string to be a valid HTML id attribute value.
|
||||
*/
|
||||
class IdViewHelper extends AbstractViewHelper
|
||||
{
|
||||
use CompileWithContentArgumentAndRenderStatic;
|
||||
|
||||
public function initializeArguments()
|
||||
{
|
||||
$this->registerArgument('value', 'string', 'string to format');
|
||||
}
|
||||
|
||||
public static function renderStatic(
|
||||
array $arguments,
|
||||
\Closure $renderChildrenClosure,
|
||||
RenderingContextInterface $renderingContext
|
||||
) {
|
||||
$value = $renderChildrenClosure();
|
||||
if (!is_string($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
return $value;
|
||||
}
|
||||
$value = (string)$value;
|
||||
$value = str_replace(' ', '_', $value);
|
||||
$value = preg_replace('#\W#', '', $value);
|
||||
$value = GeneralUtility::underscoredToUpperCamelCase($value);
|
||||
$value = lcfirst($value);
|
||||
return $value;
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
<html xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
<a name="c{uid}"></a>
|
||||
<a name="{header -> f:format.id()}"></a>
|
||||
<f:if condition="{layout} != 'hidden'">
|
||||
<h{layout}>{header} <small><a href="#c{uid}">¶</a></small></h{layout}>
|
||||
<h{layout}>{header} <small><a href="#{header -> f:format.id()}">¶</a></small></h{layout}>
|
||||
</f:if>
|
||||
</html>
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
<f:for each="{pageContent}" as="contentEntry">
|
||||
<f:if condition="{contentEntry.data.header}">
|
||||
<li>
|
||||
<a href="#c{contentEntry.data.uid}">{contentEntry.data.header}</a>
|
||||
<a href="#{contentEntry.data.header -> f:format.id()}">{contentEntry.data.header}</a>
|
||||
</li>
|
||||
</f:if>
|
||||
</f:for>
|
||||
|
|
|
@ -14,6 +14,15 @@
|
|||
],
|
||||
],
|
||||
],
|
||||
'SYS' => [
|
||||
'fluid' => [
|
||||
'namespaces' => [
|
||||
'f' => [
|
||||
99 => 'DanielSiepmann\\DsSite\\ViewHelpers',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
]);
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserTSConfig(
|
||||
"@import 'EXT:ds_site/Configuration/UserTSconfig/*.tsconfig'"
|
||||
|
|
Loading…
Reference in a new issue