Modyfikacje i motyw | WonderCMS

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

Adres z pełną nazwą firmy
Krzysztof Stachecki
Poznań
Polska
Telefon

Podobne realizacje