2012-03-08 109 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>