Personal tools
You are here: Home Użytkownicy jeremi CMFSin

CMFSin

Powrót do strony rozwiązań

Jest kilka dostępnych produktów dla Plone'a, które umożliwiają integrację RSS'ów w naszym portalu :

  • CMFSin
  • PloneRSS
  • PodChannel

Szczerze powiem, że testowałem wszystkie i udało mi się uruchomić tylko CMFSin, a to też po ostrych walkach :)

Ale do rzeczy - aby CMFSin zadziałał z Plone 2.1.2 potrzebne jest dokonanie paru zmian. Po zainstalowaniu produktu wszystko wygląda cacy, ale gdy wejść w sin_tool w ZMI i zakładkę Debug zobaczymy, że nie ściąga żadnych RSS'ów.

Aby to się stało faktem należy podmienić pliki znajdujące się w katalogu skins\sin na ich odpowiedniki :

Do rozwiązania pozostanie tylko kwestia nieśmiertelnych, polskich czcionek :)

Przykładowe ustawienie pliku konfiguracyjnego - w [channels] dodać : 

gazeta1=1h:http://rss.gazeta.pl/pub/rss/gospodarka.xml

następnie w [maps] dodajemy np. :

Aktualności gospodarcze=gazeta1

i ostatnią rzeczą jaką robimy to w proporties naszego portalu w jednym ze slotów dodajemy :

here/sin_tool/macros/Aktualności gospodarcze

Po tych działaniach będziemy mieli dostęp do RSS w tym konkretnym przypadku z GW (nie żebym lubił czytać tego gniota - po prostu tak wyszło :) ) Jedyne co nie będzie nam odpowiadało to brak wyświetlania polskich czcionek w portlecie - zaradzić temu jest zaskakująco prosto :

w pliku sinTool.py szukamy definicji funkcji udecode i tam zamiast aktualnie wpisanego kodowania, wklepujemy takie kodowanie jakie występuje w ściąganych RSS (w przypadku GW jest to iso8859-2) tak że linia kodu będzie wyglądała w ten sposób :

def udecode(data, encoding='iso8859-2'):

Jednak to jeszcze nie wszystko - gdy klikniemy w 'See more' na dole portletu CMFSin ładnie wyświetli nam aktualne nagłówki z opisami w centralnym oknie portalu, ale wystąpi mały zgrzyt... brak obsługi polskich czcionek.

Ale i temu jesteśmy w stanie zaradzić - znowu edycja pliku sintool.py :

znajdujemy fragment następujący :

        if info.has_key('title'):
            if type(info['title']) not in (UnicodeType, ):
                info['title'] = udecode(info['title']).encode(enc)
        if info.has_key('description'):
            if type(info['description']) not in (UnicodeType, ):
                info['description'] = udecode(info['description']).encode(enc)
        for r in data:
            if r.has_key('title'):
                if type(r['title']) not in (UnicodeType, ):
                    r['title'] = udecode(r['title']).encode(enc)

i dodajemy cuś takiego (pogrubiony tekst - reszta to to samo co u góry) :

        if info.has_key('title'):
            if type(info['title']) not in (UnicodeType, ):
                info['title'] = udecode(info['title']).encode(enc)
        if info.has_key('description'):
            if type(info['description']) not in (UnicodeType, ):
                info['description'] = udecode(info['description']).encode(enc)
        for r in data:
            if r.has_key('title'):
                if type(r['title']) not in (UnicodeType, ):
                    r['title'] = udecode(r['title']).encode(enc)
            if r.has_key('description'):
                if type(r['description']) not in (UnicodeType, ):
                    r['description'] = udecode(r['description']).encode(enc)

I to by było na tyle!! :)

Powrót do strony rozwiązań

Document Actions