Joomla介绍图像阅读更多链接

时间:2012-03-08 08:58:42

标签: php joomla joomla1.5

我想让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网站上的每个介绍图像做的事情。 谢谢!

7 个答案:

答案 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>