W skrócie index.php zawiera informacje o całym układzie strony (nagłówek, siebar(y), nagłówek i pusty główny kontener).
Tworząc templatkę od podstaw lub przerabiając istniejącą należy zwrócić uwagę na to, by plik index.php zawierał przynajmniej następujące elementy:
<html lang="en"> <head> <meta charset="utf-8"/> <base href="<?php echo $klasa->config('url');?>"> <?php echo $klasa->css(); ?> <?php echo $klasa->headend();?> </head> <body> <?php echo $klasa->contentAll(); ?> <?php echo $klasa->script();?> <?php echo $klasa->bodyend();?> </body> </html>
Jest to absolutna podstawa do tworzenia pliku templatki index.php. Oczywiście w rzeczywistości templatka będzie rozbudowana o dodatkowe elementy wymienione w dalszej części tej dokumentacji.
System umożliwia tworzenie różnych plików index.php. Dzięki temu można dodatkowo różnicować layout strony ze względu rodzaj wyświetlanej podstrony (np. wpis blogowy, strona, paginacja kategorii itd.). Definiowanie nazw dodatkowych plików i przypisywanie ich do odpowiednich rodzajów stron odbywa się za pomocą pliku templatki layout_opcje.php. Przejdź do jego opisu, aby dowiedzieć się więcej na temat tej funkcji.
Omówienie metod klasy, dzięki którym możliwe jest rozbudowanie strony o różne elementy.
Do pobrania danych konfiguracyjnych strony służy metoda:
$klasa->config();
Metoda ta zwraca kilkadziesiąt elementów konfiguracyjnych, aby je wyświetlić można tymczasowo użyć składni php:
var_dump($klasa->config());
Wybrane elementy tej tablicy, które można wykorzystać przy budowanie templatki:
array(31) { ["url"]=> string "url strony głównej" ["title_strony_glownej"]=> string "title strony głównej" ["tag"]=> string "tagi strony" ["opis_strony"]=> string "Opis strony" ["linktak"]=> string "kod z systemu linktak" ["sef_blog"]=> string "część url wykorzystywany przy tworzeniu url bloga" ["nazwa_blog"]=> string "Nazwa bloga, wykorzystywane między innymi przy tworzeniu menu" ["sef_blog_paginacja"]=> string "część url wykorzystywany przy tworzeniu url paginacji bloga" ["sef_strona"]=> string "część url wykorzystywany przy tworzeniu url strony" ["nazwa_strona"]=> string "Nazwa dla stron, wykorzystywane między innymi przy tworzeniu menu" ["sef_mapastrony"]=> string "część url wykorzystywany przy tworzeniu url mapy strony" ["sef_tag_paginacja"]=> string "część url wykorzystywany przy tworzeniu strony z paginacją dla tagów" ["nazwa_mapastrony"]=> string "Nazwa dla mapy strony, między innymi przy tworzeniu menu" ["email"]=> string "email admina" ["autor"]=> string "nazwa autora, tylko do wyświetlania" ["wp-admin"]=> string "nazwa folderu domyślnego wp-admin" ["wp-login"]=> string "nazwa domyślnego pliku wp-login.php" ["core_version"]=> string "aktualnie zainstalowana wersja cmsa" ["theme"]=> string "nazwa używanej templatki (nazwa folderu)" ["linktak_blog"]=> string "1/0 - czy na blogu pokazywać linki z linktak.pl" ["linktak_strona"]=> string "1/0 - czy na stronie pokazywać linki z linktak.pl" }
Aby pobrać treść główną (może to być artykuł, strona, strona z paginacją dowolnego typu) należy skorzystać z metody:
$klasa->contentAll();
Metoda ta zwraca treść w formacie HTML do wyświetlenia. Zawiera całą treść (również z tytułem) do wyświetlenia w głównym kontenerze.
Do wygenerowania opisu strony służy metoda:
$klasa->description();
Opis strony, będzie to zawsze opis z zakładki konfiguracji strony, chyba że dane zmodyfikowane są przez plugin.
Tytuł danej strony/podstrony. Zwykle wykorzystywane do meta title i headera:
$klasa->title();
Zwykle wykorzystywany do meta canonical w sekcji head:
<link rel="canonical" href="<?php echo $klasa->canonical();?>" />
Dzięki stosowaniu canonical unikamy wewnętrznej duplikacji, gdy robot google dobierze się treści z innego adresu.
Opis danej strony/podstrony. Zwykle wykorzystywane do meta description:
$klasa->description();
Zwracane w przypadku strony z wpisem blogowym, oznacza format wpisu
$klasa->postFormat();
Utwórz dowolny sidebar w dowolnym miejscu metodą:
$klasa->sidebar('right');
Dzięki niej będziesz miał możliwość umieszczania widgetów w zdefiniowanym sidebarze prosto z panelu CMS bez konieczności edytowania plików templatki.
Aby pobrać informacje o włączonych pluginach wystarczy użyć metody:
$klasa->plugins()
Przykładowy wynik:
array(12) { ["bio"]=> string(1) "1" ["cookie-notice"]=> string(1) "1" ["losowewpisywtresci"]=> string(1) "1" ["nextprevart"]=> string(1) "1" ["fake_comment"]=> string(1) "1" ["fake_newsletter"]=> string(1) "1" ["table_of_contents"]=> string(1) "0" ["main_page"]=> string(1) "0" ["post_format"]=> string(1) "1" ["custom_fields"]=> string(1) "1" ["cats"]=> string(1) "1" ["wykluczenia_nap"]=> array(5) { [0]=> string(3) "bio" [1]=> string(18) "losowewpisywtresci" [2]=> string(11) "nextprevart" [3]=> string(12) "fake_comment" [4]=> string(15) "fake_newsletter" } }
W przypadku włączonego pluginu wartość wynosi 1 przy nazwie (nazwa folderu z pluginem), w przypadku wyłączonego pluginu 0.
Należy zwrócić uwagę na element tablicy o początkowej nazwie „wykluczenia_”. Na przykładzie jest to „wykluczenia_nap”. Element ten zawiera tablicę nazw pluginów, które są wyłączone w przypadku formatu postu o nazwie nap (formaty postów tworzone są za pomocą pluginu o tej właśnie nazwie). Oznacza to między innymi, że plugin Bio jest wyłączony na wpisach formatu „nap”, mimo globalnego włączenia pluginu Bio.
SPOSÓB 1: widget - dostępny jest widget o slugach: breadcrumb
SPOSÓB 2: metoda
Aby pobrać breadcrumb należy skorzystać z metody:
$klasa->breadcrumb()
Dzięki tej metodzie zostanie utworzony i zwrócony kod html z breadcrumb. Obecnie kod breadcrumb można modyfikować za pomocą pliku index_breadcrumb.php. Przykładowy kod zwrócony przez breadcrumb:
string "<li class="breadcrumb-item active"><a href="Firmy SEO/1">Firmy SEO</a></li>"
Breadcrumb nie zwraca pozycji startowej. Więcej informacji znajdziesz w opisie pliku index_breadcrumb.php.
SPOSÓB 1: widget - dostępne są widgety o slugach: menu, categories, recent_entries
SPOSÓB 2: metoda Menu można tworzyć za pomocą metody:
$klasa->menu(arg1,arg2)
Metoda przyjmuje dwa argumenty. arg1 to oznacza rodzaj menu, arg2 oznacza maksymalną ilość pobranych elementów, jest opcjonalny (w przypadku braku pobrane zostaną wszystkie elementy).
arg1, czyli rodzaj menu:
'glowne' - zostaną pobrane elementy: home, blog, wszystkie strony, mapa strony 'blog' - zostaną pobrane elementy do wpisów blogowych 'kategorie' - zostaną pobrane elementy do kategorii 'strona' - zostaną pobrane elementy do utworzonych stron
Przykład:
$klasa->menu('glowne',5);
Zwróci:
array(4) { [0]=> array(3) { ["sef"]=> string(41) "http://cms.pl/" ["title"]=> string(5) "Start" ["active"]=> string(0) "" } [1]=> array(3) { ["sef"]=> string(12) "0-wpisy.html" ["title"]=> string(4) "Blog" ["active"]=> string(0) "" } [2]=> array(3) { ["sef"]=> string(21) "kontakt-2-strona.html" ["title"]=> string(7) "Kontakt" ["active"]=> string(0) "" } [3]=> array(3) { ["sef"]=> string(14) "0-sitemap.html" ["title"]=> string(11) "Mapa strony" ["active"]=> string(0) "" } }
Oto przykład wykorzystania elementu menu:
<?php $menu = $klasa->menu('glowne',5); foreach ($menu as $m) { echo ' <li class="nav-item"> <a class="nav-link '.$m['active'].'" href="'.$m['sef'].'">'.$m['title'].'</a> </li>'; } ?>
SPOSÓB 1: widget - dostępny jest widget o slugach: recent_entries
SPOSÓB 2: metoda
Metoda służąca do pobrania najnowszego elementu:
$klasa->najnowszy()
Metoda nie przyjmuje żadnych argumentów. W przypadku wywołania w obrębie bloga (wpis bloga, paginacja bloga, tag, kategoria) zostanie pobrany najnowszy element z bloga. W przeciwnym razie zostanie pobrana najnowsza strona.
Oto przykładowe dane zwrócone przez metodę:
array() { ["id"]=> string(2) "40" ["tytul"]=> string(17) "Seo Solutions INC" ["yoast_wpseo_title"]=> string(0) "" ["tekst"]=> string(74) "Super firma mająca wiele ciekawych programów i usług związanych z SEO." ["img"]=> string(2) "40" ["data"]=> string(10) "1586848598" ["tagi"]=> ["linktak_tagi"]=> string(42) "seo,pozycjonowanie,linki,indeksacja,google" ["autor"]=> string(5) "admin" ["sef"]=> string(30) "seo-solutions-inc-40-wpis.html" ["redirect"]=> string(0) "" ["plugin_bio"]=> string(0) "" ["post_format"]=> string(3) "nap" ["custom_fields"]=> string(2) "[]" ["cat"]=> string(1) "0" }
Przykład wykorzystania:
<?php $najnowszy = $klasa->najnowszy(); ?> <div class="card card card-warning text-center card-inverse my-2"> <div class="card-block"> <h4 class="card-title"><?php echo $najnowszy['tytul'];?></h4> <p class="card-text"><?php echo $najnowszy['tekst'];?></p> <p class="card-text"> <a href="<?php echo $najnowszy['sef'];?>" class="btn btn-primary"><?php echo $lang['czytaj_wiecej'];?></a> </p> </div> </div>
SPOSÓB 1: widget - dostępny jest widget o slugach: recent_entries
SPOSÓB 2: metoda
Metoda służąca do pobrania losowego elementu:
$klasa->losowy()
Metoda nie przyjmuje żadnych argumentów. W przypadku wywołania w obrębie bloga (wpis bloga, paginacja bloga, tag, kategoria) zostanie pobrany losowy element z bloga. W przeciwnym razie zostanie pobrana losowa strona.
Oto przykładowe dane zwrócone przez metodę:
array() { ["id"]=> string(2) "40" ["tytul"]=> string(17) "Seo Solutions INC" ["yoast_wpseo_title"]=> string(0) "" ["tekst"]=> string(74) "Super firma mająca wiele ciekawych programów i usług związanych z SEO." ["img"]=> string(2) "40" ["data"]=> string(10) "1586848598" ["tagi"]=> ["linktak_tagi"]=> string(42) "seo,pozycjonowanie,linki,indeksacja,google" ["autor"]=> string(5) "admin" ["sef"]=> string(30) "seo-solutions-inc-40-wpis.html" ["redirect"]=> string(0) "" ["plugin_bio"]=> string(0) "" ["post_format"]=> string(3) "nap" ["custom_fields"]=> string(2) "[]" ["cat"]=> string(1) "0" }
Przykład wykorzystania:
<?php $losowy= $klasa->losowy(); ?> <div class="card card card-warning text-center card-inverse my-2"> <div class="card-block"> <h4 class="card-title"><?php echo $losowy['tytul'];?></h4> <p class="card-text"><?php echo $losowy['tekst'];?></p> <p class="card-text"> <a href="<?php echo $losowy['sef'];?>" class="btn btn-primary"><?php echo $lang['czytaj_wiecej'];?></a> </p> </div> </div>
Od wersji 2.2.5 dostępna jest możliwość definiowania w pliku index.php dodatkowych zmiennych, które można wykorzystywać w pozostałych plikach templatek (np. index_wpis.php czy index_zajawka.php). Dodatkowe zmienne definiujemy w tablicy o nazwie $global na przykład w taki sposób:
<?php $global['obecna_data']=date('d-m-Y H:i:s',time()); $md5 = md5(rand()); $base64 = base64_encode(rand()); $global['data']['md5'] = $md5; $global['data']['base64'] = $base64; ?>
I teraz wykorzystujemy utworzone zmienne np. w pliku index_wpis.php (tylko pliki index.php interpretują php) w taki sposób (wyświetlenie przypisanych danych):
Data i czas: [PHP_VARIABLE]$global['obecna_data'][/PHP_VARIABLE] <br> md5: [PHP_VARIABLE]$global['data']['md5'][/PHP_VARIABLE] <br> base64:[PHP_VARIABLE]$global['data']['base64'][/PHP_VARIABLE]
Nazwa templatki kryje się w zmiennej php:
$theme
Odwołanie się do pliku css templatki może wyglądać tak:
<link href="wp-content/themes/<?php echo $theme;?>/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
Odwołanie się do pliku js templatki może wyglądać tak:
<script src="wp-content/themes/<?php echo $theme;?>/js/clean-blog.min.js"></script>
SPOSÓB 1: widget - dostępny jest widget o slugach: search
SPOSÓB 2: CMS Pod Zaplecze posiada prosty system wyszukiwarki. Wystarczy wysłać na stronę główną metodą POST element tablicy o nazwie $_POST['q'] zawierający wyszukiwaną frazę. Przykładowy kod wyszukiwarki:
<form class="searchbar" method=POST action="<?php echo $klasa->config('url');?>"> <input class="search_input" type="text" name="q" placeholder="Szukaj..."> <button type=submit class="search_icon"><i class="fas fa-search"></i></button> </form>
W efekcie zostanie wyświetlona strona z wyszukanymi elementami (formatowanie zostanie pobrane z pliku index_zajawka.php):
CMSPodZaplecze ma wbudowaną funkcję automatycznego przenoszenia skryptów i styli (z tagów style oraz script) do plików (oczywiście nie dotyczy to plików css). Aby nie przenosić ich automatycznie należy w templatce dodatkowo użyć tagu nochangeit. Tag ten można używać we wszystkich plikach templatki.
Przykład:
<a href="#" class="mojaklasalinku">Mój link</a> <style>.mojaklasalinku {color:red;}</style>
Powyższy fragment kodu zostanie automatycznie zamieniony w przeglądarce na:
<a href="#" class="mojaklasalinku">Mój link</a>
A kod ze tagu style zostanie przeniesiony do pliku ze stylami. Czasem jednak nie chcemy tego robić, w takim przypadku wystarczy dodatkowo oznaczyć style tagiem nochangeit:
<a href="#" class="mojaklasalinku">Mój link</a> <nochangeit><style>.mojaklasalinku {color:red;}</style></nochangeit>
Wynik powyższego kodu w przeglądarce:
<a href="#" class="mojaklasalinku">Mój link</a> <style>.mojaklasalinku {color:red;}</style>