2012-03-08 10 views
6

Chcę, aby obrazki z artykułami joomla zachowywały się jak czytaj dalej i link tytułu. Tak więc użytkownik klika obraz, a artykuł się ładuje.Obraz intro Joomla jako czytaj więcej link

Nie jestem ekspertem w PHP, ale być może jest to kod linki 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> 

To jest to, co chcę zrobić z każdym powitalnym obrazu na mojej witrynie Joomla. Dzięki!

+1

Jaki jest obraz wstępu?Czy umieszczasz obraz w obszarze zawartości powyżej linii czytaj więcej? –

Odpowiedz

6

Właśnie rozwiązany!

Twój sposób myślenia pomógł mi. Dziękuję Ci!

oto mój kod:

 <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

Pozwól mi zacząć od wyjaśnienia, co kod, który napisałeś powyżej. Cały blok kodu generuje jedno łącze: istnieje kilka instrukcji if, które są określane na podstawie niektórych ustawień. Na przykład, jeśli ustawiłeś, że ludzie muszą się zarejestrować, aby przeczytać więcej, link będzie brzmiał "Zarejestruj się, aby przeczytać więcej ...".

Część, która nas interesuje, jednak, ponieważ chcemy aby zamienić obrazy w odnośniki, jest adresem URL, do którego obrazy mają być linkowane. To jest w pierwszej linii:

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

więc wiemy, że adres URL jest dynamicznie dzięki $item->item->readmore_link i cały ten kod robi się odbijając go do HTML.

Pozostało tylko edytować szablon Joomla strony, na której znajdują się twoje zdjęcia (prawdopodobnie ten sam plik, z którego pobrano ten kod). Wygląda na to, że powinno to być częścią większej pętli PHP, która przechodzi przez wszystkie posty. Gdzieś wyżej, gdzie znalazłeś ten kod, powinien być kod dla obrazu intro, który pasuje do tego postu.

Nie jestem pewien, jak to będzie wyglądać, może to być <img src="<? stuff here; ?> /> lub może być dynamicznie generowany. Czytaj dalej. Jeśli nadal nie wiesz, gdzie znaleźć to na końcu, edytuj swój post z pełnym kodem szablonu, z którego pochodzi powyższy fragment. Niezależnie od tego, jak to wygląda, to jest określane jako <WHATEVER IMAGE CODE YOU FOUND ABOVE> w następnym kroku:

Trzeba owinąć ten obraz z „A” znaczniki tak, że wygląda jak poniżej:

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

które powinny Zrób to. Daj mi znać, jeśli masz jakiekolwiek problemy, będę bardziej niż szczęśliwy, aby mój post bardziej szczegółowy, jeśli możesz podać bardziej szczegółowe informacje, ale starałem się wyjaśnić to na tyle dobrze, że powinieneś być w stanie to rozgryźć para próbuje.

+0

Twój pomysł jest dobry, ale nie ma kodu obrazka intro w standardowym artykule Joomla. Potrzebujemy więcej informacji, aby dowiedzieć się, skąd pochodzi. –

+0

Nie mam tła Joomla, tylko PHP, ale pomyślałem, że może używa szablonu lub motywu, który pozwala mu przesłać obraz. Zostanie wygenerowany za pomocą helpera lub ręcznie z dynamicznym adresem URL. Zgaduję, że najprawdopodobniej będzie to coś w rodzaju ' />' ale tak czy inaczej moje rozwiązanie powinno działać dla niego. Masz rację, jedyną rzeczą, która sprawia, że ​​to pytanie jest trudne, jest brak szczegółowych informacji. – swiecki

+0

Wyjaśniałem twoją odpowiedź. Jeśli używa rozszerzenia, aby zezwolić na obrazy artykułów, pojawi się kod specyficzny dla obrazu. Jeśli po prostu umieszcza obraz w podsumowaniu artykułu, to wymaga trochę magii regex, żeby to zadziałało. –

1

Jak stwierdziłeś, nie jesteś ekspertem od PHP, brzmi jak najlepiej będzie użyć rozszerzenia Joomla, które ma podobną funkcjonalność do tego, co chcesz.

Wierzę, że mod_minifrontpage będzie działał zgodnie z potrzebami. Pozwala wyświetlić listę artykułów i generuje miniatury dla artykułów opartych na pierwszym obrazie, do którego ma się odnosić odwołanie.

1

Istnieje artykuł zdjęć Intro w J, ponieważ teraz w 1.7.5 i 2.5.3 ostatnie czego potrzebujesz to zmienić domyślne component_content,

możesz to zrobić na 2 sposoby, edytowania widoków w yourinstall/components/com_content/views/

lub użyj szablonowych nadpisań, najpierw musisz wiedzieć, czy twój szablon korzysta z nadpisań, w przeciwnym razie, jeśli edytujesz widoki komponentów w samym komponencie, nie zobaczysz zmian.

aby to sprawdzić, przejdź do site_name/szablony/TEMPLATE_NAME folderze/html i sprawdzić, czy jest nazwa folderu com_content,

jeśli jest to sprawa niż szablonie korzysta przesłonięcia a wszelkie zmiany powinny być wykonywane koryta nie przez składnik

teraz do rzeczywistego kodu

to w komponentów \ com_content \ poglądów \ wyróżniona \ tmpl \ default_item.php (ten pogląd I DEFAULT FrontPage artykułu)

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

wszystko trzeba by zrobić, to otoczyć element wokół tagu IMG z ReadMore linku tak

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

nie zapomnij, że jeśli jest szablon przesłanianie dla com_content ty wold trzeba edytować featured/default_item.php wewnątrz niego

2

dla Joomla 2.5:

w override dla _item.php (Lokalizacja: yourtemplate \ html \ mod_articles_news \ item.php) miejsce następujący wiersz:

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

umieścić go tam gdzie chcesz go pokazać się na przykład po:

<?php echo $item->beforeDisplayContent; ?> 

Twój wstępny obraz stał się teraz łączem. część isset, upewnia się, że jeśli przeglądarka korzysta z przeglądarki Internet Explorer, nie pokazuje małego czerwonego kwadratu.

Dla informacji: w blog_item.php można znaleźć przykładowy kod, w jaki sposób jest wyświetlany w artykule. Tutaj można również znaleźć kod imagefloat itp

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

W Joomla 3.1, układ intro_image została przeniesiona do układów/Joomla folderze/treść. W mojej sytuacji, nazywa się od com_content/views/kategorii/tmpl/blog_item.php tak:

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

Przeniosłem ten plik do mojego szablonu/html/com_content/kategoria/blog_item.php a następnie owinął zadzwoń do JLayoutHelper tak:

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

Jeśli Suwnica zainstalowany na Joomla 3.1, zastępuje się w innym miejscu. Będziesz chciał przejść do wtyczek/system/gantry/overrides/3.0/2.5/com_content/category/blog_item.php i owinąć obraz intro za pomocą kodu linku czytaj więcej.

<?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> 
Powiązane problemy