PDA

Zobacz pełną wersję : [Rozwiązane] Tytuł artykułu jako link zewnętrny



-=Darecki=-
17-12-2019, 08:24
Witam serdecznie. jestem świeży w joomli i budując pierwszą stronę w tym systemie napotkałem problem na który szukam już rozwiązania od jakiegoś czasu z marnym skutkiem. Pewnie był poruszany już taki temat jednak nie mogę nic konkretnego znaleźć.
Mianowicie, mam u siebie zakładkę aktualności która wyświetla przegląd artykułów z konkretnej kategorii. Zwykłe artykuły mam zrobione w ten sposób że, większość jest podzielona na części i na przeglądzie jest tylko tytuł, i przycisk czytaj więcej, ewentualnie pierwszy akapit artykułu i dopiero po kliknięciu jest pełny artykuł. Jednak od czasu do czasu będę potrzebował umieścić tam też link zewnętrzy. Chodzi o to żeby link wyglądała na tej liście jako zwykły artykuł a po kliknięciu w jego tytuł, ewentualnie w czytaj więcej przenosił na podlinkowaną stronę.
Na szybko rozwiązałem to w taki sposób, że utworzyłem obrazek wyglądający jak przycisk czytaj więcej na stronie i pod nim chowam link jednak jak ktoś zamiast tego kliknie w tytuł wyświetla artykuł w którym jest wyświetlany tylko ten przycisk dla tego dla większej estetyki szukam innego rozwiązania

siristru
17-12-2019, 12:20
Inne rozwiązanie jest jedno - kustomizacja :)
Czyli możesz je sobie sam stworzyć korzystając z nadpisywania widoku szablonem.
Podczas edycji artykułu widoczna jest zakładka "Obrazki i łącza". Tam znajdują się pola "Łącze A" etc. Można by je wykorzystać.
Wtedy trzeba tak zmodyfikować widok listy artykułów w by wprowadzić warunek: jeśli pole łącze jest wypełnione to przycisk i tytuł maja ten link.

Tutaj możesz zobaczyć efekt: https://cerkiew.szczecin.pl/

"Koncert Wierni Tradycji" linkuje do artykułu ale "Spotkanie opłatkowe u arcybiskupa" jest linkiem zewnętrznym.

-=Darecki=-
19-12-2019, 07:43
Dzięki za odpowiedz jednak nie mam pojęcia jak się za to zabrać ani w którym miejscu zmodyfikować taki warunek. Szukać tego przez zaplecze czy przez ftp bezpośrednio w plikach źródłowych joomli?

siristru
19-12-2019, 09:28
Szukać tego przez zaplecze czy przez ftp bezpośrednio w plikach źródłowych joomli?



Wtedy trzeba tak zmodyfikować widok listy artykułów w by wprowadzić warunek: jeśli pole łącze jest wypełnione to przycisk i tytuł maja ten link.

To nieco wyższa szkoła jazdy i wymaga modyfikowania plików widoku.

https://wiki.joomla.pl/Jak_nadpisywa%C4%87_szablony_standardowych_widok%C 3%B3w
https://wiki.joomla.pl/Zrozumie%C4%87_koncepcj%C4%99_nadpisywania_szablon em

Dla artykułów wyróżnionych

Plik widoku kopiujesz tu:

ROOT/templates/<twoj-szablon>/html/com_content/featured/default_item.php
ROOT/templates/<twoj-szablon>/html/com_content/featured/default.php

z

ROOT/components/com_content/views/featured/tmpl

Modyfikujesz plik: ROOT/templates/<twoj-szablon>/html/com_content/featured/default_item.php

W moim przypadku jest tak:


<?php
/**
* @package Joomla.Site
* @subpackage com_content
*
* @copyright Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/

defined('_JEXEC') or die;

// Create a shortcut for params.
$params = &$this->item->params;
$images = json_decode($this->item->images);
$urls = json_decode($this->item->urls);
$canEdit = $this->item->params->get('access-edit');
$info = $this->item->params->get('info_block_position', 0);
if($urls->targetc == 1) {$linkTarget = 'target="_blank"';};

// Check if associations are implemented. If they are, define the parameter.
$assocParam = (JLanguageAssociations::isEnabled() && $params->get('show_associations'));
?>
<div class="item-content-inner">
<?php if (isset($images->image_intro) && !empty($images->image_intro)) : ?>
<img src="<?php echo $images->image_intro; ?>" />
<?php endif; ?>
<?php if(!empty($this->item->introtext)) { ?>
<?php if (isset($urls->urlc) && !empty($urls->urlc)) { ?>
<a class="maska-link" href="<?php echo $urls->urlc; ?>" <?php echo $linkTarget; ?>></a>
<?php } else { ?>
<a class="maska-link" href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($thi s->item->slug, $this->item->catid, $this->item->language)); ?>"></a>
<?php } ?>
<div class="item-date">
<time datetime="<?php echo JHtml::_('date', $this->item->created, 'c'); ?>" itemprop="dateCreated">
<?php echo JText::sprintf(JHtml::_('date', $this->item->created, JText::_('DATE_FORMAT_LC3'))); ?>
</time>
</div>
<div class="item-text">
<?php if ($params->get('show_title')) : ?>
<h2 class="item-title" itemprop="headline">
<?php if ($params->get('link_titles') && $params->get('access-view')) : ?>
<a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($thi s->item->slug, $this->item->catid, $this->item->language)); ?>" itemprop="url">
<?php echo $this->escape($this->item->title); ?>
</a>
<?php else : ?>
<?php echo $this->escape($this->item->title); ?>
<?php endif; ?>
</h2>
<?php endif; ?>


<?php echo $this->item->introtext; ?>



<?php if ($params->get('show_readmore') && $this->item->readmore) :
if ($params->get('access-view')) :
$link = JRoute::_(ContentHelperRoute::getArticleRoute($thi s->item->slug, $this->item->catid, $this->item->language));
else :
$menu = JFactory::getApplication()->getMenu();
$active = $menu->getActive();
$itemId = $active->id;
$link = new JUri(JRoute::_('index.php?option=com_users&view=login&Itemid=' . $itemId, false));
$link->setVar('return', base64_encode(ContentHelperRoute::getArticleRoute( $this->item->slug, $this->item->catid, $this->item->language)));
endif; ?>

<?php echo JLayoutHelper::render('joomla.content.readmore', array('item' => $this->item, 'params' => $params, 'link' => $link)); ?>

<?php endif; ?>
<?php if (isset($urls->urlc) && !empty($urls->urlc)) { ?>
<?php echo JLayoutHelper::render('joomla.content.readmore', array('item' => $this->item, 'params' => $params, 'link' => $link)); ?>
<?php } ?>
</div>
<?php } ?>
</div>



Tutaj widać warunek dla wypełnionego pola URL C:


<?php if (isset($urls->urlc) && !empty($urls->urlc)) { ?>
<a class="maska-link" href="<?php echo $urls->urlc; ?>" <?php echo $linkTarget; ?>></a>
<?php } else { ?>
<a class="maska-link" href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($thi s->item->slug, $this->item->catid, $this->item->language)); ?>"></a>
<?php } ?>

Niestety, trzeba sie trochę pouczyć ;)

-=Darecki=-
19-12-2019, 10:52
Czyli sporo nauki przede mną. Ale dzięki za podpowiedz i kierunek z której strony się za to zabrać