PDA

Zobacz pełną wersję : Artykuły archiwalne - ustawienie Autor łączem



danieladrianka
20-05-2018, 21:43
Witam.
Joomla! 3.8.7

Tworzymy w Menu nową pozycję menu o typie : Artykuły archiwalne
W zakładce Opcje wybieramy :
- Pokaż autora : TAK
- Autor łączem: TAK

W PA oczywiście włączony dodatek Artykuły - Kontakt
W Komponenty -> Kontakty oczywiście autor istnieje i jest przypisany do użytkownika (oczywiście jest opublikowany ;))
Nawet w ustawieniach Globalnych dla Artykuły ustawione jest Autor łączem :TAK (mimo iż ustawienie w tworzonym menu powinno nadpisywać globalne ustawienie).

W witrynie klikamy link w menu do Artykułów archiwalnych, otwiera się lista tychże artykułów i .... niestety wyświetlana nazwa autora nie jest odnośnikiem do jego strony kontaktowej. Nazwa autora jest zwykłym tekstem nie linkiem.


Czy to jest błąd Joomla! ? czy też tylko u mnie nie działa ;) ?

siristru
21-05-2018, 13:53
To jest kwestia szablonu listy archiwalnych artykułów. Domyślnie nazwa autora nie jest linkiem.
By to zmienić należało by edytować szablon (nadpisanie szablonu) i przerobić to na link.

danieladrianka
21-05-2018, 14:20
Sprawdzane bylo na czystej instalce z podstawowym szablonem czyli jest to błąd jak gdyby J! ;) sprawdzę z innymi jak działa.)

siristru
21-05-2018, 15:03
W domyślnym szablonie wygląda to dobrze:


<div class="createdby" itemprop="author" itemscope itemtype="https://schema.org/Person">
<?php $author = $item->created_by_alias ?: $item->author; ?>
<?php $author = '<span itemprop="name">' . $author . '</span>'; ?>
<?php if (!empty($item->contact_link) && $params->get('link_author') == true) : ?>
<?php echo JText::sprintf('COM_CONTENT_WRITTEN_BY', JHtml::_('link', $this->item->contact_link, $author, array('itemprop' => 'url'))); ?>
<?php else : ?>
<?php echo JText::sprintf('COM_CONTENT_WRITTEN_BY', $author); ?>
<?php endif; ?>
</div>

Ta część o tym decyduje:


<?php if (!empty($item->contact_link) && $params->get('link_author') == true) : ?>
<?php echo JText::sprintf('COM_CONTENT_WRITTEN_BY', JHtml::_('link', $this->item->contact_link, $author, array('itemprop' => 'url'))); ?>
<?php else : ?>

Czyli powinno być dobrze jeśli włączone są linki do autora i istnieje powiązanie z kontaktem.

Sprawdź ustawienia w pozycji menu, artykule i ogólne ustawienia. Któreś z nich to blokują.

danieladrianka
22-05-2018, 19:41
Sprawdziłem na innych szablonach i serwisach ;)

W przeglądzie artykułów archiwalnych nazwa autora nie jest linkiem ;)

Mimo takiego ustawienia w PA ( w każdym miejscu ustawione na pokaż link jako nazwa) nie działa.

Ogólnie jest to mało istotny błąd pewnie pozostałość jakiś przeróbek kodu w wersjach J! ale moim zdaniem jednak błąd ;)

Poza tym nawet jeśli byłoby to ustawione inaczej w jakimś innym miejscu, to ustawienie tego podczas tworzenia linku w menu powinno nadpisywać inne ustawienia, gdyż tworzymy nadrzędną instrukcję (link) z ustawieniami, które ten link powinien otwierać na stronie. W przeciwnym razie byłoby to bez sensu ;)

zwiastun
22-05-2018, 20:50
U mnie na wersji testowej w ogóle nie wyświetla nazwy autora...

zwiastun
23-05-2018, 00:10
E tam, zwyczajnie niedowidzę. Jest błąd. Nie zaimplementowano tu zmiany sposobu kodowanie informacji o artykule.

siristru
23-05-2018, 00:18
Interesujące:


<?php if (!empty($article->contact_link) && $this->params->get('link_author') == true) : ?>

To


$this->params->get('link_author')

Zwraca 1 czyli dobrze... ale to:


$article->contact_link

Nie zwraca nic.

Kiedy robię


print_r($article);

Nie ma contact_link w zmiennej $article.

Zatem warunek jest nie spełniony i link nie jest wyświetlany... a jak usunę warunek to i tak link będzie pusty...

contact_link nie jest nigdzie dostępny...

danieladrianka
23-05-2018, 07:08
Czyli jednak usterka J! ;)

Być może znalazłem kolejną ale jeszcze to sprawdzę ;) i dam znać.

zwiastun
23-05-2018, 10:01
Tak, usterka. Przyjrzyj się, w jaki sposób kodowana jest prezentacja informacji o artuykule w innych widokach, np. w widoku bloga, widoku pełnego artykułu.

Na przyklad, gdy na szybko do widoku defaults_item.php wstawię fragmentu z widoku bloga:



// w I sekcji php po $params = $this->params;
$info = $params->get('info_block_position', 0);

// w II sekcji php po już tu przytaczanym fragmencie , który powinien wyświetlać nazwę autora

<?php if ($useDefList && ($info == 0 || $info == 2)) : ?>
<?php // Todo: for Joomla4 joomla.content.info_block.block can be changed to joomla.content.info_block ?>
<?php echo JLayoutHelper::render('joomla.content.info_block.b lock', array('item' => $this->item, 'params' => $params, 'position' => 'above')); ?>
<?php if ($info == 0 && $params->get('show_tags', 1) && !empty($this->item->tags->itemTags)) : ?>
<?php echo JLayoutHelper::render('joomla.content.tags', $this->item->tags->itemTags); ?>
<?php endif; ?>
<?php endif; ?>


to otrzymuję nazwę autora podlinkowaną.
Cały widok archiwum wymaga przerbienia.