[ Pobierz całość w formacie PDF ]
.Możliwe jest również stworzenie stron zapomocą których można zarządzać danymi dynamicznymi i za pomocą takiego interfejsu WWW generować statyczne strony.Użycie FastTemplateW ostatnim rozdziale tematem przykładów był katalog produktów.Jest to kolejny przykład witryny, gdzie aktualne dane strony niezmieniają się zbyt często.Kategorie i produkty oferowane przez firmę mogą zmieniać się raz w miesiącu lub raz w tygodniu.Katalogjednak może być przeglądany codziennie i zawsze musi zawierać aktualne dane.Klasa FastTemplate była używana w poprzednimrozdziale do stworzenia witryny katalogu.W tym rozdziale zostaną omówione zmiany, jakie należy wprowadzić do skryptów tak, abybyła możliwość tworzenia stron statycznych.Po pierwsze, musi zostać zdefiniowana struktura katalogu.Dla stron kategorii każda ze stron jest nazywana korzystając z szablonumgmt_cat_{$aCatID}.html.Na wydruku 16.2 znajduje się skrypt, który tworzy listę kategorii produktów dla wszystkich kategorii.Jeston podobny do skryptu z wydruku 16.15.z rozdziału 15. Witryny oparte o bazę danych.W tym przypadku tworzy on listę wszystkichkategorii i zapisuje kolejne strony do osobnych plików, według wspomnianego szablonu nazw.Wydruk 16.2.Wykorzystanie klasy FastTemplate do tworzenia statycznych stron HTML z PHPdefine( array( "base" => "mgmt_app_base.tpl","body" => "mgmt_body.tpl","footer" => "mgmt_footer.tpl","page_body" => "mgmt_prod_main.tpl","prod_item" => "mgmt_prod_item.tpl" ) );$aSQL = "select category_id from mcCategories";$aCatDB->query( $aSQL );while( $aCatDB->next_record() ){$cat_id = $aCatDB->f( "category_id" );//print( "$cat_id" );$aSQL = "select a.category_id, a.product_id, a.name, a.external_id, ";$aSQL.= "a.price, a.ship_weight, a.has_image_file, a.descr, b.name as ";$aSQL.= "cat_name from mcProducts a, mcCategories b where ";$aSQL.= "(a.merchant_id = $aMerchantID) and (a.category_id = b.category_id)";$aSQL.= "and ( a.category_id = $cat_id ) order by a.name";$aDB->query( $aSQL );if ( $aDB->num_rows() > 0 ){while ( $aDB->next_record() ){$aProdName = $aDB->f( "name" );$aProdEID = $aDB->f( "external_id" );$aProdPrice = $aDB->f( "price" );$aProdWeight = $aDB->f( "ship_weight" );$aHasImage = $aDB->f( "has_image_file" );$aProdDescr = $aDB->f( "descr" );$aCatName = $aDB->f( "cat_name" );$aCatID = $aDB->f( "category_id" );$aProdID = $aDB->f( "product_id" );$aImageFile = "images/default.jpg";if ( $aHasImage == True ){$aImageFile = "images/{$aMerchID}_{$aCatID}_{$aProdID}.jpg";}$aTPL->assign( array( "PROD_NAME" => $aProdName,"CAT_NAME" => $aCatName,"PROD_EID" => $aProdEID,"PROD_PRICE" => '$'.number_format( $aProdPrice, 2 ),"PROD_DESCR" => $aProdDescr,"IMAGE_FILE" => $aImageFilePHP Kompendium wiedzy207 ) );$aTPL->parse( "ITEM_LIST", ".prod_item" );}}else{$aTPL->assign( array( "ITEM_LIST" => "Brak produktów dla kategorii $aCatName." ) );}$aTPL->assign( array( "TITLE" => "Zarządzaniekatalogiem towarów: Kategoria $aCatName","MERCHANT_NAME" => GetMerchantName( $aDB, $aMerchantID )) );$aTPL->parse( "PAGE_BODY", "page_body" );$aTPL->parse( "FOOTER", "footer" );$aTPL->parse( "BODY", "body" );$aTPL->parse( "PAGE", "base" );$aFileName = "mgmt_cat_{$aCatID}.html";$aFile = fopen( $aFileName, "w" );fwrite( $aFile, $aTPL->fetch( "PAGE" ) );fclose( $aFile );print("Kategoria, $aCatName, zapisana do pliku: $aFileName");$aTPL->Clear();}?>W skrypcie tym zakładamy, że w zmiennej sesji przekazany został identyfikator sprzedawcy.Podczas wykonywania swoich zadań klasaFastTemplate zapisuje całą zawartość strony w wewnętrznych buforach.Aby zapisać te dane w dowolnej zmiennej można skorzystać zmetody fetch().W poprzednim przykładzie metoda fetch() jest wykorzystywana do pobrania wartości zmiennej FastTemplatePAGE, która reprezentuje całą stronę HTML.Wartość ta jest zapisywana do pliku wyjściowego, a do przeglądarki wysyłany jestkomunikat potwierdzający prawidłowe wykonanie operacji
[ Pobierz całość w formacie PDF ]