![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
Mam problem ze stworzeniem RSS dla mojej strony w Symfony.
Widzę dwie metody jakimi można to wykonać, ale obie są problematyczne: 1. Stworzyć moduł 'rss', w akcji pobierać dane, np. newsy z bazy i przekazywać do szablonu. Szablon jako plik o strukturze xml'a rss. Problem z takim rozwiązaniem polega na tym, że szablon dostaje jeszcze m.in. nagłówki od sf więc nie będzie nigdy poprawnym dokumentem xml. Być może da się to jakoś obejść, np. jakieś ustawienie sf być może zwraca "goły" szablon - nie znalazłem tego. 2. Mogę na chama stworzyć plik rss.php w katalogu web/ obok index.php i tam będzie kierował link "rss" ze strony. Problem z tym rozwiązaniem jest taki, że nie będą tam dostępne żadne helpery sf i połączenie z bazą będę musiał nawiąząć w tym pliku osobno, podobnie jak obsługę zapytań sql, co brzmi bardzo słabo. Jestem pewien że moje problemy i moje propozycje rozwiązań wynikają z tego, że nie wiem o jakiejś jednej bardzo ważnej rzeczy i będę wdzięczny za nakierowanie mnie na prawidłowe tory (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#2
|
|
Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Przecież w symfony można zmienić nagłówki. Sposoby są różne. Możesz w zmienić w view.yml. Możesz też zmieniać w akcji w filtrze gdzie chcesz (za pomocą obiektu klasy sfWebResponse). Wszystko jest w dokumentacji.
Nie chce Ci się poszukać samemu? Wolisz czekać? Żeby nie wyszło, że jestem złośliwy to może ten plugin Ci się przyda. |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
To ja będę nieco milszy i naprowadzę kolegę. W view.yml możesz zdefiniować osobny layout dla danej akcji:
Kod akcjaSuccess: layout: layout_simple Tworzysz plik apps/frontend/templates/layout_simple.php i już masz dane wpakowane w osobny layout. O nagłówkach to sobie sam poszukaj (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, chyba o ten plugin mi chodziło.
Cytat Wszystko jest w dokumentacji. Nie chce Ci się poszukać samemu? Wolisz czekać? Nie popadajmy w paranoję, że nie mogę spytać o to na forum. Wiadomo, że każda wiadomość jest też "gdzieś indziej". Poza tym zauważ, że miałem świadomość tego, że można modyfikować sposób wyświetlania layoutu a istotą moich wątpliwości było raczej to, czy jest to poprawne postępowanie dla zrobienia rss. Linki do plugina świadczą, że być może nie do końca (chyba że on działa tak samo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) Dalsza część problemów z tworzeniem kanału rss. Mój plik szablonu wygląda tak:
Jeżeli wrzucę ten plik obok index.php w katalogu web/ i wywołam z pominięciem sf (www.domena.pl/plik.php) to wszystko jest w porządku a opera pyta mnie czy zasubskrybować kanał. Natomiast jeżeli ten plik wywołuję jako szablon, opera nie reaguje. Wyłączyłem layout dla tego modułu, nie ma też żadnych nagłówków. Źródło strony jako modułu nie różni się od tego jako osobny skrypt - drugi działa, ten pierwszy nie. Jaki może być tego powód? Będę jak zwykle wdzięczny za pomoc. Zauważyłem pewną różnicę między tymi dwoma przypadkami: w pliku wyświetlanym jako moduł treść kanału jest o parę milimetrów odsunięta od wewnętrznych krawędzi okna przeglądarki a gdy plik wyświetlam poza sf to tego odstępu nie ma. Czy to możliwe że sf podpina jakieś style? Przecież wyłączyłem layout dla modułu... skąd może brać się ta wizualna różnica? Ten post edytował Foxx 9.10.2008, 15:58:41 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 5 Dołączył: 29.03.2006 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
@Foox
Ale nie musisz tworzyć osobnych plików poza strukturą symfony aby mieć RSS. Pozwól że pokaże Ci bardzo prosty przykład. W przykładzie wykorzystana jest biblioteka Feed z paczki ezComponents. Ale nic nie stoi na przeszkodzie abyś użył czegoś innego. 1. Tworzymy nowy moduł, np. Rss 2. Tworzymy akcję "AllAction.class.php" która to będzie odpowiedzialna za wyświetlenie RSS'a dla całego serwisu.
Oczywiście dane do kanału RSS możesz pobrać z bazy danych, pliku etc. Ale osobiście radzę napisanie prostego taska który będzie raz dziennie generował plik rss.xml który będziemy już w akcji (AllAction) tylko zczytywać i wyświetlać. Dzięki temu nasz serwer jak i baza danych nie będzie obciążona ciągłym pobieraniem jak i generowaniem RSS'a. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
Dzięki.
Rzeczywiście, z pomocą plugina było łatwiej. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 05:19 |