Szukaj w:
.

 Zobacz Temat

Strona Główna Forum | eXtreme-fusion 5.0 | Poradniki
#127745 12.02.2013 18:56:41 - [Kurs EF5] Tworzenie podstrony statycznej
Avatar Użytkownika
Ostrzeżeń: 0
Postów: 1435
Post napisano: 12.02.2013 18:56:41
Jako podstronę statyczną rozumiemy taką, której nie tworzy się z Panelu Admina, ale manualnie, poprzez dostęp do FTP.
Ta część kursu dedykowana jest programistom PHP.

Podstrona ma następująca postać:

http://strona.pl/podstrona.html


Aby ją utworzyć, potrzebne będą dwa pliki: podstrona.php oraz podstrona.tpl, które należy zamieścić odpowiednio w katalogu ./pages oraz ./templates.

W pierwszym będzie kod PHP, zaś w drugim - HTML w strukturze systemu szablonów Open Power Templates 1.x.

Założenia:
1. Dostęp do podstrony mają tylko zalogowani.
a) Niezalogowanych przekieruje na logowanie, po czym nastąpi powrót do naszej podstrony.
b) Niezalogowanym wyświetli formularz logowania bez przekierowania.
2. Osoby zalogowane na podstronie zobaczą swoją nazwę użytkownika, adres e-mail oraz listę grup uprawnień, do których są przypisani.
3. Zamieścimy link z parametrem warunkującym wyświetlenie błędu 404.

Aby zrealizować punkt 1a, należy użyć metody klasy User, której przekażemy obiekt Router odpowiedzialny za przekierowanie. Nie jest wymagany warunek, czy użytkownik jest zalogowany, gdyż jest to sprawdzane wewnątrz funkcji. Poniższy kod zamieszczamy w pliku podstrona.php:
<?php defined('EF5_SYSTEM') || exit; // 1

$_user->onlyForUsers($_route);

W linii pierwszej użyto struktury defined or do something. Jest to zabezpieczenie przed dostępem do podstrony w następujący sposób:
http://strona.pl/pages/podstrona.php


Aby zrealizować punkt 1b, należy użyć warunku sprawdzającego, czy użytkownik jest zalogowany, a następnie metody klasy Router:
<?php defined('EF5_SYSTEM') || exit;
if (!$_user->isLoggedIn())
{
  $_route->trace(array('controller' => 'login'));
}


Wyświetlanie danych zalogowanego użytkownika odbywa się w następujący sposób:

echo $_user->get('username');


Aby przesłać je do pliku szablonu podstrona.tpl, należy użyć metody klasy rozszerzającej abstrakcyjny Parser:

$_tpl->assign('nazwa_zmiennej_dla_tpl', $zmienna);
$_tpl->assignGroup(array(
  'a' => $wartosc_pierwsza,
  'b' => $wartosc_druga
));


Pojedynczy assign przesyła jedną wartość, a ten niżej, kilka na raz.

Aby zrealizować punkt 2, wykonamy poniższy kod:
<?php defined('EF5_SYSTEM') || exit;
if (!$_user->isLoggedIn())
{
  $_route->trace(array('controller' => 'login'));
}
else
{
  $_tpl->assignGroup(array(
    'username' => $_user->get('username'),
    'email' => $_user->get('email'),
    'groups' => $_user->getUserRolesTitle(NULL, 3),
  ));
}


Metoda getRolesTitle zwraca tablicę z nazwami grup uprawnień, do których należy użytkownik o $id przesłanym parametrem pierwszym. NULL oznacza, że interesują nas dane zalogowanego użytkownika, zaś parametr drugi to identyfikator grupy, która ma zostać pominięta. 3 to ID grupy Gość - jak ktoś jest użytkownikiem, to nie chcemy by pokazywało, że też Gościem.

Wyświetlenie tych danych realizujemy w pliku podstrona.tpl używając HTML oraz OPT.

<p>Nazwa użytkownika: {$username}</p>
<p>E-mail: {$email}</p>
<ul>
  {section=groups}
    <li>{$groups}</li>
  {/section}
</ul>


Section przechodzi przez tablicę by móc wyświetlić z niej dane.

W EF5 można zarządzać linkami, ich stylem. Dlatego należy używać metody klasy Router by je pozyskać. W pliku podstrona.php:
echo $_route->path(array('controller' => 'podstrona', 'action' => 'ef')));

Powyższy kod wygeneruje taki o to link:
http://strona.pl/podstrona/ef.html

Aby przesłać go do pliku podstrona.tpl, używamy assign.
<?php defined('EF5_SYSTEM') || exit;
if (!$_user->isLoggedIn())
{
  $_route->trace(array('controller' => 'login'));
}
else
{
  $_tpl->assignGroup(array(
    'username' => $_user->get('username'),
    'email' => $_user->get('email'),
    'groups' => $_user->getUserRolesTitle(NULL, 3),
  ));

  $_tpl->assign('link', $_route->path(array('controller' => 'podstrona', 'action' => 'ef')));
}

Natomiast w podstrona.tpl zamieszczamy kod:
<a href="{$link}" title="Tytuł">Error 404</a>


Dodajmy do pliku podstrona.php warunek sprawdzający, czy jesteśmy na podstronie
http://strona.pl/podstrona/ef.html

W tym celu użyjemy metody klasy Router:

<?php defined('EF5_SYSTEM') || exit;
if (!$_user->isLoggedIn())
{
  $_route->trace(array('controller' => 'login'));
}
else
{
  $_tpl->assignGroup(array(
    'username' => $_user->get('username'),
    'email' => $_user->get('email'),
    'groups' => $_user->getUserRolesTitle(NULL, 3),
  ));

  $_tpl->assign('link', $_route->path(array('controller' => 'podstrona', 'action' => 'ef')));
}
if ($_route->getAction() === 'ef')
{
  $_route->trace(array('controller' => 'error', 'action' => 404));
}

Efekt będzie taki, że zamiast podstrony, wyświetli się błąd 404. Całość pliku podstrona.tpl:
<p>Nazwa użytkownika: {$username}</p>
<p>E-mail: {$email}</p>
<ul>
  {section=groups}
    <li>{$groups}</li>
  {/section}
</ul>

<p><a href="{$link}" title="Tytuł">Error 404</a></p>

Wyślij Prywatną Wiadomość
#128772 22.09.2013 21:02:37 - RE: [Kurs EF5] Tworzenie podstrony statycznej
Avatar Użytkownika
Ostrzeżeń: 0
Postów: 4
Post napisano: 22.09.2013 21:02:37
Czy nie ma innego sposoby na dodanie dodatkowej strony poprzez FTP żeby to wyglądało tak:

www.jakasstrona.p... lub html

bo ten sposób na dwa pliki jakoś tego zbytnio ogarnąć nie umie...
Wyślij Prywatną Wiadomość
#128773 22.09.2013 22:30:27 - RE: [Kurs EF5] Tworzenie podstrony statycznej
Avatar Użytkownika
Ostrzeżeń: 0
Postów: 1846
Post napisano: 22.09.2013 22:30:27
To jest najprostszy sposób w EF 5.

Ewentualnie możesz wykorzystać strony treści z poziomu Panelu Admina.
Wyślij Prywatną Wiadomość
#128774 23.09.2013 00:05:24 - RE: [Kurs EF5] Tworzenie podstrony statycznej
Avatar Użytkownika
Ostrzeżeń: 0
Postów: 4
Post napisano: 23.09.2013 00:05:24
Czy robił już ktoś taką dodatkową dla siebie podstronę statyczną pod EF5? tak żeby utworzyć nowe kolumny w bazie i wyświetlić jej zawartości na podstronie... z takiego przykładu byłoby mi o wiele łatwiej coś ogarnąć. Przyznam się że nie jestem mistrzem programowania stąd to pytanie smiley
Wyślij Prywatną Wiadomość
#128775 23.09.2013 08:52:49 - RE: [Kurs EF5] Tworzenie podstrony statycznej
Avatar Użytkownika
Ostrzeżeń: 0
Postów: 1846
Post napisano: 23.09.2013 08:52:49
Czyli chodzi Ci o moduł, a nie o jedną podstronę? (zakładam, że skoro ma coś wyświetlić, to najpierw musi to formularz dodać smiley ). Kilka modułów masz już w katalogu modules w systemie, więc możesz spróbować coś wykorzystać smiley
Wyślij Prywatną Wiadomość
#128786 24.09.2013 12:22:59 - RE: [Kurs EF5] Tworzenie podstrony statycznej
Avatar Użytkownika
Ostrzeżeń: 0
Postów: 4
Post napisano: 24.09.2013 12:22:59
Posiedziałem troszkę nad tym. Na początku wydawało mi się to trudne i skomplikowane ale dzisiaj mam już napisany moduł pod własne potrzeby który działa bez zarzutów. Prześledziłem istniejące moduły i można to spokojnie ogarnąć i w sumie fajne to smiley Pozdrawiam!
Wyślij Prywatną Wiadomość
#129125 19.03.2014 01:42:32 - RE: [Kurs EF5] Tworzenie podstrony statycznej
Avatar Użytkownika
Ostrzeżeń: 0
Postów: 3
Post napisano: 19.03.2014 01:42:32
Podzieli się ktoś informacją jak zrobić tą pod stronę w miarę od zera, aby można było na niej umieszczać treść?

Dodano: 19.03.2014 03:26:53
Dobra, nieaktualne poradziłem sobie już sam smiley
Wyślij Prywatną Wiadomość


Szybka Odpowiedź


Musisz się zalogować by móc zamieszczać posty w tym temacie.