> ## Documentation Index
> Fetch the complete documentation index at: https://pomoc.wenetasystent.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Drupal: Osadzenie Asystent AI

> Jak dodać widget czatu Asystent AI do Twojej strony Drupal w kilku prostych krokach

<Info>
  Te instrukcje dotyczą **Drupal 8, 9 i 10**. Drupal 7 osiągnął koniec wsparcia (EOL) w styczniu 2025 — zalecamy aktualizację.
</Info>

<Note>
  **Kod do wklejenia** — podmień `TWOJ_KOD` na swój kod z panelu Asystent AI:
</Note>

```html theme={null}
<script async src="https://widget.wenetasystent.ai/?code=TWOJ_KOD"></script>
```

<Tip>
  Swój kod widgetu znajdziesz w panelu Asystent AI — przejdź do zakładki **Chatbot** i skopiuj 8-znakowy kod z sekcji "Umieść chatbota na swojej stronie".
</Tip>

## Metoda 1: Custom Block (ZALECANA) ⭐

Widget pojawi się automatycznie na wszystkich stronach witryny.

<Steps>
  <Step title="Zaloguj się do panelu administratora">
    Przejdź na swoją stronę → zaloguj się jako administrator
    Kliknij **Manage** (Zarządzaj) w górnym menu
  </Step>

  <Step title="Utwórz nowy blok">
    Przejdź do **Structure** (Struktura) → **Block layout** (Układ bloków)
    Kliknij **Custom block library** (Biblioteka bloków niestandardowych)
    Kliknij **Add custom block** (Dodaj blok niestandardowy)
  </Step>

  <Step title="Wybierz typ bloku">
    Wybierz **Basic block** (Podstawowy blok)
    Jeśli nie widzisz tej opcji, kliknij po prostu **Add custom block**
  </Step>

  <Step title="Wypełnij formularz">
    * **Block description:** wpisz "Asystent AI Widget"
    * **Body:** kliknij przycisk **Source** lub **\<>** (tryb HTML)
    * Wklej kod widgetu:

    ```html theme={null}
    <script async src="https://widget.wenetasystent.ai/?code=TWOJ_KOD"></script>
    ```

    <Warning>
      Zmień format tekstu na **Full HTML** (lista rozwijana pod edytorem). Inne formaty (Basic HTML, Restricted HTML) automatycznie usuwają tagi `<script>` i widget nie zadziała!
    </Warning>
  </Step>

  <Step title="Zapisz blok">
    Kliknij **Save** (Zapisz)
    Blok został utworzony, teraz trzeba go dodać do układu strony
  </Step>

  <Step title="Dodaj blok do regionu">
    Wróć do **Structure → Block layout**
    Znajdź region **Footer** (Stopka) lub **Content** (Treść)
    Kliknij **Place block** (Umieść blok) w wybranym regionie
    Znajdź i wybierz "Asystent AI Widget"
  </Step>

  <Step title="Skonfiguruj widoczność">
    W ustawieniach bloku:

    * **Title:** usuń tytuł lub ustaw **Display title** na wyłączony
    * **Visibility:** zostaw domyślne ustawienia (blok będzie widoczny wszędzie)
    * Kliknij **Save block** (Zapisz blok)
  </Step>

  <Step title="Sprawdź działanie">
    Odśwież swoją stronę — widget powinien się pojawić w dolnym rogu strony (pozycja zależy od ustawień w panelu)
  </Step>
</Steps>

<Tip>
  Ta metoda działa z każdym motywem Drupal i automatycznie dodaje widget do wszystkich stron!
</Tip>

## Metoda 2: Edycja szablonu

Jeśli preferujesz dodanie kodu bezpośrednio do szablonu strony.

<Warning>
  Ta metoda wymaga edycji plików motywu. Zmiany mogą zniknąć po aktualizacji motywu. Zalecamy **Metodę 1** jako bardziej bezpieczną.
</Warning>

<Steps>
  <Step title="Znajdź plik szablonu">
    Połącz się z serwerem przez FTP lub File Manager
    Przejdź do folderu: `/themes/custom/twoj_motyw/templates/` (dokładna ścieżka zależy od instalacji motywu)
    Znajdź plik **html.html.twig** lub **page.html.twig**
  </Step>

  <Step title="Edytuj plik">
    Otwórz plik w edytorze tekstowym
    Przewiń na sam dół pliku
  </Step>

  <Step title="Dodaj kod przed zamknięciem body">
    Znajdź tag `</body>` (zamykający tag body)
    **Tuż przed** tym tagiem wklej kod widgetu:

    ```html theme={null}
    <!-- Asystent AI widget -->
    <script async src="https://widget.wenetasystent.ai/?code=TWOJ_KOD"></script>
    ```
  </Step>

  <Step title="Zapisz i wyczyść cache">
    Zapisz plik na serwerze
    W Drupalu przejdź do **Configuration** → **Performance**
    Kliknij **Clear all caches** (Wyczyść wszystkie cache)
    Odśwież swoją stronę — widget powinien się pojawić
  </Step>
</Steps>

## Strona zbudowana w Drupal Canvas (Drupal CMS)?

Nowy **Drupal CMS** z włączonym **Drupal Canvas** (dawniej Experience Builder) nie pozwala dodawać własnych bloków HTML ani skryptów w wizualnym kreatorze stron. Widget da się mimo to zainstalować — poniższe sposoby działają na poziomie samego Drupala, "pod" Canvasem.

### Opcja A: Moduł Asset Injector (zalecana)

<Steps>
  <Step title="Zainstaluj moduł Asset Injector">
    Zainstaluj moduł na serwerze: `composer require drupal/asset_injector`
    Następnie przejdź do **Extend**, znajdź **Asset Injector** i włącz go
  </Step>

  <Step title="Dodaj JS Injector">
    Przejdź do **Configuration → Development → Asset Injector**
    Otwórz zakładkę **JS Injectors** i kliknij **Add JS Injector**
  </Step>

  <Step title="Wklej kod ładujący widget">
    * **Label:** wpisz "Asystent AI Widget"
    * W polu **Code** wklej poniższy kod (bez tagów `<script>` — pole przyjmuje czysty JavaScript):

    ```js theme={null}
    var s = document.createElement('script');
    s.async = true;
    s.src = 'https://widget.wenetasystent.ai/?code=TWOJ_KOD';
    document.body.appendChild(s);
    ```
  </Step>

  <Step title="Zapisz bez warunków">
    Sekcję **Conditions** zostaw pustą — skrypt załaduje się na wszystkich stronach
    Kliknij **Save**, wyczyść cache (**Configuration → Performance → Clear all caches**) i sprawdź stronę
  </Step>
</Steps>

### Opcja B: Klasyczny Block Layout

**Structure → Block layout** działa nadal przy włączonym Canvas (pokazuje ostrzeżenie, ale nie jest zablokowany). Możesz użyć **Metody 1** powyżej — blok nie będzie widoczny w edytorze Canvas, ale wyrenderuje się na opublikowanej stronie.

### Opcja C: Google Tag Manager

Jeśli korzystasz z GTM, dodaj widget przez tag niestandardowy — działa niezależnie od Canvas. Zobacz [instrukcję GTM](/embed/gtm).

## Najczęstsze problemy

<AccordionGroup>
  <Accordion title="Używam Drupal Canvas i nie mogę dodać własnego bloku">
    To znane ograniczenie Drupal Canvas (Experience Builder) — wizualny kreator nie obsługuje własnych bloków HTML/skryptów, a przy niektórych szablonach blokuje też dodawanie custom blocków w panelu.

    **Rozwiązanie:** zobacz sekcję [Strona zbudowana w Drupal Canvas](#strona-zbudowana-w-drupal-canvas-drupal-cms) powyżej — najprościej przez moduł **Asset Injector**, który omija Canvas całkowicie.
  </Accordion>

  <Accordion title="Widget się nie pojawia">
    **Sprawdź kolejno:**

    * Czy podmieniłeś `TWOJ_KOD` na prawdziwy kod z panelu?
    * Czy blok jest umieszczony w regionie i widoczny? (Metoda 1)
    * Wyczyść cache Drupal: **Configuration → Performance → Clear all caches**
    * Wyczyść cache przeglądarki (Ctrl+Shift+R lub Cmd+Shift+R)
    * Sprawdź czy blok nie jest ograniczony do konkretnych stron w ustawieniach **Visibility**
  </Accordion>

  <Accordion title="Nie mogę znaleźć Source/HTML mode w edytorze">
    Jeśli nie widzisz przycisku do trybu HTML w edytorze:

    * Sprawdź czy używasz **Text format: Full HTML** (zamiast "Basic HTML")
    * Przejdź do **Configuration → Text formats** i upewnij się, że Full HTML jest włączony
    * Alternatywnie możesz zainstalować moduł **CKEditor CodeMirror** dla lepszego edytora kodu
  </Accordion>

  <Accordion title="Widget zniknął po aktualizacji motywu">
    To dotyczy **Metody 2** — zmiany w plikach motywu znikają po aktualizacji.

    **Rozwiązanie:** Użyj **Metody 1 (Custom Block)** — ta metoda jest odporna na aktualizacje motywu.
  </Accordion>

  <Accordion title="Blok nie pojawia się w Block Layout">
    Jeśli utworzyłeś blok, ale nie widzisz go w Block Layout:

    * Upewnij się, że zapisałeś blok po utworzeniu
    * W Block Layout kliknij **Place block** → wpisz nazwę bloku w wyszukiwarkę
    * Sprawdź czy blok nie jest już umieszczony w innym regionie
  </Accordion>

  <Accordion title="Widget pojawił się raz i zniknął">
    To normalne zachowanie! Widget automatycznie otwiera się przy pierwszej wizycie (po 3 sekundach). Przy kolejnych odwiedzinach w ciągu 15 minut trzeba kliknąć ikonę czatu ręcznie.

    Aby przetestować ponowne auto-otwarcie, otwórz stronę w **nowym oknie prywatnym** (incognito).
  </Accordion>

  <Accordion title="Używam adblocka lub rozszerzenia prywatności">
    Niektóre rozszerzenia przeglądarki (uBlock Origin, Ghostery, AdBlock) mogą blokować skrypty widgetu.

    **Rozwiązanie:** Dodaj `widget.wenetasystent.ai` do wyjątków w ustawieniach rozszerzenia lub otwórz stronę w trybie prywatnym bez rozszerzeń.
  </Accordion>

  <Accordion title="Widget zablokowany przez Content Security Policy (CSP)">
    Jeśli w konsoli przeglądarki (F12) widzisz błąd "Refused to load the script":

    * Sprawdź czy masz zainstalowany moduł **SecKit** lub inne zabezpieczenia CSP
    * Dodaj `widget.wenetasystent.ai` do dozwolonych źródeł skryptów (`script-src`)
    * Jeśli nie wiesz jak — skontaktuj się z administratorem serwera
  </Accordion>
</AccordionGroup>

## Jak usunąć widget?

**Metoda 1 (Custom Block):**

* Przejdź do **Structure → Block layout**
* Znajdź blok "Asystent AI Widget"
* Kliknij **Remove** (Usuń) obok tego bloku
* Potwierdź usunięcie
* Wyczyść cache: **Configuration → Performance → Clear all caches**

**Metoda 2 (edycja szablonu):**

* Połącz się z serwerem i otwórz plik szablonu
* Usuń linijkę z kodem `<script async src="https://widget...`
* Zapisz plik
* Wyczyść cache w Drupalu

## Gotowy kod do skopiowania

```html theme={null}
<!-- Asystent AI widget -->
<script async src="https://widget.wenetasystent.ai/?code=TWOJ_KOD"></script>
```

<Info>
  Pamiętaj, aby podmienić `TWOJ_KOD` na swój rzeczywisty kod widgetu z panelu Asystent AI!
</Info>

## Dodatkowe wskazówki dla Drupal

<AccordionGroup>
  <Accordion title="Drupal 8/9/10 - Różnice">
    Instrukcje powyżej działają dla Drupal 8, 9 i 10. Główne różnice:

    * Drupal 7 osiągnął koniec wsparcia (EOL) w styczniu 2025. Zalecamy aktualizację do Drupal 10+.
    * Ścieżki menu mogą się nieznacznie różnić w zależności od wersji
  </Accordion>

  <Accordion title="Używanie modułów dodatkowych">
    Możesz też użyć modułów takich jak:

    * **Insert** - pozwala wstawiać kod HTML w różnych miejscach
    * Możesz też użyć [Google Tag Manager](/embed/gtm) — oddzielna instrukcja.
  </Accordion>
</AccordionGroup>
