Czasem istnieje potrzeba aby na sklepie internetowym pierwszy jego widok był zupełnie odmienny niż reszta sklepu. Innymi słowy chodzi o odmienną stronę startową sklepu z tekstem albo grafiką – widoczną tylko jeden raz po pierwszym załadowaniu strony.
Ważne, aby podczas włączania strony nie zmieniał się jej adres. Czyli należy wykonać to bez użycia przekierowania np. na podstronę sklepu – tak jak np. opisaliśmy to tutaj: https://pskrk.com/presta-shop-1-4-wybrana-strona-cms-jako-strona-startowa-sklepu/ ).
Kolejną istotną kwestią jest pokazywanie tej wiadomości tylko 1 raz podczas pojedynczej sesji. Tj. aby strona główna sklepu była to standardowa strona, a nasza wiadomość powitalna nie pojawiała się za każdym razem, jeśli ktoś chce na nią wrócić.
Takie rozwiązanie może mieć też cele pozycjonerskie. W wiadomości powitalnej możemy użyć wybranych słów kluczowych albo szerszego opisu o tym co można na sklepie kupić.
Przykład zastosowania takiego elementu jest widoczne na jednej z realizacji firmy SmartProjects.pl. Chodzi o sklep: http://naturalneizdrowe.pl/ . Jak widać, za pierwszym razem widźmy stronę powitalną, a potem już standardowo sklep z podstronami.
Poniżej przedstawiamy jak to wykonać. Wersja sklepu na którym będzie to wykonywane, to 1.6.14. Na nowszych instancjach też powinno to działać. Prosimy o wykonanie kopii bezpieczeństwa plików i bazy danych.
Zawartość artykułu
Treść wiadomości powitalnej.
Dodajemy nową stronę CMS.
Preferencje -> CMS
O dowolnej nazwie. Tekst, który będzie tam użyty pojawi się w wiadomości powitalnej. Ustawiamy stronę CMS jako włączoną.
Notujemy jej numer ID. Jest on widoczny na liście stron CMS.
Wskazówka:
Potem w przyszłości, aby wiadomość powitalna się nie pokazywała – wystarczy po prostu wyłączyć publikację strony CMS z jej treścią 😉
Modyfikacja kontrolera PHP
W pliku:
classes/controller/FrontController.php
Znajdujemy funcję o nazwie: initContent()
po kodzie:
if (!isset($this->context->cart)) {
$this->context->cart = new Cart();
}
Wklejamy:
$cms = new CMS(6, $this->context->language->id);
$link_intro = $this->context->link->getCMSLink($cms, $cms->link_rewrite, Configuration::get('PS_SSL_ENABLED'));
$runIntro = false;
session_start();
if (!$_SESSION['introshow'] && $cms->active == '1') {
$_SESSION['introshow'] = 'okay';
$runIntro = true;
} else {
$runIntro = false;
}
Uwaga! Cyfrę 6 zamieniamy na ID naszej strony CMS (patrz wyżej).
W tej samej funkcji initContent() zamieniamy kod:
$this->context->smarty->assign(array(
'HOOK_HEADER' => Hook::exec('displayHeader'),
'HOOK_TOP' => Hook::exec('displayTop'),
'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''),
'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''),
));
na:
$this->context->smarty->assign(array(
'HOOK_HEADER' => Hook::exec('displayHeader'),
'HOOK_TOP' => Hook::exec('displayTop'),
'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''),
'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''),
'active_intro' => $runIntro,
'intro_text' => $cms->content,
'content_only' => $runIntro
));
(po prostu dopisujemy 3 elementy do tablicy)
Zmiana szablonu strony startowej
Otwieramy plik:
themes/{SZABLON}/index.tpl
Wstawkę {SZABLON} – traktujmy jako nazwę naszego szablonu.
Na początku jego treści wstawiamy ten kod:
{if $active_intro}
{literal}
<script type="text/javascript" src="/themes/{SZABLON}/js/jquery.fullbg.js"></script>
<script type="text/javascript">
$(window).load(function() {
$("#backgroundintro").fullBg();
});
</script>
<style type="text/css">
.fullBg {
position: fixed;
top: 0;
left: 0;
overflow: hidden;
}
#maincontent {
position: absolute;
left: 0;
z-index: 50;
width: 100%;
}
</style>
{/literal}
<img src="/themes/{SZABLON}/img/introback.jpg" alt="" id="backgroundintro" />
<div id="maincontent">
<div id="introwrapper">
<div style="text-align: center;" class="introwrapperimg">
<a href="{$smarty.server.REQUEST_URI}">
<img class="img-responsive" src="/themes/{SZABLON}/img/logointro.png" />
</a>
</div>
<div class="contenttextintro">
<div class="contenttextintroinner">
{$intro_text}
</div>
</div>
<div style="text-align: center;">
<a class="buttonbottom" href="{$smarty.server.REQUEST_URI}">START</a>
</div>
</div>
</div>
{else}
Uwaga, w kodzie występują wstawki {SZABLON} należy je zamienić na nazwę naszego szablonu.
Natomiast na końcu na końcu tego pliku:
{/if}
Wgranie wymaganych plików
Do folderu:
themes/{SZABLON}/img
Wgrywamy obrazek logo oraz tła wiadomości powitalnej:
https://pskrk.com/wp-content/uploads/2017/07/logointro.png
https://pskrk.com/wp-content/uploads/2017/07/introback.jpg
Do folderu:
themes/{SZABLON}/js
Darmową bibliotekę JavaScript skalującą tło w zależności od rozdzielczości ekranu:
Ustawienie odpowiednich styli CSS
.contenttextintro {
background-color: rgba(0, 0, 0, 0.075);
background-position: 100% 100%;
padding: 20px;
line-height: 25px;
font-size: 16;
margin: 0 auto;
width: 70%;
}
.contenttextintro p {
color: #fff;
font-size: 17px;
font-weight: bold;
}
.contenttextintroinner {
width: 70%;
margin: 0 auto;
}
.introwrapperimg img {
margin: 0 auto;
}
a.buttonbottom {
display: inline-block;
padding: 10px 50px;
background-color: #2fb7eb;
color: #fff;
text-align: center;
margin-top: 20px
}
Dopisujemy je do pliku:
/themes/{SZABLON}/css/global.css
Gotowe!
Aby ponownie zobaczyć wiadomość powitalną wyczyść pliki cookie lub zresetować przeglądarkę WWW.
Oczywiście przy odrobinie znajomości HTML i CSS możemy wiadomość powitalną stworzyć taką jaką sobie życzymy. Jest to kwestia odp. modyfikacji pliku index.tpl oraz styli CSS i obrazków.
Uwaga! Aby wyłączyć ten element (aby wiadomość powitalna się nie pokazywała) wystarczy po prostu wyłączyć publikację strony CMS z jej treścią w:
Preferencje -> CMS
Powodzenia !
grafika: wallscover.com



Bardzo przydatny artykuł. Krótko, treściwie i na temat 🙂 Więcej takich artykułów poproszę 🙂 Pozdrawiam.