UWAGA: Strona zawiera materiały archiwalne. Większość artykułów dotyczy Joomla! 1.0
Start arrow Programowanie arrow Poradniki arrow Tworzenie komponentu w Mambo CMS
Tworzenie komponentu w Mambo CMS - Wstęp Drukuj Email
Spis treści
Wstęp
dailymessage.php
admin.dailymessage.php
admin.dailymessage.html.php
toolbar.dailymessage.php
toolbar.dailymessage.html.php
install.dailymessage.php i uninstall.dailymessage.php
dailymessage.xml
Dodatek 1. Komponenty versus Moduły
Dodatek 2: Zakładki na stronach administracyjnych

Ten plik generuje to, co widzą odwiedzający nasz portal, kiedy oglądają komponent Daily Message (Wiadomość Dnia). Kod programu jest nieskomplikowany i w zupełności wystarcza w różnych możliwych zastosowaniach Mambo. Jest to jedyny plik, który znajdzie się w katalogu /componenst/com_dailymessage/. Zapoznajmy się krok po kroku z jego zawartością.

<?php 
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );

Ta linia sprawdza, czy nasz plik jest wywoływany poprzez Mambo. Powoduje, że bezpośrednie wywołanie pliku nie jest możliwe. Czyli - jeśli ktoś by próbował otworzyć stronę http://www.twojastrona.com/componenst/com_dailymessage/dailymessage.php otrzymałby komunikat Direct Access to this location is not allowed [Bezpośredni dostęp do pliku zabroniony]. Swoją drogą możesz śmiało zmienić komunikat w powyższej linii na coś bardziej swojsko brzmiącego jak - 'Jak śmiesz próbować tych brudnych sztuczek'.

global $database;

Instrukcja ’global’ powoduje, że zadeklarowany wcześniej w Mambo obiekt bazy danych jest dostępny do użytku w naszym programie.

 // get configuration information
    $database->setQuery("SELECT * FROM #__joe_dailymessage_conf LIMIT 1");
    $rows = $database->loadObjectList();
    $row = $rows[0];

Pobieranie ustawień komponentu poprzez wykonanie zapytania do bazy danych. Wykonanie zapytania do bazy MYSQL jest wykonywane w Mambo w dwóch krokach. Pierwszy to zdefiniowanie treści zapytania poprzez funkcje setQuery. Drugi krok to wykonanie i odczytanie wyników zapytania poprzez użycie funkcji loadObjectList(). Zmienna $row - $row[0] przechowuje informacje z pierwszego obiektu otrzymanego w wyniku zapytania. Jako, że chcemy tutaj uzyskać informacje o ustawieniach komponentu powinniśmy otrzymać tylko jeden obiekt w wyniku tego zapytania. Proszę sobie wyobrazić taki obiekt ($row) jako jeden wiersz z bazy danych otrzymany w wyniku zapytania. $rows przechowuje wszystkie wiersze zwrócone w wyniku zapytania.

Warto zauważyć, że znaki '#_' zostają automatycznie zamienione na prefiks tabel bazy danych, jaki ustaliliśmy podczas instalacji lub ustawiliśmy w konfiguracji Mambo. Standardowo takim prefiksem jest mos (czyli u nas tabela nazywa się mos_joe_dailymessage_conf). Ta funkcjonalność jest przydatna, gdy baza danych musi być współdzielona poprzez różne aplikacje lub na tanich hostach, które udostępniają tylko jedna bazę danych.

     $bold = $row->bold;
     $italic = $row->italic;
     $underline = $row->underline;
     $showdate = $row->showdate;

Po tym, jak uzyskaliśmy informacje z bazy danych, możemy stworzyć zmienne, których użyjemy za chwile.

Uwaga!Powyższe zmienne przechowują informacje o pogrubieniu ($bold), pochyleniu ($italic), podkreśleniu ($underline), znaczniku daty ($showdate).

    if($bold == 1)  {
        $starttags .= "<strong>";
        $endtags = "</strong>" . $endtags;
     }
    if($italic == 1)  {
        $starttags .= "<i>";
        $endtags = "</i>" . $endtags;
     }
    if($underline == 1)  {
        $starttags .= "<u>";
        $endtags = "</u>" . $endtags;
     }

Powyższe instrukcje budują znaczniki HTML w zależności od naszych ustawień. Znaczniki te zostaną użyte poniżej podczas wyświetlania Wiadomości Dnia.

Uwaga!Tak więc jeśli ustawiliśmy w konfiguracji komponentu, ze wiadomość ma być pogrubiona ($bold) dodajemy znaczniki HTML: <b> i </b> itd.

//get data and output accordingly
     $database->setQuery("SELECT * FROM #__joe_dailymessage WHERE published = '1'");
     $rows = $database->loadObjectList();

Używając tego samego obiektu bazy danych oraz metody zapytania opisanej powyżej uzyskujemy wszystkie wiadomości dnia, jakie powinniśmy pokazać odwiedzającemu nasz portal. Obiekt $rows będzie teraz zawierał wszystkie wiadomości.

     ?>
          <table>
     <?php

Zaczynamy generować kod HTML. Znacznik ?> pozwala nam wyjść z trybu PHP, aby móc przesłać do przeglądarki kod HTML dopóki nie napotka znacznika <? (ponowne wejście do trybu PHP). Efekt jest taki sam jak przy użyciu funkcji echo()w PHP.

Uwaga!W powyższej linii zaczynamy tworzyć tabele z Wiadomościami Dnia.

     foreach($rows as $row)  {
          if($showdate == 1)
               echo "<tr><td>" . mosFormatDate($row->date) . "</td>";
          else
               echo "<tr>";
                echo "<td>" . $starttags . $row->message . $endtags . "</td></tr>";
          }

Pętla foreach przegląda obiekt $rows i zapisuje każdą przechowanej tam wiadomości dnia w zmiennej $row. Następnie tworzymy kod HTML korzystając z wcześniej stworzonych znaczników.

     ?>
          </table>

Zamykamy tryb PHP oraz tabele HTML z Wiadomościami Dnia.



Zmieniony ( 14.12.2007. )
 
« poprzedni artykuł