2012-03-08 112 views
6

我想使joomla文章介绍图像行为像阅读更多,和标题链接。所以用户点击图片,文章加载。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网站每介绍做形象。 谢谢!

+1

什么介绍图像?您是否在阅读更多行上方的内容区域放置图像? – 2012-03-13 22:37:53

回答

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

因此,让我开始解释你上面发布的代码的作用。整个代码块会生成一个链接:有一堆if语句是根据某些设置确定的。例如,如果您已设置人员需要注册才能阅读更多内容,则链接会显示“注册阅读更多...”

但是,我们感兴趣的部分因为我们想要将图像转换为链接,是我们希望图像链接到的URL。这是正确的第一行:

<a href="<?php echo $this->item->readmore_link; ?>" 

,所以我们知道网址动态提供感谢$item->item->readmore_link而这一切的代码做的是呼应入HTML。

剩下的就是编辑您的图片所在页面的Joomla模板(可能是您从该代码获取的同一个文件)。看起来这应该是一个更大的PHP循环的一部分,循环遍历所有的帖子。在上面你发现这个代码的地方,应该是与该帖子一起出现的介绍图像的代码。

我不确定它会是什么样子,它可能是<img src="<? stuff here; ?> />或它可以动态生成。继续阅读。如果您仍然不确定最终在哪里找到它,请使用模板的完整代码编辑您的帖子,并从上面剪下。不管它是什么样子,它在下面的步骤被称为<WHATEVER IMAGE CODE YOU FOUND ABOVE>

你必须来包装形象与“一”的标签,使它看起来像下面这样:

<a href="<?php echo $this->item->readmore_link; ?>"> <WHATEVER IMAGE CODE YOU FOUND ABOVE> </a> 

应做到这一点。让我知道如果你有任何问题,我会很乐意让我的帖子更具体的,如果你能提供更详细的信息更多,但我试图解释的不够好,你应该能够弄明白一对夫妇试图。

+0

你的想法很好,但在标准的Joomla文章中没有介绍图片代码。我们需要更多信息来了解他从哪里获取图片。 – 2012-03-13 22:37:12

+0

我没有Joomla背景,只有一个PHP,但我想他可能使用的是模板或主题,或者是允许他上传图片的东西。它可以通过帮助程序生成,也可以通过动态URL手动生成。我猜这很可能是' />',但无论哪种方式我的解决方案应该为他工作。你是对的,唯一让这个问题困难的是他缺乏提供细节。 – swiecki 2012-03-13 22:44:34

+0

我想你的答案。如果他使用扩展来允许文章图像,那么将会有图像特定的代码。如果他只是在文章摘要中加入一个图片,那么它会采用一些正则表达式来使其发挥作用。 – 2012-03-14 00:03:15

1

正如你所说,你不是一个PHP专家,听起来像你最好的选择是使用Joomla扩展,它具有与你想要的类似的功能。

相信mod_minifrontpage将您所需要的工作。它允许您显示文章列表,并根据要引用的第一张图片生成这些文章的缩略图。

1

有以J文章介绍的图像,因为1.7.5和现在最新的2.5.3 你需要的是改变component_content默认设置,

你可以做到这2种方式,编辑在yourinstall的意见/组件/ com_content /视图/

或使用模板覆盖,你首先需要,如果你的模板使用替代否则要知道,如果你在组件本身,你将不会看到改变编辑组件意见。

验证这一点,到 SITE_NAME /模板/ TEMPLATE_NAME/HTML文件夹,并检查是否有文件夹名称 com_content,

,如果这是不是你的模板的情况下,使用替代和任何编辑应该做的

现在波谷不存在通过组件的实际代码

这是 部件\ com_content \视图\功能\ TMPL \ default_item.php(THIS我DEFAULT FRONTPAGE ARTICLE VIEW)

<?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; ?> 

所有你需要做的是环绕IMG标签的元素与readmore链接这样

<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

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; ?> 
1

在3.1的Joomla的代码,该intro_image布局已经移动到布局/的Joomla /内容文件夹。在我的情况,它是由com_content /视图/分类/ TMPL/blog_item.php称为像这样:

<?php echo JLayoutHelper::render('joomla.content.intro_image', $this->item); ?> 

我感动的是文件,以我的模板/ HTML/com_content /分类/ 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> 
0

如果您在Joomla 3.1上安装了Gantry,则覆盖位于不同的位置。你需要导航到plugins/system/gantry/overrides/3.0/2.5/com_content/category/blog_item.php,并用read more链接代码包装介绍图像。

<?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>