私はどこでもこの答えを探しましたが、見つかりません。
私はJoomla 3の新しいレイアウトオーバーライドが本当に好きですが、ユーザーがイントロ画像をクリックすると記事全体に移動できるように、intro_image.phpファイルへのリンクを追加できるようにしたいと考えています。
私が見つけた答えのほとんどは、オーバーライドを削除してphpをテンプレートのオーバーライドに直接配置することを提案していますが、これは実際には逆のステップです。
レイアウトのオーバーライドを維持したいが、リンクを追加したい。シンプルに見えますが、わかりません。
イントロ画像はJLayout _layouts/joomla/content/intro_image.php
_で生成されます。
これは、_/templates/your_template/html/layouts/joomla/content/intro_image.php
_の独自のテンプレートでオーバーライドできます。
そこにファイルをコピーして、必要に応じて調整してください。そこでリンクを生成できると思います。
リンクを生成するには、JRoute::_(ContentHelperRoute::getArticleRoute($displayData->slug, $displayData->catid));
を使用できます。
intro-image のオーバーライドを配置する場所に関するBakualの回答に続いて、記事にリンクしているintro-imageレイアウトのテンプレートオーバーライドのサンプルコードを次に示します。ユーザーが記事全体を読むための表示アクセス権を持っているかどうかを確認し、それに応じてリンクを生成します(記事のタイトルの生成と同じ)。
defined('_JEXEC') or die;
$params = $displayData->params;
if ($params->get('access-view')) :
$link = JRoute::_(ContentHelperRoute::getArticleRoute($displayData->slug, $displayData->catid));
else :
$menu = JFactory::getApplication()->getMenu();
$active = $menu->getActive();
$itemId = $active->id;
$link1 = JRoute::_('index.php?option=com_users&view=login&Itemid=' . $itemId);
$returnURL = JRoute::_(ContentHelperRoute::getArticleRoute($displayData->item->slug, $displayData->item->catid));
$link = new JUri($link1);
$link->setVar('return', base64_encode($returnURL));
endif; ?>
<?php $images = json_decode($displayData->images); ?>
<?php if (isset($images->image_intro) && !empty($images->image_intro)) : ?>
<?php $imgfloat = (empty($images->float_intro)) ? $params->get('float_intro') : $images->float_intro; ?>
<div class="pull-<?php echo htmlspecialchars($imgfloat); ?> item-image">
<a href="<?php echo $link; ?>">
<img
<?php if ($images->image_intro_caption):
echo 'class="caption"' . ' title="' . htmlspecialchars($images->image_intro_caption) . '"';
endif; ?>
src="<?php echo htmlspecialchars($images->image_intro); ?>" alt="<?php echo htmlspecialchars($images->image_intro_alt); ?>" itemprop="thumbnailUrl"/>
</a>
</div>
<?php endif; ?>