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"
|
<html xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers"
|
||||||
data-namespace-typo3-fluid="true">
|
data-namespace-typo3-fluid="true">
|
||||||
<a name="c{uid}"></a>
|
<a name="{header -> f:format.id()}"></a>
|
||||||
<f:if condition="{layout} != 'hidden'">
|
<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>
|
</f:if>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
<f:for each="{pageContent}" as="contentEntry">
|
<f:for each="{pageContent}" as="contentEntry">
|
||||||
<f:if condition="{contentEntry.data.header}">
|
<f:if condition="{contentEntry.data.header}">
|
||||||
<li>
|
<li>
|
||||||
<a href="#c{contentEntry.data.uid}">{contentEntry.data.header}</a>
|
<a href="#{contentEntry.data.header -> f:format.id()}">{contentEntry.data.header}</a>
|
||||||
</li>
|
</li>
|
||||||
</f:if>
|
</f:if>
|
||||||
</f:for>
|
</f:for>
|
||||||
|
|
|
@ -14,6 +14,15 @@
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
'SYS' => [
|
||||||
|
'fluid' => [
|
||||||
|
'namespaces' => [
|
||||||
|
'f' => [
|
||||||
|
99 => 'DanielSiepmann\\DsSite\\ViewHelpers',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
]);
|
]);
|
||||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserTSConfig(
|
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserTSConfig(
|
||||||
"@import 'EXT:ds_site/Configuration/UserTSconfig/*.tsconfig'"
|
"@import 'EXT:ds_site/Configuration/UserTSconfig/*.tsconfig'"
|
||||||
|
|
Loading…
Reference in a new issue