PDA

Zobacz pełną wersję : Wtyczka do J!



Robster
03-06-2011, 19:00
Cześć

Napisałem, a raczej skopiowałem kod wtyczki z książki i krótko mówiąc wtyczka nie działa. Ma ona za zadanie wstawianie po tytule artykułu krótkiego powitania, wszystko ładnie się zainstalowało, wtyczka jest włączona, wstępy w artykułach również, ale powitania nie widać. Kod pliku php jest następujący:

<?php
// Zablokuj bezpośrednie uruchamianie
defined( '_JEXEC' ) or die( 'Brak dostępu' );
class plgContentHelloWorld extends JPlugin {
// Konstruktor kompatybilny z PHP4
function plgContentHelloWorld( & $subject ) {
parent::__construct( $subject );
}
// Nazwa funkcji odpowiada nazwie zdarzenia
function onAfterDisplayTitle(& $article, & $params, $limitstart=0) {
$myOutput = "<h4>Hello World!</h4>";
return $myOutput;
}
}
// Zainicjuj wtyczkę, podając jako parametr egzemplarz dyspozytora zdarzeń
$myPlugin =& new plgContentHelloWorld(JDispatcher::getInstance() );
?>

Myślałem, że konstruktor z PHP4 nie śmiga pod PHP5, ale to nie to (zresztą nie miało by to racji bytu), literówki też nie widzę.
Całość odpalam na movAMP'ie, wcześniej pisane komponenty i moduły działały bez większych problemów. W załączniku dorzucam wtyczkę.

Jola
04-06-2011, 00:31
Witam,
problem jest w wywołaniu wtyczki :)
Przyczyna problemu (http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=11410)

Robster
04-06-2011, 01:09
Znaczy, że nie da się wyświetlić nic pod tytułem? Przecież na takiej zasadzie wyświetla się chyba ocena artykułu.


--------
Wynika, że tak, bo ze zdarzeniem onAfterDisplayContent już śmiga. Szkoda, że nie sprawdziłem tego wcześniej :/ Dzięki wielkie Jola, za pomoc.

Jola
04-06-2011, 01:14
Znaczy, że wynik działania dodatku pojawi się tylko wówczas gdy nie wyświetlamy introtekstu (to oczywisty bład Joomla). Należy wyrzucić wywołanie z warunku zamiast:

<?php if (!$this->params->get('show_intro')) : echo $this->article->event->afterDisplayTitle; endif; ?>wstaw:

<?php echo $this->article->event->afterDisplayTitle; ?>

W innych szablonach będzie to samo.

Robster
04-06-2011, 01:27
No i teraz ładnie śmiga. Czyli to znaczy, że za każdym razem tworząc plugin musiałbym nadpisać szablonem ten kawałek kodu żeby nie było problemu? A swoją drogą to dziwne, bo w ustawieniach artykułu miałem wyłączony tekst wprowadzający, więc napis powinien się pojawić :/

Jola
04-06-2011, 01:31
Problem dotyczy wywołania tylko tej funkcji, tak myślę :).
A ustawienia pozycji menu?

Robster
04-06-2011, 01:34
Tak inne zdarzenia działają jak należy. Pozycja menu? Nie bardzo wiem o co chodzi, bo to jest zwykły artykuł i o ile we wstępach i widoku artykułów w kategorii/sekcji to zdarzenie nie działa, to po pełnym wyświetleniu powinno śmigać przy wyłączonym tekście wprowadzającym .

---------
Poprawka mój błąd :/ Globalnie miałem wyłączony, ale w artykułach które sprawdzałem tekst był włączony. Kochane zbiegi okoliczności. Przepraszam za zamotę, działa jak należy, a informacja o bugu zawsze się przyda :)

Jola
04-06-2011, 01:40
Zawsze możesz sprawdzić jak Joomla widzi ten parametr wpisując:

echo ($this->params->get('show_intro')) ? "Intro włączone" : "Intro wyłączone";

Robster
04-06-2011, 01:51
W takim przypadku wyrzuca błąd, chyba że źle wpisałem:

<?php if (echo ($this->params->get('show_intro')) ? "Intro włączone" : "Intro wyłączone";
echo $this->article->event->afterDisplayTitle;
endif; ?>

Niemniej w książce jest napisane że we wstępach i widokach kategorii zdarzenie nie funkcjonuje, a u mnie się wyświetla. Widać książka z 2007 ma swoje złe strony w przypadku CMS'a, który ma akualizacje średnio co 2-3 tygodnie :)

-------------
Jest jeszcze lepiej. Globalne ustawienie wprowadzenia nie funkcjonuje, tylko zmiana ustawienia bezpośrednio w każdym artykule przynosi rezultaty.

Jola
04-06-2011, 02:20
Miałeś wpisać dokładnie to, co podałam, bez if

Robster
09-06-2011, 22:28
Hmmm nie pokazało mi że nowy post jest :/ Sprawdzałem też bez if, kod poszedł, ale nie pomogło. Znajdę w weekend trochę czasu, to jeszcze raz spróbuję :) Dzięki Jola.