Instalacja
1. Pierwsze logowanie
Losowe hasło do pierwszego zalogowania wyświetli się po wejściu na stronę po wypakowaniu archiwum. Po zalogowaniu należy od razu zmienić domyślne hasło w zakładce "security" oraz zmienić adres do logowania na inny niż domena.pl/loginURL
2. Struktura plików
Podstawowa struktura dotyczy jedynie 5 plików.
• index.php // WonderCMS core file, contains most of the functionality • database.js // default database, is created the first time you visit your website • htaccess // creates clean URL's, denies access to database.js, disables directory/file listing and server signature • [themes folder] - [default theme folder] - theme.php // default theme file - [css folder] - style.css // default styles
2. Themes
• Parallax - ma ciekawe funkcje, ale powoduje ERR-1
Zmiana thema w bazie - czasami po zainstalowaniu motywu przestaje działać funkcja zmian (ERR-1). Można wtedy ręcznie zmienić nazwę motywu w pliku bazy database.js
3. Pliki (FILES) do Uploadu
• można uploadować tylko pojedynczo
• brak zarządzania plikami - można tylko dodać / usunąć
Moduły
Kluczowe:
• Summernote Editor - bardzo fajne wsparcie do edytowania sekcji strony - nie tylko głównej treści.
• Additional Contents - pozwala dodać kolejne sekcje na stronie. Szerszy opis poniżej.
• Hits Counter - licznik wizyt, widoczny tylko po zalogowaniu.
Po lewej stronie licznika wyświetlają się dodatkowe spacje.
Szerszy opis poniżej.
Dodatkowe:
• Translation - to tłumaczenie strony, ale tylko panelu administracyjnego (ustawień)
• Contact Form - tworzy prosty formularz kontaktowy
WAŻNE: szerszy opis i konfiguracja poniżej
• Summernote Air Editor - edytor staje się widoczny dopiero po zaznaczeniu tekstu kursorem.
Taki sobie - więcej utrudnia niż pomaga. Ogranicza widok pozostałych ikon edytora.
• Monaco Editor - tworzy w sekcji do edycji kod HTML - kolorowy, zaznacza składnie. Nie po to zainstalowałem WonderCMS, żeby mieć tylko kod.
Domyślnie też widać kod, ale bez kolorowania składni.
• Simple blog - pozwala tworzyć podstrony w katalogu blog.
Szkodzą:
ERR-1 - psuje działanie: nie można się wylogować, usunąć/dodać modułów - brak reakcji.
• Simple Statistics
• Simple Seo - umożliwia tworzenie mapy strony (sitemap.txt) i robots.txt
• Cache Thumbs - niby ma coś poprawiać, ale chyba powoduje toporniejsze działanie w innych obszarach (jak wyżej)
Opisy i listy
Lista funkcji
<?= $Wcms->getCurrentPageUrl()?>
- wyświetla pełną ścieżkę aktualnej strony (z domeną) <?= $Wcms->getCurrentPagePath()?> - wyświetla ścieżkę aktualnej strony (bez domeny) <?= $Wcms->get('config','siteTitle') ?> - wyświetla sam tytuł (tekst) <?= $Wcms->url() ?> - adres root (domena) <?= $Wcms->url('podstrona') ?> - adres root (domena) + pozostały adres (domena.pl/podstrona) <?= $Wcms->get('pages', 'how-to','title') ?> - własnoręczny przykład pobierania elementu bazy danych PAMIĘTAJ podać adres, a nie how-to <?= $Wcms->get('config', 'menuItems', '1', 'name'); - własnoręczny przykład pobierania elementu bazy danych
parseUrl() linia 2037
Własny motyw w WonderCMS
Źródło: https://github.com/WonderCMS/wondercms/wiki/Create-theme-in-8-easy-steps
Lista hooków
$Wcms->addListener('page', 'yourFunctionName'); // attach your custom function to the page $Wcms->addListener('js', 'yourFunctionName'); // can be used for additional JavaScript $Wcms->addListener('css', 'yourFunctionName'); // can be used for additional CSS $Wcms->addListener('settings', 'yourFunctionName' // ); $Wcms->addListener('menu', 'yourFunctionName'); $Wcms->addListener('getMenuSettings', 'yourFunctionName'); $Wcms->addListener('footer', 'yourFunctionName');
Dodatkowe edytowalne:
Blok (Block) - statyczny edytowalny obszar
Obszar (Regular editable areas) - dynamiczny edytowalny obszar
Dwa sposoby na pobranie nazwy strony
• <?= $Wcms->siteTitle() ?> - wyświetla się z możliwością (ikoną) do edycji
• <?= $Wcms->get('config','siteTitle') ?> - wyświetla sam tytuł
Różnice?
• Pierwsze siteTitle() nie powinno być używane jako tekst np. w ALT.
Elementy title, wyświetlany tytuł podstrony
Domyślnie jest odpowiedni tylko na stronę główną:
• <meta name="title" content="<?= $Wcms->get('config', 'siteTitle') ?> - <?= $Wcms->page('title') ?>" />
• <?= $Wcms->get('config', 'siteTitle') ?> - <?= $Wcms->page('title') ?>
Instrukcje
Są widoczne po zalogowaniu jedynie. Nie ma co tworzyć dodatkowych struktur dla tych obszarów, ponieważ i tak są fixed
<?= $Wcms->alerts() ?>
<?= $Wcms->settings() ?>
Plik functions.php
Plik index.php
Usunięcie ukośnika w odnośnikach menu
• linia 2017 w funkcji getCurrentPagePath()
To nie pomaga - nadal linki w menu mają ukośnik na końcu
• linia 2452 w funkcji renderPageNavMenuItem()
usuwa ukośniki w adresie i łączy podstrony
• ABY w menu nie było ukośnika to w linii 2454:
Zmienić:
self::url($parentSlug)
na:
self::url(rtrim($parentSlug, '/'))
Polskie litery w adresie URL
Usunięcie (zmiana) polskich znaków w adresie URL (linia 2869) TO NIE POMOGŁO
public static function url(string $location = ''): string
$location = str_replace( array('ę','ó','ą','ś','ł','ż','ź','ć','ń',), array('e','o','a','s','l','z','z','c','n',), $location );
Powyższe nie działało właściwie - tworzyło osobne linki i po przejściu system chciał tworzyć nowe strony
Należy umieścić kod w funkcji (linia 649):
public function createUniqueSlug(string $slug, string $menu = null): string
$slug = str_replace( array('ę','ó','ą','ś','ł','ż','ź','ć','ń',), array('e','o','a','s','l','z','z','c','n',), $slug ); return $slug
Więcej o modułach: modyfikacje w kodzie i wyglądzie
Moduł Additional Contents
Każda dodana sekcja ląduje przed wcześniej dodanymi.
Aby zmienić kolejność,trzeba przejść do bazy danych i zmienić:
- addition_content_N (TRZEBA)
- addition_content_show_N (można, żeby wartość klasy się zgadzała)
Plik additional-contents.php
końcowa zmiana kodu HTML: id, class i zamiast div jest section
Usunięcie właściwości float: right dla przycisku Remove editable area
Linia kodu 130 (klasa content_delete)
Zmiana wyglądu przycisków:
.content_plus { margin-top: 3rem; border-radius: 5px; background: #439c43; color: white; padding: 8px 12px; } .content_delete { margin-bottom: 1rem; border-radius: 5px; background: #dc4444; color: white; padding: 6px; } .content_show { margin-bottom: 1rem; border-radius: 5px; background: #ddd; color: white; padding: 6px 12px; } .content_hide { margin-bottom: 1rem; border-radius: 5px; background: #ddd; color: #333; padding: 6px 12px; }
Moduł Contact Form (Formularz kontaktowy)
Wymaga ręcznej edycji dwóch dodatkowych plików (CONFIG i theme.php).
Wstępny opis na stronie: https://github.com/robiso/contact-form/tree/master
Ewentualne zmiany (plik contact-form.php) - wyświetlanie formularza na podstronach:
• standardowo - wyświetla się na podstronie wskazanej w pliku config
• więcej niż jedna, np. dwie podstrony
- w górnym kodzie:
define('CONTACT_FORM_PAGE', $configuration ['page']);
zmienić na:
define('CONTACT_FORM_PAGE_1', $configuration ['page_1'] = 'url-1');
define('CONTACT_FORM_PAGE_2', $configuration ['page_2'] = 'url-2');
- w końcowym kodzie:
if ($Wcms->currentPage == CONTACT_FORM_PAGE)
zmienić na:
if ($Wcms->currentPage == CONTACT_FORM_PAGE_1 || CONTACT_FORM_PAGE_2)
• na każdej - w końcowym kodzie:
if ($Wcms->currentPage == CONTACT_FORM_PAGE)
zmienić na
if ($Wcms->currentPage)
Dzięki temu nie sprawdza źródłowej strony, która była wpisana w pliku CONFIG
PAMIĘTAĆ: o właściwych zmianach w pliku CONFIG
Moduł Hits Counter
W celu zlikwidowania spacji przed wartością odwiedzin należało trochę zmienić kod w pliku hits-counter.php
W 45 linii kodu:
$args[0] .= '<div class="hits-counter">Website visits: <b>' . $hits .'</b></div>';
Aby ułatwić wdok wartości odwiedzin przeniosłem tę sekcję obok przycisków: settings, logout
.hits-counter { margin-bottom: 1rem; border-radius: 5px; background: #eda; color: #333; padding: 8px 12px 8px 12px; position: fixed; top: 90px; right: 250px; }
Pytania
• Jak ustawić stronę główną na inną podstronę?
W ustawieniach: SETTINGS -> Menu -> Page to display on homepage
Sekcja jest widoczna na dole obszaru Popupu.
• W jakiej lokalizacji znajdują się uploadowane pliki?
Pliki znajdują się w lokalizacji: /data/files
• Jak dodać kolejną podstronę?
W ustawieniach: SETTINGS -> Menu -> +Add page
Domyślnie strona jest ustawiony status: niewidoczny - należy włączyć widoczność nowo dodanej podstrony.
• Co znaczy ERR-1 w notatkach?
To moje oznaczenie błędu :) Oznacza, że po zainstalowaniu dodatku lub thema przestaje działać możliwość zmian: edycji, zapisywania, usuwania, instalowania.
Problemy
1. Dwa ukośniki po adresie domeny
Dwa ukośniki po adresie domeny - problem wynika z systemu operacyjnego. XAMPP na Windows - kod adresu URL na stronie: domena.pl\/reszta-adresu. Powoduje to, że adres URL w pasku adresu ma dwa slashe: domena.pl//reszta-adresu
Po przekopiowaniu katalogu strony na serwer problem znika.
Odpowiada za to kod:
Funkcja o nazwie "public static function url(string $location = ''): string"
Linie między 2856, a 2873.
Konkretnie to: . '/'. $location;
Linia 2873. Ten slash powyżej. Jeśli jest to na XAMPP (Windows) działa poprawnie. Natomiast bez tego po przekopiowaniu na serwer w adresie URL po domenie nie ma ukośnika.
Rozwiązania dla Windows:
- można usunąć slash, ale po przekopiowaniu na serwer należy przywrócić ten fragment kodu. W kodzie strony nadal jest backslash
- usunąć linię kodu: ". ((dirname($_SERVER['SCRIPT_NAME']) === '/') ? '' : dirname($_SERVER['SCRIPT_NAME']))" -> to jest sprawdzenie, czy nazwa skryptu jest w adresie
(nie widzę póki co negatywnego wpływu tego rozwiązania)
2. Ukośnik na końcu linku w menu, gdy w systemie są podstrony
Przydatne nazwy funkcji podczas szukania:
• getCurrentPagePath() - NIE usuwam ukośnika w tej funkcji linia 2017 (to nie działa w MENU)
Ale może przydać się przy tworzeniu innych linków np. Breadcrumbs
Rozwiązanie w sekcji index.php
Wykonane realizacje
Zleceniodawca
Poznań
Polska