Я не уверен, что это ответит на ваш вопрос, но, возможно, вам стоит попробовать этот код:
<?php
if ( $params->get( 'itemid' ) ) {
$itemid = '&Itemid='.$params->get('itemid');
} else {
$itemid = '';
}
$title = $event->title;
if ( strlen( $title ) >= 20 ) {
$title = substr( $title, 0, 20 );
$title .= '...';
}
if ( KRequest::get( 'get.view', 'string' ) == 'events' || isset( $module ) ) :
?>
<h1 class="title" itemprop="name">
<a href="<?= @route( 'option=joomla_component&view=event&id=' . $event->id . $itemid ) ?>" itemprop="url"><?= $title ?></a>
</h1>
<?php
endif;
?>
Основная проблема в том, что вы преобразовываете переменную $ title и отображаете переменную $ event-> title. Кроме того, вы ищете строки ТОЧНОЙ длины 20, чтобы добавить «...», но вы должны добавить его к любой строке с 20 или более символами.
Надеюсь, это помогло!