我想让joomla文章介绍图像表现得像阅读更多,标题链接。因此,用户单击图像,然后加载文章。
我不是PHP专家,但也许这是readmore链接代码:
<a href="<?php echo $this->item->readmore_link; ?>" class="button<?php echo $this->item->params->get('pageclass_sfx'); ?>">
<?php if ($this->item->readmore_register) :
echo JText::_('Register to read more...');
elseif ($readmore = $this->item->params->get('readmore')) :
echo $readmore;
else :
echo JText::_("Read Article");
endif; ?></a>
这就是我想要对我的joomla网站上的每个介绍图像做的事情。 谢谢!
答案 0 :(得分:6)
刚刚解决了!
你的思维方式帮助了我。谢谢!这是我的代码:
<a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>">
<?php
$images = json_decode($item->images);
if (isset($images->image_intro) and !empty($images->image_intro)) {
$imgfloat = (empty($images->float_intro)) ? $params->get('float_intro') : $images->float_intro;
$class = (htmlspecialchars($imgfloat) != 'none') ? ' class="size-auto align-'.htmlspecialchars($imgfloat).'"' : ' class="size-auto"';
$title = ($images->image_intro_caption) ? ' title="'.htmlspecialchars($images->image_intro_caption).'"' : '';
echo '<img'.$class.$title.' src="'.htmlspecialchars($images->image_intro).'" alt="'.htmlspecialchars($images->image_intro_alt).'" />';
}
echo $this->item->introtext;
?>
</a>
答案 1 :(得分:2)
对于Joomla 2.5:
在_item.php的覆盖中(位置:yourtemplate \ html \ mod_articles_news \ item.php) 放置以下行:
<?php if ($params->get('image')) : ?>
<?php $images = json_decode($item->images); ?>
<?php if (isset($images->image_intro) and !empty($images->image_intro)) : ?>
<a href="<?php echo $item->link;?>"><img src="<?php echo htmlspecialchars($images->image_intro); ?>" alt="<?php echo htmlspecialchars($images->image_intro_alt); ?>"/></a>
<?php endif; ?>
<?php endif; ?>
将它放在您希望显示的位置 例如:
<?php echo $item->beforeDisplayContent; ?>
您的介绍图片现已成为链接。 isset部分,确保如果查看者使用Internet Explorer,它不会显示一个小的红色十字框。
仅供参考: 在blog_item.php中,您可以找到一个示例代码,它是如何在文章中显示的。在这里你也可以找到imagefloat等的代码。
<?php if (isset($images->image_intro) and !empty($images->image_intro)) : ?>
<?php $imgfloat = (empty($images->float_intro)) ? $params->get('float_intro') : $images->float_intro; ?>
<div class="img-intro-<?php echo htmlspecialchars($imgfloat); ?>">
<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); ?>"/>
</div>
<?php endif; ?>
答案 2 :(得分:1)
因此,让我首先解释一下上面发布的代码。整个代码块生成一个链接:有一堆基于某些设置确定的if语句。例如,如果您已设置人们需要注册以便阅读更多内容,则该链接将显示“注册以阅读更多...”
然而,我们在这里感兴趣的部分,因为我们想要将图像转换为链接,是我们希望图像链接到的URL。这是第一行:
<a href="<?php echo $this->item->readmore_link; ?>"
所以我们知道,由于$item->item->readmore_link
动态提供了URL,所有这些代码正在将其回显到HTML中。
剩下的就是编辑您拥有图像的页面的Joomla模板(可能是您从中获取此代码的相同文件)。看起来这应该是更大的PHP循环的一部分,循环遍历所有帖子。在上面找到此代码的地方,应该是与该帖子一起的介绍图像的代码。
我不确定它会是什么样子,它可能是<img src="<? stuff here; ?> />
,也可能是动态生成的。继续阅读。如果您仍然不确定最后在哪里找到它,请使用模板的完整代码编辑您的帖子,您可以从中获取上述剪辑。无论它看起来如何,在以下步骤中将其称为<WHATEVER IMAGE CODE YOU FOUND ABOVE>
:
您必须使用“a”标记包装该图像,使其如下所示:
<a href="<?php echo $this->item->readmore_link; ?>"> <WHATEVER IMAGE CODE YOU FOUND ABOVE> </a>
应该这样做。如果您有任何问题,请告诉我,如果您能提供更详细的信息,我会非常乐意让我的帖子更具体,但我已经尝试解释得很清楚,您应该能够解决这个问题。一对夫妇。
答案 3 :(得分:1)
正如您所说,您不是PHP专家,听起来您最好的选择是使用具有与您想要的功能类似的Joomla扩展程序。
我相信mod_minifrontpage可以满足您的需求。它允许您显示文章列表,并根据要引用的第一个图像为这些文章生成缩略图。
答案 4 :(得分:1)
在J中有文章介绍图像,自1.7.5以来,现在最新的2.5.3 你需要的是更改component_content的默认值,
您可以通过2种方式进行操作,在yourinstall / components / com_content / views /
中编辑视图或使用模板覆盖,您首先需要知道您的模板是否使用覆盖,否则如果您在组件本身中编辑组件视图,您将看不到更改。
验证这一点,转到 site_name / templates / template_name / html文件夹并检查是否有文件夹名称 com_content,
如果是这种情况,那么你的模板使用覆盖,并且任何编辑都应该通过组件来完成
现在到实际代码
这是在 components \ com_content \ views \ featured \ tmpl \ default_item.php(这是我的默认恐怖文章视图)
<?php if (isset($images->image_intro) and !empty($images->image_intro)) : ?>
<?php $imgfloat = (empty($images->float_intro)) ? $params->get('float_intro') : $images->float_intro; ?>
<div class="img-intro-<?php echo htmlspecialchars($imgfloat); ?>">
<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); ?>"/>
</div>
<?php endif; ?>
您需要做的就是使用readmore链接在IMG标记周围包裹一个元素
<a href="<?php echo $this->item->readmore_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); ?>"/>
</a>
请注意,如果com_content有模板覆盖,则需要编辑其中的精选/ default_item.php
答案 5 :(得分:1)
在Joomla 3.1中,intro_image布局已移至layouts / joomla / content文件夹。在我的情况下,它从com_content / views / category / tmpl / blog_item.php调用,如下所示:
<?php echo JLayoutHelper::render('joomla.content.intro_image', $this->item); ?>
我将该文件移动到我的template / html / com_content / category / blog_item.php,然后将调用包装到JLayoutHelper中,如下所示:
<?php $link = JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>
<a href="<?php echo $link; ?>">
<?php echo JLayoutHelper::render('joomla.content.intro_image', $this->item); ?>
</a>
答案 6 :(得分:0)
如果在Joomla 3.1上安装了Gantry,则覆盖位于不同的位置。您将需要导航到plugins / system / gantry / overrides / 3.0 / 2.5 / com_content / category / blog_item.php并使用读取更多链接代码包装介绍图像。
<?php $link = JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>
<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); ?>"/></a>