Dokumentacja dla webmasterów

Ten przewodnik opisuje podstawowe zmiany w tematach graficznych SOTESHOP 8: edycję CSS, modyfikowanie szablonów HTML oraz dodawanie treści edytowanych w panelu. Potrzebna jest podstawowa znajomość HTML i CSS, edytor tekstowy oraz dostęp do plików sklepu.

Zanim zmienisz pliki, sprawdź możliwości panelu w Edycja grafiki. Logo, kolory, teksty i wiele ustawień układu można zmienić bez edycji szablonów. Zakres opcji zależy od wybranego tematu.


Własny temat i dziedziczenie

Utwórz własny temat graficzny na bazie wybranego tematu. W przykładach jego nazwa to mojtemat. Zastąp ją nazwą katalogu swojego tematu. Przed zmianami zachowaj kopię edytowanych plików; większe zmiany najpierw sprawdź w kopii testowej sklepu.

Bazowym tematem SOTESHOP 8 jest bianco. Korzysta on częściowo z responsive, który zawiera kompletny zestaw szablonów. Poszczególne tematy mogą dziedziczyć przez kilku rodziców, na przykład:

mojtemat → argento8 → bianco → responsive

Gdy szukasz pliku do zmiany, sprawdź najpierw własny temat, a potem kolejno jego tematy nadrzędne. Skopiuj pierwszą znalezioną wersję do odpowiadającego jej katalogu własnego tematu. Nie przechodź od razu do responsive, pomijając pozostałych rodziców.

  • HTML: własny plik zastępuje szablon rodzica w całości. Kopiuj tylko pliki, które rzeczywiście zmieniasz, i zachowuj istniejące warunki, komponenty oraz sloty.
  • CSS: style tematów nadrzędnych są dołączane automatycznie. Własny arkusz powinien zawierać tylko potrzebne zmiany.
  • Obrazki: funkcja image_path szuka obrazka we własnym temacie i kolejno u rodziców.

Nie zmieniaj plików tematów standardowych ani kodu PHP sklepu w ramach edycji wyglądu. Własna kopia HTML przesłania także późniejsze poprawki szablonu bazowego, dlatego po aktualizacjach warto porównać zmienione szablony z ich aktualnymi wersjami.


Gdzie znajdują się pliki?

Ścieżki szablonów zaczynające się od /apps/ i /plugins/ podajemy względem katalogu aplikacji sklepu, w którym znajduje się plik symfony. Nie są to adresy do otwierania w przeglądarce.

Adresy /css/, /images/ i /js/ są publicznymi ścieżkami zasobów. W strukturze deweloperskiej sklepu odpowiadają im katalogi web/css/, web/images/ i web/js/. Przykładowo adresowi /css/frontend/theme/mojtemat/mojtemat.css odpowiada plik web/css/frontend/theme/mojtemat/mojtemat.css.

Najważniejsze szablony własnego tematu
ElementŚcieżka względem katalogu aplikacji
Dokument HTML/apps/frontend/templates/theme/mojtemat/base.html
Nagłówek/apps/frontend/templates/theme/mojtemat/_header.html
Stopka/apps/frontend/templates/theme/mojtemat/_footer.html
Układ jednej lub dwóch kolumn/apps/frontend/templates/theme/mojtemat/one_column.html
/apps/frontend/templates/theme/mojtemat/two_column.html
Strona główna/apps/frontend/templates/theme/mojtemat/homepage.html
/apps/frontend/modules/stFrontendMain/templates/theme/mojtemat/main_index.html
Grupy produktów na stronie głównej/apps/frontend/modules/stProduct/templates/theme/mojtemat/product_main.html
/apps/frontend/modules/stProduct/templates/theme/mojtemat/product_group.html
/apps/frontend/modules/stProduct/templates/theme/mojtemat/product_new.html
Blog na stronie głównej/plugins/stBlogPlugin/modules/stBlogFrontend/templates/theme/mojtemat/blog_box.html
Teksty SEO/apps/frontend/templates/theme/mojtemat/_seo.html
Lista produktów/apps/frontend/modules/stProduct/templates/theme/mojtemat/product_list.html
/apps/frontend/modules/stProduct/templates/theme/mojtemat/product_list_long.html
Karta produktu/apps/frontend/modules/stProduct/templates/theme/mojtemat/product_show_default.html
Strona informacyjna/plugins/stWebpagePlugin/modules/stWebpageFrontend/templates/theme/mojtemat/webpage_show.html
Menu kategorii/plugins/stCategoryTreePlugin/modules/stCategoryTree/templates/theme/mojtemat/horizontal.html
Linki społecznościowe/plugins/stSocialLinksPlugin/modules/stSocialLinksFrontend/templates/theme/mojtemat/show.html
Tekst strony głównej/apps/frontend/modules/stFrontendMain/templates/theme/mojtemat/main_text.html
Fonty i skrypty tematu/apps/frontend/templates/theme/mojtemat/_fonts.html
/apps/frontend/templates/theme/mojtemat/_script_theme.html

Pliki z tabeli nie muszą istnieć we własnym temacie - wtedy sklep korzysta z ich wersji nadrzędnych. Strona główna może łączyć homepage.html, main_index.html i wywoływane przez nie komponenty. Zanim zmienisz HTML, sprawdź ustawienia jej układu i sekcji w panelu.


Przykład 1: prosta zmiana CSS

  1. Po utworzeniu własnego tematu w panelu system tworzy jego arkusz. Otwórz plik odpowiadający adresowi /css/frontend/theme/mojtemat/mojtemat.css.
  2. Aby zaokrąglić przyciski w swoim temacie, dopisz:

    /* Przyciski */
    .btn {
        border-radius: 8px;
    }
  3. Zapisz plik i sprawdź stronę korzystającą z własnego tematu. Jeśli zmiana nie jest widoczna, skorzystaj z listy diagnostycznej.

Selektory sprawdzaj w narzędziach deweloperskich przeglądarki. Tematy SOTESHOP 8 korzystają z Bootstrapa 3. Używaj klas zgodnych z wersją dołączoną do swojego sklepu.


Przykład 2: belka z tekstem edytowanym w panelu

Dodamy nad nagłówkiem informację, której treść właściciel sklepu będzie mógł później zmieniać w panelu bez edycji HTML.

Dodaj własny tekst tematu

  1. Otwórz edycję własnego tematu w backendzie deweloperskim: https://adres-sklepu/backend_dev.php/theme/edit/id/ID_TEMATU. Zastąp domenę adresem sklepu, a ID_TEMATU identyfikatorem z adresu edycji tematu.
  2. Przejdź do Konfiguracja tekstów i wybierz Dodaj. Dodawanie nowych tekstów jest dostępne w backendzie deweloperskim.
  3. Uzupełnij pola:

    • Id: pasek-informacyjny - identyfikator używany w szablonie.
    • Nazwa: Pasek informacyjny - nazwa widoczna w panelu.
    • Zawartość: np. „Zapraszamy do kontaktu: 61 800 00 00”.
  4. Zapisz tekst. W sklepie wielojęzycznym uzupełnij treść dla używanych języków.

Tekst jest przypisany do konkretnego tematu. Dodaj go do własnego tematu, w którym ma się wyświetlać. Teksty nie są automatycznie pobierane z tematów nadrzędnych. Id musi być takie samo w panelu i szablonie oraz nie powtarzać się w obrębie danego tematu.

Umieść tekst w nagłówku

  1. Znajdź _header.html kolejno w tematach nadrzędnych. Przykładowo, jeśli nie ma go w argento8, sprawdź bianco.
  2. Skopiuj znaleziony plik do /apps/frontend/templates/theme/mojtemat/_header.html. Jeśli masz już własną wersję, edytuj ją.
  3. Przed istniejącym HTML nagłówka dodaj:

    <div class="theme-info-bar">
        <div class="container">
            {theme_content id='pasek-informacyjny'}
        </div>
    </div>
  4. Do własnego arkusza /css/frontend/theme/mojtemat/mojtemat.css dopisz:

    /* Pasek informacyjny */
    .theme-info-bar {
        padding: 8px 0;
        background: #ececec;
        color: #333;
        text-align: center;
        font-size: 1rem;
    }
  5. Sprawdź belkę na komputerze i telefonie. Następnie zmień jej zawartość w zwykłym panelu: Aplikacje → Edycja grafiki → własny temat → Konfiguracja tekstów.

Backend deweloperski służy tutaj do dodania tekstu i nadania mu identyfikatora. Późniejsza zmiana zawartości nie wymaga korzystania z backend_dev.php.


CSS i obrazki

Własne style dopisuj w /css/frontend/theme/mojtemat/mojtemat.css. Nie kopiuj całych arkuszy rodziców. Pliki w katalogu _editor są generowane przez konfigurację grafiki; zmiany wyglądu wprowadzaj przez panel albo własny arkusz tematu.

Obrazki tematu umieszczaj w katalogu odpowiadającym adresowi /images/frontend/theme/mojtemat/, np. phone.png. W szablonie użyj:

<img src="{image_path image='phone.png'}" width="14" height="14" alt="" />

Funkcja uwzględnia dziedziczenie. Podanie we własnym temacie obrazka o tej samej nazwie zastępuje obrazek rodzica. Ikona towarzysząca tekstowi może mieć pusty alt; obrazek przekazujący informację powinien mieć opis.


Przydatne konstrukcje w szablonach

Dołączanie pliku i wywołanie komponentu

{include_file id="_footer"}

Dołącza _footer.html z uwzględnieniem dziedziczenia tematów. Komponent pobiera dane i wyświetla je przy użyciu własnego szablonu, na przykład:

{st_get_component module="stProduct" component="productGroup" product_group="MAIN_PAGE"}

Wyświetla grupę produktów o symbolu MAIN_PAGE. Grupa musi być utworzona i uzupełniona produktami w panelu.

Boks edytowany w panelu

Utwórz boks informacyjny w panelu i ustaw jego identyfikator webmastera na moj_boks. W wybranym miejscu szablonu dodaj:

{st_get_component module="stBoxFrontend" component="boxSingle" params="webmaster_id=moj_boks"}

Boks przydaje się do dłuższych treści. Krótkie komunikaty i nagłówki można przygotować jako teksty tematu.

Zmienne i tłumaczenia

W szablonie karty produktu dostępne są między innymi {$name} - nazwa, {$code} - kod, {$description} - opis skrócony i {$description_long} - opis pełny. Dostępność zmiennych zależy od danego widoku; sprawdzaj ich użycie w aktualnym szablonie bazowym. Przeniesienie zmiennej do innego pliku nie zapewnia przekazania jej danych.

Zachowuj istniejące warunki wyświetlania cen, dostępności i opcji produktu. Stałe etykiety w szablonach zapisuj z użyciem mechanizmu tłumaczeń, np. {__ text="Szukaj" langCatalogue="stSearchFrontend"}. Wartość langCatalogue sprawdzisz w panelu: Definicje językowe, w kolumnie Katalog przy danej frazie. Treści, które właściciel sklepu ma samodzielnie zmieniać, umieszczaj w panelu.

Własny JavaScript i fonty

Skrypty tematu dołączaj w _script_theme.html. Jeśli musisz go zmienić, skopiuj wersję z najbliższego rodzica i zachowaj istniejące skrypty. Większy skrypt zapisz jako osobny plik, np. pod publicznym adresem /js/mojtemat.js, a w _script_theme.html dodaj:

{use_javascript src="mojtemat.js"}

Katalog JS jest wspólny dla sklepu, dlatego używaj własnej nazwy pliku. Plik _fonts.html służy do dołączania fontów i wywołuje _script_theme.html; zachowaj to wywołanie. Fonty przechowuj lokalnie, korzystając w pierwszej kolejności z zasobów sklepu.

Wbudowany w HTML kod JavaScript lub CSS z klamrami otaczaj blokiem {literal}…{/literal}, aby Smarty nie interpretowało go jako własnych instrukcji. Wywołania Smarty, np. {theme_content id='pasek-informacyjny'}, pozostaw poza takim blokiem.


Jak dodać dodatkowy typ grupy produktów?

Utwórz plik /apps/backend/modules/stProductGroup/config/user_product_group.yml. Jeśli już istnieje, uzupełnij jego sekcję product_group, zachowując dotychczasowe wpisy. Przykład:

product_group:
    MY: Moja grupa
    SEASON: Oferta sezonowa

Wcięcia w YAML zapisuj spacjami. Wpisy udostępniają nowe typy do wyboru w panelu; nie tworzą automatycznie grup ani nie dodają produktów. Utwórz grupę w panelu, wybierz jej typ i przypisz produkty. Następnie wywołaj ją w szablonie:

{st_get_component module="stProduct" component="productGroup" product_group="SEASON"}

Ten plik konfiguracji jest wspólny dla sklepu, a nie przypisany wyłącznie do jednego tematu.


Dlaczego nie widzę zmiany?

  1. Temat: sprawdź, czy oglądasz właściwy temat w podglądzie albo czy jest on ustawiony jako domyślny.
  2. Ścieżka: sprawdź nazwę katalogu tematu i pliku. W narzędziach przeglądarki upewnij się, że arkusz lub skrypt się ładuje i nie zwraca błędu 404.
  3. Dziedziczenie i układ: upewnij się, że zmieniasz szablon używany przez dany widok. Dla strony głównej sprawdź także wybrany układ i konfigurację sekcji.
  4. CSS: sprawdź, czy reguła trafia w element i czy nie jest nadpisywana przez inny styl, ustawienie panelu lub regułę dla innej szerokości ekranu.
  5. Treści: sprawdź identyfikator tekstu lub boksu, właściwy temat i język. Dla grup produktów sprawdź przypisane produkty i ich widoczność.
  6. Pamięć podręczna: podczas pracy korzystaj z trybu deweloperskiego. Po zmianach wyczyść pamięć podręczną sklepu oraz FastCache, a następnie odśwież stronę z pominięciem pamięci przeglądarki.

Po zakończeniu sprawdź zmienione widoki na komputerze i telefonie, również w zwykłym trybie sklepu. Przy zmianach wspólnych elementów sprawdź stronę główną, listę produktów, kartę produktu i koszyk.

Opis wdrożenia grafiki