FuNi – zmyślny CMS na plikach tekstowych
Narzędzia SEO Luty 27th, 2010
FuNi jest darmowym CMSem opartym na plikach tekstowych. Inspiracją do napisania tego prostego systemu zarządzania treścią był PikoCMS mendaxa. Od razu przyznam się, że nigdy nie używałem tego produktu. Po prostu szukałem narzędzia, które pomogłoby mi w prosty sposób zarządzać artykułami na stronach bez konieczności żmudnej konfiguracji bazy danych.
PikoCMS wyglądał ok, ale zupełnie nie pasował do mojej koncepcji, nie generował dodatkowych podstron dla tagów, a zarządzanie nim wydawało się nieczytelne ze względu na „wypluwanie” i edycję wszystkich danych na raz. Był prosty, chciałem czegoś bardziej zmyślnego. Przeglądałem tematy na PiO dotyczące prostych CMSów. Większość z nich wcale nie była prosta, a prawie każdy korzystał z bazy danych. Oczywiście trudno się nie zgodzić z tym, że MySQL daje o niebo większe możliwości, ale ja potrzebowałem czegoś względnie małego i prostego z możliwością szybkiej instalacji.
Największy nacisk w skrypcie został położony na sposób przechowywania danych, tak by mógł być jak najbardziej wydajny, przy zachowaniu nieduplikowania tych samych danych w kilku plikach. Wybrane rozwiązanie przypomina nieco sposób przechowywania informacji w bazach danych.
Szybki dostęp:
- wydajność; mimo, że korzysta wyłącznie z plików tekstowych, to wybrane rozwiązanie sposobu przechowywania danych jest przemyślane
- instalacja ogranicza się do wgrania plików na serwer
- proste, 5-minutowe dostosowywanie szablonów; całość zamyka się do edycji 1 pliku
- wbudowany, intuicyjny edytor HTML; możliwość kopiowania artykułów bezpośrednio z Worda
- wgrywanie zdjęć do galerii; nie musimy używać połączenia FTP, możemy to zrobić przez panel
- obsługa tagów, generujących dodatkowe podstrony
- zarządzanie artykułami; intuicyjne, proste i szybkie
- import artykułów z plików tekstowych; wystarczy przygotować pliki o odpowiednim formacie i wgrać
- pingowanie; przy dodawaniu lub imporcie arykułów skrypt wysyła pingi
- mapa strony; linki do wszystkich artykułów
- opcje ustawień
W skrypcie nie mogło zabraknąć oczywiście implementacji przyjaznych adresów URL:)
Warunkiem użytkowania FuNi jest pozostawienie linka prowadzącego do strony autora. Opcją dla osób, które nie chcą „ujawniać” swoich stron jest wykupienie możliwości jego niewyświetlania. W przypadku uiszczenia kwoty 59zł netto (71,98zł brutto) możemy usunąć informację o skrypcie na każdej stronie, na której zostało zainstalowane oprogramowanie i której właścicielem jest ten sam Licencjonobiorca. Tym samym możliwość taka dotyczy wszystkich domen właściciela licencji.
Pieniążki w kwocie 71,98zł należy wpłacać na konto:
KEO
ul. Bursztynowa 41/32
20-576 Lublin
NIP: 7123104545
MultiBank: 49 1140 2017 0000 4502 0755 3011
Tytułem: Oprogramowanie FuNi – usunięcie linka ze stopki
Po dokonaniu wpłaty proszę koniecznie wysłać maila na adres ps{osiołek}iqq.pl. W treści proszę zawrzeć:
- dane do faktury (dane firmy lub osoby prywatnej, w tym nr NIP)
- dane osoby lub firmy, której przyznana zostanie możliwość usunięcia linka ze stopki
Demo:
Wygląd zewnętrzny:
http://funi.ghosti.pl
Panel administracyjny:
http://funi.ghosti.pl/ext/
login: deMo
hasło: deMo1
Zrzuty ekranu:
Wygląd zewnętrzny
Panel administracyjny
Download
Pobierając skrypt lub wykorzystując go w jakikolwiek sposób jednocześnie oświadczasz, że zapoznałeś/aś się z warunkami licencji, akceptujesz je i zgadzasz się na warunki rekompensaty w przypadku naruszenia warunków użytkowania skryptu FuNi.
![]() 1152 Pobrań |
![]() 865 Pobrań |
| FuNi v.1.0 Beta4 | Szablony 1 |
Instalacja
- Edycja pliku conf.php, w tym miejscu ustawiamy login i hasło do panelu administratora oraz nazwy odpowiednich katalogów.
- Wgranie wszystkich plików na serwer.
- Ustawienie chmodów wg poniższego schematu
Dla plików:
_heart.txt 666
_settings.txt 666
_tags.txt 666
Zależnie od ustawień serwera zaleca się ustawienie niższych chmodów, tj. dla plików 644 lub 664. Do testowania poprawności działania skryptu z wybranymi chmodami najlepiej używać zakładki ustawienia. Po kliknięciu przycisku Zmień nowe dane zostaną zapisane lub wystąpi błąd (zależnie od ustawień chmodów dla pliku _settings.txt).
Dla katalogów:
katalog_galerii 777
katalog_artykułów 777
Domyślnymi katalogami są: dla artykułów – katalog funi, dla galerii katalog – zdjecia. Zależnie od ustawień serwera zaleca się ustawienie niższych chmodów, tj. dla katalogów 755 lub 775. Do testowania ich poprawności najlepiej skorzystać z opcji wgrywania zdjęć na serwer.
Obsługa
Dostęp do panelu administracyjnego uzyskujemy dopisując do adresu ext/. Jest to domyślny adres zarządzania skryptem.
Zakładka dodaj
- dodawanie i publikowanie nowych artykułów
- wgrywanie zdjęć do galerii (aby wgrać klikamy na „Wgraj do galerii” – prawy górny róg, wybieramy plik i wgrywamy go, w rezultacie dostajemy adres przesłanego zdjęcia, teraz pozostaje skorzystać z edytora HTML, klikamy Obraz i wklepujemy do pola URL adres zdjęcia)
Zakładka edytuj
- edycja i usuwanie artykułów
Zakładka import
- import artykułów z plików tekstowych
Warunkiem są odpowiednio przygotowane pliki tekstowe.
Pierwsza jego linijka to tytuł nowego artykułu (jako adres URL może być brany tutuł artykułu lub nazwa importowanego pliku, zależnie od ustawień -> patrz zakładka ustawienia).
Druga linijka to oddzielone przecinkiem tagi przypisane do artykułu.
Kolejne dotyczą już samej treści artykułu. Stosowanie tagów HTML jest dozwolone.
W pierwszym etapie wgrywamy pliki na serwer, dopiero potem możemy wybierać, które pliki chcemy zaimportować. Nie należy przejmować się białymi znakami, takimi jak spacje czy tabulatory, występującymi na początkach i końcach linii. Zostaną one automatycznie usunięte.
Nową opcją jest możliwość importu artykułów z jednego pliku. W tym celu należy wgrać na serwer odpowiednio przygotowany plik input.txt, w którym artykuły powinny być oddzielone od siebie podwójnym znakiem nowej linii (podwójnym enterem). Po kliknięciu opcji „Pokrój plik input.txt” automatycznie zostaną utworzone pliki z pojedynczymi artykulami, które będzie można już normalnie importować (wszystkie na raz lub pojedynczo).
Zakładka ustawienia
- edycja ustawień skryptu, w tym m.in. włączanie/wyłączanie pingowania, ustawienia dla importu, ustawienia dla tagów, meta-tagi strony, struktury adresów URL, panel boczny.
Dostosowywanie szablonów
Dostosowanie szablonu polega na stworzeniu pliku template.php z wykorzystaniem funkcji udostępnianych przez skrypt. Do wersji, którą pobierasz dołączony jest tak przygotowany plik.
Dostępne funkcje:
generateLegal()
bezwzględnie wymagana funkcja, drukuje informacje o skrypcie; jej umieszczenie jest warunkiem licencji użytkowania bezpłatnego
generateMenu($begin,$end,$show_map,$limit,$chars,$random,$trim)
funkcja wyświetla linki do artykułów, 7-parametrowa, kolejno
$begin – kod wyświetlany przed każdym artykułem, np. ‘<li>’, domyślnie ”
$end – kod wyświetlany po każdym artykule, np. ‘</li>’, domyślnie ”
$show_map – czy pokazywać link do mapy, np. false (true – tak, false – nie), domyślnie false
$limit – ograniczenie wyświetlania ilości linków (0 oznacza wyświetl wszystkie), domyślnie 0
$chars – ograniczenie ilości znaków dla tytułów artykułów (0 oznacza wyświetl cały tytuł), domyślnie 0
$random – czy mają być losowe (true – tak, false – nie), domyślnie false
$trim – czy obciąć końcowy znak $end (true – tak, false – nie), domyślnie false
Przykładowe wywołania w szablonie:
<?php generateMenu(‘<li>’,'</li>’,true) ?>
Jako wynik otrzymamy linki do wszystkich artykułów w kolejności od najstarszego i na końcu także link do mapy strony, wszystkie ozdobione znacznikami li.
<?php generateMenu(‘<li>’,'</li>’,false,3,15) ?>
Spowoduje to wyświetlenie 3 linków prowadzących do najstarszych artykułów, każdy tytuł zostanie ograniczony do 15 znaków.
<?php generateMenu(‘<li>’,'</li>’,true,0,0,true) ?>
W efekcie zostaną wyświetlone linki do wszystkich artykułów, jednak w losowej kolejności, każdy tytuł zostanie pokazany w całości. Dodatkowo wyświetlony zostanie także link do mapy.
<?php generateMenu(”,’ | ‘,true,1,25,false,true) ?>
Linki zostaną wyświetlone w ilości 1, będzie to link do najstarszego artykułu, jeśli jego anchor będzie dłuższy niż 25 znaków, to zostanie obecięty do tyluż znaków. Linki będą oddzielone od siebie wyrażeniem ” | „. Dodatkowo wyświetlony zostanie także link do mapy. Po ostatnim linku wyrażenie ” | ” nie wystąpi.
generateTags($begin,$end,$before,$after,$random,$limit,$trim)
funkcja wyświetla linki do tagów, 7-parametrowa, kolejno
$begin – kod wyświetlany przed całym blokiem tagów np. ‘<h4>Tagi</h4><ul>’, domyślnie ”
$end – kod wyświetlany po całym bloku z tagami, np. ‘</ul>’, domyślnie ”
$before – kod wyświetlany przed każdym tagiem, np. ‘<li>’, domyślnie ”
$after – kod wyświetlany po każdym tagu, np. ‘</li>’, domyślnie ”
$random – czy mają być losowe (true – tak, false – nie), domyślnie false; false oznacza wyświetl te przypisane do artykułu
$limit – ograniczenie wyświetlania ilości tagów (0 oznacza wyświetl wszystkie), domyślnie 0
$trim – czy obciąć końcowy znak $after, domyślnie false
Przykładowe wywołania w szablonie:
<?php generateTags(”,”,”,’ ‘,true,6) ?>
Spowoduje to wyświetlenie 6 losowych tagów.
<?php generateTags(‘<h4>Tagi</h4><ul>’,'</ul>’,'<li>’,'</li>’) ?>
W efekcie wyświetlony zostanie blok tagów powiązanych z artykułem.
<?php generateTags(”,”,”,’, ‘,true,20,true) ?>
Jako wynik zobaczymy linki do 20 losowo wybranych tagów, oddzielonych przecinkiem. Po ostatnim tagu przecinek nie zostanie wyświetlony, o czym decyduje ostatni parametr funkcji.
generateMeta($css)
wyświetla meta-tagi strony, w tym tytuł strony
$css – nazwa pliku lub ścieżka do arkusza stylów CSS, np. ‘default.css’, domyślnie ”; wartość pusta oznacza, że link do arkusza stylów w ogóle nie będzie wyświetlany
generateTopic()
wyświetla temat strony, konfigurowany w zakładce ustawienia
generateTitle()
wyświetla tytuł strony; jest to temat artykułu, dla tagu inny
generateAbout()
wyświetla informacje o stronie (zakładka ustawienia); jeśli wartość pusta to wyświetlany jest adres strony
generateAddress()
wyświetla adres strony
generateContent()
wyświetla treść artykułu
generateSidebar()
wyświetla kod panelu bocznego, konfigurowanego w zakładce ustawienia
FAQ
1. Dlaczego zamiast strony głównej dostaję komunikat:
„404 Nie znaleziono
Strona nie istnieje. Przyczyna moze byc brak artykulu z nazwa pliku _.”?
Aby poprawnie wyświetlana była strona główna wymagane jest, by jeden z artykułów miał jako nazwę pliku podany znak _. Skorzystaj z zakładki edycja i zmień nazwę jednego z artykułów na _ lub dodaj nowy artykuł wpisując jako nazwę pliku znak _.
2. Dlaczego strona główna nie jest pierwsza w menu generowanym funkcją generateMenu()?
Na kolelność wyświetlania pozycji menu wpływ ma data stworzenia artykułu. Aby tak było należy utworzyć artykuł z nazwą pliku _ jako pierwszy, można to zrobić dodając nowy artykuł lub importując go.
3. Co zrobić, aby w adresach tagów podobnie jak dla artykułów widniał na końcu znak /?
Za wyświetlanie bloku tagów odpowiada funkcja generateTags() , której implementacja zawarta jest w pliku router.php. Dla osiągnięcia zamierzonego celu od wersji 1.0 Beta2 wzwyż wystarczy dokonać odpowiednich zmian w panelu admina w zakładce ustawienia.
4. Jak uzyskać własny adres do podstrony tagu?
Dla uproszczenia załóżmy, że chcemy uzyskać adres o strukturze /tag/nazwa-tagu/.
Ważne! Od wersji 1.0 Beta2 możemy dowolnie definiować strukturę adresów URL dla artykułów, tagów oraz mapy strony. Jeśli chcemy wykonać takie zmiany to wystarczy przejść do zakładki ustawienia w panelu administracyjnym, nie ma potrzeby jakichkolwiek zmian w plikach. W miejsce nazwy tagu należy wpisać {TNAME}, a w miejsce nazwy artykuły {ANAME}.
Dla uzyskania zamierzonego efektu w polu Struktura URL dla tagów należy wpisać wartość /tag/{TNAME}/.
5. Dlaczego nie działa import w funi? Tak jakby nie widział plików. Czy wgram na serwer normalnie, czy za pośrednictwem panelu, caly czas wyświetla „brak plików do importu”.
Po pierwsze pliki do importu muszą mieć rozszerzenie .txt, po drugie ich nazwy mogą się składać tylko z liter (bez typowo polskich), cyfr i znaków przecinka, myślnika lub znaku podkreślenia. Dodatkowo nie mogą składać się z samych cyfr, np. 12.txt. Taka formę przyjmują po imporcie, wtedy nie będą wyświetlone tylko uznane za już importowane.
6. Po zalogowaniu do panelu admina nie widzę absolutnie nic poza całą pustą stroną koloru tła panelu, co mogę zrobić w tej sytuacji?
Zapewne w pliku conf.php zdefiniowałeś nieprawidłowy login lub hasło. Typowym problemem jest wybranie zbyt krótkiego hasła. Względy bezpieczeństwa nie pozwalają na wybranie hasła poniżej 5 znaków. Po więcej szczegółów zajrzyj do pliku conf.php. Przy każdej ze zmiennych jest tam wypisany zestaw dopuszczalnych znaków i liczby tychże znaków.
7. Chciałbym/-ałabym, żeby nieistniejące podstrony serwisu zamiast błędu 404 o nieznalezieniu strony przekierowywały użytkowników na stronę główną.
Pierwszym krokiem jest stworzenie lub wgranie artykułu na stronę główną. By przystąpić do dalszej części absolutnie konieczne jest poprawne działanie strony głównej (tj. niezgłaszanie błędu 404 o nieznalezieniu strony po wejściu na stronę główną). W przeciwnym razie skrypt się zapętli. Otwórz teraz plik index.php z katalogu głównego i dokonaj zmian w jego końcowej części. Zamień w nim fragment:
header(„HTTP/1.1 404 Not Found”);
echo ‘<h1>404 Nie znaleziono</h1>’;
echo ‘Strona nie istnieje. Przyczyna moze byc brak artykulu z nazwa pliku <strong>_</strong>.’;
na
header (‘HTTP/1.1 301 Moved Permanently’);
header (‘Location: http://’.$_SERVER['HTTP_HOST']);
.
8. Wpisanie nieprawidłowego tagu w adresie URL powoduje przekierowanie 301 na stronę główną serwisu. Może to powodować problemy z weryfikacją właściciela serwisu poprzez wgranie pliku (usługi Google Analytics, Narzędzia dla webmasterów i inne). Tej weryfikacji można dokonać w inny sposób, np. dołączając odpowiedni meta tag. Jeśli jednak z jakich innych powodów chcesz, by nieprawidłowy tag zgłaszał błąd 404, to
Otwórz teraz plik router.php z katalogu głównego i dokonaj zmian w jego środkowej części. Zamień w nim fragment:
header (‘HTTP/1.1 301 Moved Permanently’);
header (‘Location: http://’.$_SERVER['HTTP_HOST']);
na
header(„HTTP/1.1 404 Not Found”);
echo „<h1>404 Nie znaleziono</h1>\nStrona nie istnieje.”;
.
Tagi: cms, cms na plikach tekstowych, funi, pliki tekstowe, prosty cms, system zarządzania treścią
01/24/2011 at 23:10
Przydałaby się opcja typu „szukaj”.
03/10/2011 at 11:09
router.php
linia 85
element nie jest zakończony
03/10/2011 at 11:10
router.php
linia 85
element ‘a’ nie jest zakończony
03/20/2011 at 15:49
Witam.
Jak na stronie wstawić „flash-a” i formularz kontaktowy?
03/30/2011 at 11:31
Super narzędzie ! Dziękuje !
04/10/2011 at 12:06
Dziękuję za wszystkie komentarze.
@Katalog, na razie nie planuję wprowadzenia opcji szukaj.
@groovy, dzięki, poprawiłem.
@Aga, formularza kontaktowego nie da się o tak po prostu wstawić, nie jest on wbudowany do skryptu, ale rozważę tę możliwość; flash, myślę, że to kwestia ustawienia $allowed_tags w pliku conf.php
@mnnich, miło słyszeć:)
05/24/2011 at 13:26
Odnośnie FAQ1 – próbuję dodawać nowy artykuł, edytować stare, ale wciąż nic, pomimo znaku _ w nazwa pliku nie działa…
Testowane na serwerach: nazwa.pl i 1&1
Gdy odwołuję się do katalogu w którym zainstalowałem cms wyświetla komunikat „Plik nie istnieje”
gdy odwołuję się do index.php to błąd jak w FAQ1.
07/15/2011 at 9:54
Gdy instaluję funi w katalogu głównym serwera to wszystko OK.\
Gdy tworzę folder na serwerze i w nim instaluję to niedziała, jak rozwiązać ten problem ??
08/19/2011 at 8:29
Tysięczne pobranie należało do mnie
09/05/2011 at 23:44
Upierdliwe jest zamienianie domeny glownej bez www na z www. Przy standardowych regulkach jedzie na index.php uparcie i wywala 404.
10/01/2011 at 9:46
Howdy siblings loves your charming website and pls don’t stop!
01/05/2012 at 8:07
Heya i am for the first time here. I came across this board and I find It really useful & it helped me out a lot. I hope to give something back and aid others like you helped me.