{"id":31010,"date":"2025-05-09T05:00:00","date_gmt":"2025-05-09T03:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=31010"},"modified":"2025-05-05T14:53:50","modified_gmt":"2025-05-05T12:53:50","slug":"daj-drupalowi-to-czego-nie-dostal-przy-porodzie","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/daj-drupalowi-to-czego-nie-dostal-przy-porodzie\/","title":{"rendered":"Daj Drupalowi to, czego nie dosta\u0142 przy porodzie"},"content":{"rendered":"\n<p>Wdra\u017caj\u0105c Drupala od zera, zawsze pojawia si\u0119 kwestia pocz\u0105tkowej konfiguracji \u015brodowiska. W\u00f3wczas zaczynamy szuka\u0107 w pami\u0119ci, jakie modu\u0142y b\u0119d\u0105 nam potrzebne, b\u0119d\u0105 przydatne lub u\u0142atwi\u0105 prac\u0119, a kt\u00f3rych nie ma domy\u015blnie zainstalowanych w naszym CMS-ie.<\/p>\n\n\n\n<p>Do\u015bwiadczenie pokazuje, \u017ce pomocne by\u0142oby zebranie w jednym dokumencie modu\u0142\u00f3w, kt\u00f3re warto zainstalowa\u0107 na starcie albo chocia\u017c przemy\u015ble\u0107 mo\u017cliwo\u015b\u0107 ich u\u017cycia. Zarz\u0105dzaj\u0105c ju\u017c istniej\u0105c\u0105 instancj\u0105, warto wiedzie\u0107, jakie dodatkowe modu\u0142y mog\u0105 j\u0105 wzbogaci\u0107. Opis opr\u0119 na modu\u0142ach zgodnych z wersjami Drupala 10 i 11.<\/p>\n\n\n\n<p>Kierowa\u0107 si\u0119 tu b\u0119d\u0119 r\u00f3wnie\u017c do\u015bwiadczeniem, zwracaj\u0105c uwag\u0119 na funkcjonalno\u015bci, kt\u00f3re cz\u0119sto by\u0142y wymagane lub pojawia\u0142y si\u0119 jako dobre praktyki.<\/p>\n\n\n\n<p>Wszystkie modu\u0142y mo\u017cna zainstalowa\u0107 z poprzez Composer (composer require drupal\/[nazwa modu\u0142u], a na stronach projekt\u00f3w znajduj\u0105 si\u0119 komendy instalacyjne dla najnowszych dost\u0119pnych wersji.<\/p>\n\n\n\n<p><strong>To zestawienie mo\u017ce te\u017c s\u0142u\u017cy\u0107 jako \u015bcie\u017cka rozwoju<\/strong>: opanowanie wymienionych modu\u0142\u00f3w pozwoli szybko i sprawnie wdra\u017ca\u0107 rozwi\u0105zania u klienta.<\/p>\n\n\n\n<p>Podzieli\u0142em modu\u0142y na kilka kategorii, ze wzgl\u0119du na ich zastosowanie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Konfiguracja.<\/li>\n\n\n\n<li>Kontent.<\/li>\n\n\n\n<li>Bezpiecze\u0144stwo.<\/li>\n<\/ul>\n\n\n\n<p>Do ka\u017cdego modu\u0142u dodam te\u017c informacj\u0119 oceniaj\u0105c\u0105 jej przydatno\u015b\u0107 w kontek\u015bcie wi\u0119kszych projekt\u00f3w. Wi\u0119kszo\u015b\u0107 du\u017cych projekt\u00f3w Dupalowych nie ob\u0119dzie si\u0119 bez niekt\u00f3rych funkcjonalno\u015bci, wi\u0119c trzeba je potraktowa\u0107 jako \u201cmust have\u201d i dobrze by\u0142oby je dobrze pozna\u0107.<\/p>\n\n\n\n<p>Postaram si\u0119 r\u00f3wnie\u017c umie\u015bci\u0107 przydane linki, w kt\u00f3rych b\u0119dzie wyja\u015bniona funkcjonalno\u015b\u0107 oraz, je\u015bli to mo\u017cliwe, jakie\u015b \u201cuse cases\u201d.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Konfiguracja<\/strong><\/h2>\n\n\n\n<p>Przedstawiam tu modu\u0142y u\u017cyteczne w kontek\u015bcie zarz\u0105dzania i utrzymywania konfiguracji Drupala. S\u0105 one wygodne, a nawet niezb\u0119dne przy du\u017cych, wielo\u015brodowiskowych wdro\u017ceniach (tam, gdzie mamy \u015brodowiska testowe, produkcyjne etc.).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Config Split<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/config_split\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/config_split<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>zawsze<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Modu\u0142 ten pozwala na posiadanie konfiguracji skrojonej dla danego \u015brodowiska \u2013 developerskiego, testowego, produkcyjnego, etc. Mo\u017cna dzi\u0119ki niemu stworzy\u0107 wiele konfiguracji, kt\u00f3re b\u0119d\u0105 uruchamiane na zasadach, jakie sobie okre\u015blimy w plikach konfiguracyjnych dla danego \u015brodowiska.<\/p>\n\n\n\n<p>Najbardziej podstawowe u\u017cycie to dodanie do pliku settings.php listy aktywnych\/nieaktywnych konfiguracji w zale\u017cno\u015bci od warto\u015bci zmiennej \u015brodowiskowej, gdzie w kluczu:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nconfig_split.config_split.{split_key},\n{split_key} jest identyfikatorem \u015brodowiska skonfigurowanym w \/admin\/config\/development\/configuration\/config-split.\n<\/pre><\/div>\n\n\n<p>Przyk\u0142ad:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nif (&#039;production&#039; === $_ENV&#x5B;&#039;ENVIRONMENT&#039;]) { \n  $config&#x5B;&#039;config_split.config_split.prod&#039;]&#x5B;&#039;status&#039;] = TRUE; \n  $config&#x5B;&#039;config_split.config_split.dev&#039;]&#x5B;&#039;status&#039;] = FALSE; \n} else { \n  $config&#x5B;&#039;config_split.config_split.prod&#039;]&#x5B;&#039;status&#039;] = FALSE; \n  $config&#x5B;&#039;config_split.config_split.dev&#039;]&#x5B;&#039;status&#039;] = TRUE; \n} \n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do konfiguracji modu\u0142u: \/admin\/config\/development\/configuration\/config-split<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Config Ignore<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/config_ignore\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/config_ignore<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>bardzo cz\u0119sto<\/strong><\/li>\n<\/ul>\n\n\n\n<p>W podstawowej funkcjonalno\u015bci modu\u0142 umo\u017cliwia ignorowanie ca\u0142ych plik\u00f3w konfiguracyjnych lub tylko konkretnych p\u00f3l podczas ich importowania, zapewniaj\u0105c tym samym, i\u017c konfiguracja przechowywana w bazie danych w trakcie importu si\u0119 nie zmieni, co jest czasami przydatne, gdy np. nie chcemy przechowywa\u0107 w pliku konfiguracyjnym has\u0142a do jakiego\u015b systemu, kt\u00f3re jest ju\u017c ustawione na serwerze produkcyjnym.<\/p>\n\n\n\n<p>Najnowsza wersja wprowadzi\u0142a dodatkowe tryby: Intermediate i Advanced, kt\u00f3re pozwalaj\u0105 odpowiednio filtrowa\u0107 przy Importach i Exportach oraz filtrowa\u0107 dla konkretnych operacji Create, Update lub Delete. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do konfiguracji modu\u0142u: \/admin\/config\/development\/configuration\/ignore<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Config Readonly<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/config_readonly\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/config_readonly<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>w zale\u017cno\u015bci od potrzeb<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Modu\u0142 pozwala zablokowa\u0107 mo\u017cliwo\u015b\u0107 dokonywania jakichkolwiek zmian w konfiguracji witryny poprzez proste ustawienie $settings[&#8217;config_readonly&#8217;] = TRUE;, kt\u00f3re mo\u017cna uzale\u017cni\u0107 od okre\u015blonych przez programist\u0119 warunk\u00f3w, np. uniemo\u017cliwi\u0107 jakiekolwiek zmiany na \u015brodowisku produkcyjnym.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Tre\u015b\u0107<\/strong><\/h2>\n\n\n\n<p>Przedstawi\u0119 tu list\u0119 modu\u0142\u00f3w, kt\u00f3re u\u0142atwi\u0105 prac\u0119 z Drupalem, zwi\u0119ksz\u0105 jego funkcjonalno\u015b\u0107, a tak\u017ce estetyk\u0119 pracy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Paragraphs<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/paragraphs\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/paragraphs<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>zawsze<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Paragraphs umo\u017cliwia tworzenie tre\u015bci w spos\u00f3b, kt\u00f3ry pozwala rozdzieli\u0107 zawarto\u015b\u0107 na niezale\u017cne, predefiniowane typy paragraf\u00f3w, kt\u00f3re mog\u0105 by\u0107 dowoln\u0105 struktur\u0105 zbudowan\u0105 z tekstu i multimedi\u00f3w. Dzi\u0119ki temu u\u017cytkownik mo\u017ce je dodawa\u0107 i uk\u0142ada\u0107 w dowolnej kolejno\u015bci, bez konieczno\u015bci korzystania z jednego du\u017cego pola. Rozwi\u0105zanie to u\u0142atwia utrzymanie czysto\u015bci kodu i zapewnia wi\u0119ksz\u0105 elastyczno\u015b\u0107 w zarz\u0105dzaniu wygl\u0105dem ka\u017cdej sekcji. Jest to praktycznie must have w ka\u017cdym projekcie. U\u0142atwia organizowanie typ\u00f3w tre\u015bci w sekcje, kt\u00f3re mo\u017cna dowolnie dodawa\u0107 i obs\u0142ugiwa\u0107 frontendowo.<\/p>\n\n\n\n<p>W ramach paragraphs dost\u0119pny jest r\u00f3wnie\u017c modu\u0142 Paragraphs Library, kt\u00f3ry umo\u017cliwia reu\u017cywalno\u015b\u0107 utworzonych wcze\u015bniej dokument\u00f3w w ramach paragrafu w innych dokumentach.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do konfiguracji paragraphs: \/admin\/structure\/paragraphs_type<\/li>\n\n\n\n<li>\u015acie\u017cka do konfiguracji paragraphs library: \/admin\/config\/content\/paragraphs_library_item<\/li>\n\n\n\n<li>Dodatkowe linki: <a href=\"https:\/\/www.youtube.com\/watch?v=0gboYyLtTQk\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.youtube.com\/watch?v=0gboYyLtTQk<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Entity Usage<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/entity_usage\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/entity_usage<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>w zale\u017cno\u015bci od potrzeb<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Modu\u0142 ten umo\u017cliwia \u015bledzenia relacji mi\u0119dzy encjami. W skr\u00f3cie: mo\u017cna zweryfikowa\u0107 co i gdzie jest u\u017cywane. U\u017cywa\u0107 z rozwag\u0105, gdy\u017c znacz\u0105co obci\u0105\u017ca system przy du\u017cych stronach.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dodatkowe linki:\n<ul class=\"wp-block-list\">\n<li><a style=\"font-size: 1.4rem;\" href=\"https:\/\/www.thedroptimes.com\/30817\/video-know-more-about-entity-usage-module\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.thedroptimes.com\/30817\/video-know-more-about-entity-usage-module<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.drupal.org\/docs\/contributed-modules\/entity-usage\/installation-and-basic-usage\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/docs\/contributed-modules\/entity-usage\/installation-and-basic-usage<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Entity Browser<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/entity_browser\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/entity_browser<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>bardzo cz\u0119sto<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Modu\u0142 ten umo\u017cliwia tworzenie elastycznych i rozbudowanych interfejs\u00f3w do wyszukiwania oraz wyboru r\u00f3\u017cnych encji w Drupalu (np. tre\u015bci, plik\u00f3w, obraz\u00f3w, medi\u00f3w). Zamiast prostego pola wyboru, pozwala zdefiniowa\u0107 bardziej zaawansowane sposoby przegl\u0105dania, filtrowania i podgl\u0105du encji, m.in. w postaci widok\u00f3w czy okien modalnych. U\u017cytkownicy mog\u0105 \u0142atwiej wyszukiwa\u0107, sortowa\u0107 i wybiera\u0107 obiekty, a sam interfejs mo\u017cna dostosowa\u0107 do potrzeb projektu, definiuj\u0105c na przyk\u0142ad pola wyszukiwania, kolejno\u015b\u0107 wy\u015bwietlanych wynik\u00f3w czy uk\u0142ad listy dost\u0119pnych encji.<\/p>\n\n\n\n<p>Istnieje mo\u017cliwo\u015b\u0107 zindywidualizowania wygl\u0105du tego widgetu, a tak\u017ce u\u017cycia widok\u00f3w okre\u015blaj\u0105cych, jakie pliki maj\u0105 by\u0107 w nim dost\u0119pne.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cki do konfiguracji: \/admin\/config\/content\/entity_browser<\/li>\n\n\n\n<li>Dodatkowe linki:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=wn_bkTdBkc8\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.youtube.com\/watch?v=wn_bkTdBkc8<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.drupal.org\/docs\/contributed-modules\/entity-browser\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/docs\/contributed-modules\/entity-browser<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Redirect<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/redirect\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/redirect<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>zawsze<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Udost\u0119pnia mechanizm przekierowa\u0144 z dowolnej \u015bcie\u017cki do konkretnego dokumentu Dupala jednocze\u015bnie, mo\u017cemy ustawi\u0107 odpowiedni status dla przekierowania (od 300 to 307 patrz: <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Reference\/Status\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Reference\/Status<\/a>)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do konfiguracji: \/admin\/config\/search\/redirect<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Media<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/docs\/8\/core\/modules\/media\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/docs\/8\/core\/modules\/media<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>bardzo cz\u0119sto<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Modu\u0142 jest ju\u017c dodany w Drupal 11, ale nie jest zainstalowany.<\/p>\n\n\n\n<p>Wprowadza mechanizm, kt\u00f3ry pozwala na tworzenie i zarz\u0105dzenie r\u00f3\u017cnymi typami multimedi\u00f3w: Audio, Document, Image, Remote video oraz Video. Ka\u017cdy z typ\u00f3w medi\u00f3w mo\u017ce mie\u0107 przypisane w\u0142asne pola i konfiguracje wy\u015bwietlania, co pozwala na elastyczne dostosowanie do potrzeb witryny. Mo\u017cna tworzy\u0107 w dokumencie pola, kt\u00f3re b\u0119d\u0105 akceptowa\u0107 tylko konkretny, zdefiniowany typ medi\u00f3w.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cki do konfiguracji: \/admin\/structure\/media oraz \/admin\/config\/media\/media-settings<\/li>\n\n\n\n<li>Dodatkowe linki: <a href=\"https:\/\/www.youtube.com\/watch?v=2x21f2MnQ8E\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.youtube.com\/watch?v=2x21f2MnQ8E<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Media library<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/media_library\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/media_library<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>bardzo cz\u0119sto<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Wygodny w u\u017cyciu, zaawansowany widget rozszerzaj\u0105cy mo\u017cliwo\u015bci modu\u0142u Media, oferuj\u0105cy intuicyjny interfejs do zarz\u0105dzania zasobami multimedialnymi. Dzi\u0119ki integracji z edytorem CKEditor5 pozwala na bezpo\u015brednie osadzenie multimedi\u00f3w w tre\u015bci.<\/p>\n\n\n\n<p>Aby widget by\u0142 dost\u0119pny w CKEditor5, nale\u017cy doda\u0107 go r\u0119cznie do konfiguracji wybranego edytora \/admin\/config\/content\/formats, a reprezentowany jest jako button Drupal Media<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"54\" height=\"54\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/img_1.png\" alt=\"ikona\" class=\"wp-image-31011\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dodatkowe linki:\n<ul class=\"wp-block-list\">\n<li><a style=\"font-size: 1.4rem;\" href=\"https:\/\/www.drupal.org\/docs\/core-modules-and-themes\/core-modules\/media-library-module\/overview\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/docs\/core-modules-and-themes\/core-modules\/media-library-module\/overview<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=Ge-C0Oe4wuE\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.youtube.com\/watch?v=Ge-C0Oe4wuE<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Media entity browser<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/media_entity_browser\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/media_entity_browser<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>w zale\u017cno\u015bci od potrzeb<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Je\u015bli chcemy, aby u\u017cytkownik mia\u0142 wygodne narz\u0119dzie do zarz\u0105dzania plikami, ten modu\u0142 jest obowi\u0105zkowy. <em>Media Entity Browser<\/em> jest modu\u0142em scalaj\u0105cym zalety <em>Entity Browser<\/em> z modu\u0142em <em>Media<\/em> Drupala.<\/p>\n\n\n\n<p>Istnieje mo\u017cliwo\u015b\u0107 zindywidualizowania wygl\u0105du tego widgetu, a tak\u017ce u\u017cycia widok\u00f3w okre\u015blaj\u0105cych, jakie media maj\u0105 by\u0107 w nim dost\u0119pne.<\/p>\n\n\n\n<p>Trzeba jednak by\u0107 tutaj troch\u0119 ostro\u017cnym, gdy\u017c wymagana zale\u017cno\u015b\u0107 <em>inline_entity_form<\/em> (<a href=\"https:\/\/www.drupal.org\/project\/inline_entity_form\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/inline_entity_form<\/a>.) jest aktualnie w wersji RC, wi\u0119c najlepiej przetestowa\u0107 funkcjonalno\u015b\u0107 przed wrzuceniem na produkcj\u0119.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"486\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/img_2-1024x486.png\" alt=\"select media\" class=\"wp-image-31013\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/img_2-1024x486.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/img_2-300x142.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/img_2-768x364.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/img_2.png 1081w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cki do konfiguracji: \/admin\/config\/content\/entity_browser<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Trash<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/trash\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/trash<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>w zale\u017cno\u015bci od potrzeb<\/strong><\/li>\n<\/ul>\n\n\n\n<p>\u015awietny modu\u0142 zabezpieczaj\u0105cy dokumenty przed przypadkowym skasowaniem dodaj\u0105cy mechanizm <em>Trash <\/em>bin.<\/p>\n\n\n\n<p>Istnieje mo\u017cliwo\u015b\u0107 wybrania typu encji, jaki ma by\u0107 obs\u0142ugiwany przez modu\u0142 oraz automatyczne czyszczenie kosza po up\u0142ywie wskazanego czasu.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cki do konfiguracji: \/admin\/config\/content\/trash<\/li>\n\n\n\n<li>Dodatkowe linki:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/git.drupalcode.org\/project\/trash\/-\/blob\/3.x\/README.md\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/git.drupalcode.org\/project\/trash\/-\/blob\/3.x\/README.md<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/shorts\/UgcUWIzQaoo\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.youtube.com\/shorts\/UgcUWIzQaoo<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=7jNmM2VnjUQ\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.youtube.com\/watch?v=7jNmM2VnjUQ<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Dropzonejs<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/dropzonejs\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/dropzonejs<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>w zale\u017cno\u015bci od potrzeb<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Modu\u0142 ten dostarcza funkcjonalno\u015b\u0107 zapewnian\u0105 przez bibliotek\u0119 <em>DropzoneJS<\/em>, dzi\u0119ki kt\u00f3rej mo\u017cna uploadowa\u0107 pliki, u\u017cywaj\u0105c mechanizmu drag\u2019n\u2019drop.<\/p>\n\n\n\n<p>Jest \u015bwietnym rozwi\u0105zaniem, gdy u\u017cyjemy go razem z Media entity browser.<\/p>\n\n\n\n<p>Instalacja modu\u0142u wymaga dodanie do pliku composer.js wpisu dla klucza repositories<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n &quot;repositories&quot;: &#x5B;\n        {\n            &quot;type&quot;: &quot;package&quot;,\n            &quot;package&quot;: {\n                &quot;name&quot;: &quot;enyo\/dropzone&quot;,\n                &quot;version&quot;: &quot;5.9.3&quot;,\n                &quot;type&quot;: &quot;drupal-library&quot;,\n                &quot;dist&quot;: {\n                    &quot;url&quot;: &quot;https:\/\/github.com\/dropzone\/dropzone\/releases\/download\/v5.9.3\/dist.zip&quot;,\n                    &quot;type&quot;: &quot;zip&quot;\n                }\n            }\n        }\n    ]\n<\/pre><\/div>\n\n\n<p>i uruchomienie komendy: composer require drupal\/dropzonejs enyo\/dropzone<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"456\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/img-1024x456.png\" alt=\"add or select media\" class=\"wp-image-31015\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/img-1024x456.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/img-300x134.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/img-768x342.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/img.png 1468w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do konfiguracji: Niczego nie trzeba konfigurowa\u0107.<\/li>\n\n\n\n<li>Dodatkowe linki:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/dropzone\/dropzone\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/github.com\/dropzone\/dropzone<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.dropzone.dev\/\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.dropzone.dev\/<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Pathauto<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/pathauto\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/pathauto<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>zawsze<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Modu\u0142, kt\u00f3ry pozwala na zautomatyzowane tworzenie alias\u00f3w adres\u00f3w url do dowolnego typu tre\u015bci. Dla wybranego typu encji i j\u0119zyka mo\u017cna skonfigurowa\u0107 w\u0142asny schemat \u015bcie\u017cki.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cki do konfiguracji: \/admin\/config\/search\/path\/patterns<\/li>\n\n\n\n<li>Dodatkowe linki: <a href=\"https:\/\/www.youtube.com\/watch?v=Pi5CweTmF5Q\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.youtube.com\/watch?v=Pi5CweTmF5Q<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Bezpiecze\u0144stwo<\/strong><\/h2>\n\n\n\n<p>Przedstawiam najbardziej przydatne i najcz\u0119\u015bciej wykorzystywane modu\u0142y, kt\u00f3re zwi\u0119kszaj\u0105 bezpiecze\u0144stwo witryny i ka\u017cdy \u201c<em>drupalowiec\u201d<\/em> powinien je pozna\u0107.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Rename Admin Paths<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/rename_admin_paths\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/rename_admin_paths<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>zawsze<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Prosty, a zarazem u\u017cyteczny modu\u0142 zwi\u0119kszaj\u0105cy bezpiecze\u0144stwo witryny poprzez zmian\u0119 domy\u015blnych \u015bcie\u017cek administracyjnych, takich jak \/admin oraz \/user, na niestandardowe, co utrudnia potencjalnym atakuj\u0105cym dost\u0119p do panelu zarz\u0105dzania.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"707\" height=\"574\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/img_4.png\" alt=\"rename admin path\" class=\"wp-image-31017\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/img_4.png 707w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/img_4-300x244.png 300w\" sizes=\"(max-width: 707px) 100vw, 707px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do konfiguracji: \/backend\/config\/system\/rename-admin-paths<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Password Policy<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/password_policy\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/password_policy<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>w zale\u017cno\u015bci od potrzeb<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Modu\u0142 pozwala stworzy\u0107 polityk\u0119 hase\u0142 dla wybranych r\u00f3l. Poprzez doinstalowanie dostarczonych wraz z modu\u0142em Policy Constraints istnieje mo\u017cliwo\u015b\u0107 okre\u015blenia m.in.:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>password_policy_blacklist \u2013 lista ci\u0105g\u00f3w, kt\u00f3re nie mog\u0105 by\u0107 u\u017cyte jako has\u0142a lub te\u017c has\u0142a nie mog\u0105 ich zawiera\u0107.<\/li>\n\n\n\n<li>password_policy_character_types \u2013 minimalna liczba typ\u00f3w znak\u00f3w (2,3 lub 4) spo\u015br\u00f3d lowercase letters, uppercase letters, digits, special characters.<\/li>\n\n\n\n<li>password_policy_characters \u2013 okre\u015bla minimaln\u0105 wymagan\u0105 ilo\u015b\u0107 znak\u00f3w danego typu (lowercase letters, uppercase letters, digits, special characters).<\/li>\n\n\n\n<li>password_policy_consecutive \u2013 pozwala ograniczy\u0107 liczb\u0119 powt\u00f3rze\u0144 w jednym ci\u0105gu danego znaku w ha\u015ble.<\/li>\n\n\n\n<li>password_policy_delay \u2013 okre\u015bla ilo\u015b\u0107 godzin, po kt\u00f3rej mo\u017cna ponownie zmieni\u0107 has\u0142o (ograniczenie dzia\u0142a r\u00f3wnie\u017c przy zmianie has\u0142a w panelu administracyjnym).<\/li>\n\n\n\n<li>password_policy_history \u2013 uniemo\u017cliwa ponowne u\u017cycia has\u0142a.<\/li>\n\n\n\n<li>password_policy_length \u2013 pozwala okre\u015bli\u0107 maksymaln\u0105 i minimaln\u0105 d\u0142ugo\u015b\u0107 has\u0142a.<\/li>\n\n\n\n<li>password_policy_username \u2013 ogranicza mo\u017cliwo\u015b\u0107 u\u017cycia nazwy u\u017cytkownika w ha\u015ble, umo\u017cliwia r\u00f3wnie\u017c wymuszenie zmiany has\u0142a po up\u0142ywie zdefiniowanego okresu.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do konfiguracji: \/admin\/config\/security\/password-policy<\/li>\n\n\n\n<li>Dodatkowe linki: <a href=\"https:\/\/www.youtube.com\/watch?v=aYLnFQh7Mj0\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.youtube.com\/watch?v=aYLnFQh7Mj0<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Security Kit<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/seckit\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/seckit<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>w zale\u017cno\u015bci od potrzeb<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Modu\u0142 ten pozwana na zwi\u0119kszenie bezpiecze\u0144stwo Drupala poprzez ochron\u0119 przed typowymi zagro\u017ceniami webowymi, takimi jak ataki typu XSS, clickjacking oraz SSL stripping. Pozwala na konfiguracj\u0119 nag\u0142\u00f3wk\u00f3w HTTP, Content Security Policy (CSP), zarz\u0105dzanie HTTPS oraz blokowanie nieautoryzowanych osadzonych tre\u015bci. Mo\u017cna r\u00f3wnie\u017c wy\u0142\u0105czy\u0107 funkcj\u0119 automatycznego uzupe\u0142niania nazwy u\u017cytkownika w przegl\u0105darce na stronie logowania u\u017cytkownika.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do konfiguracji: \/admin\/config\/system\/seckit<\/li>\n\n\n\n<li>Dodatkowe linki:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.droptica.com\/blog\/security-kit-drupal-module-overview\/\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.droptica.com\/blog\/security-kit-drupal-module-overview\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sekurak.pl\/czym-jest-xss\/\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/sekurak.pl\/czym-jest-xss\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sekurak.pl\/czym-jest-podatnosc-csrf-cross-site-request-forgery\/\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/sekurak.pl\/czym-jest-podatnosc-csrf-cross-site-request-forgery\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.keepersecurity.com\/blog\/pl\/2023\/07\/24\/what-is-clickjacking\/\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.keepersecurity.com\/blog\/pl\/2023\/07\/24\/what-is-clickjacking\/<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Autologout<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/autologout\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/autologout<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>w zale\u017cno\u015bci od potrzeb<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Modu\u0142 umo\u017cliwia m.in.: skonfigurowanie automatycznego wylogowywania u\u017cytkownika zgodnie ze skonfigurowanymi w tym module kryteriami.<\/p>\n\n\n\n<p>Istnieje mo\u017cliwo\u015b\u0107 okre\u015blenia czasu nieaktywno\u015bci na stronie, po kt\u00f3rym nast\u0105pi wylogowanie, czy te\u017c maksymalnego czasu, po kt\u00f3rym u\u017cytkownik zostanie bezwzgl\u0119dnie wylogowany. Mo\u017cna zdefiniowa\u0107 te czasy per rola oraz ustawi\u0107 przekierowanie u\u017cytkownika na zdefiniowany adres zaraz po automatycznym wylogowaniu. Warto zapozna\u0107 si\u0119 r\u00f3wnie\u017c z modu\u0142em <a href=\"https:\/\/www.drupal.org\/project\/autologout_alterable\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/autologout_alterable<\/a>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do konfiguracji: \/admin\/config\/people\/autologout<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Shield<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/shield\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/shield<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>w zale\u017cno\u015bci od potrzeb<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Modu\u0142 umo\u017cliwia ograniczenie dost\u0119pu do instancji Drupala, poprzez dodanie wymogu podania zdefiniowanego u\u017cytkownika i has\u0142a przed jakimkolwiek dost\u0119pem do witryny. Bardzo przydatne, w celu ochrony instancji testowych przed dost\u0119pem z zewn\u0105trz. Zast\u0105pi\u0107 mo\u017ce cz\u0119sto stosowe mechanizmy konfigurowane po stronie DevOps<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do konfiguracji: \/admin\/config\/system\/shield<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Username Enumeration Prevention<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/username_enumeration_prevention\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/username_enumeration_prevention<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>w zale\u017cno\u015bci od potrzeb<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Modu\u0142 ten ogranicza mo\u017cliwo\u015b\u0107 identyfikacji nazw u\u017cytkownik\u00f3w przez osoby niezalogowane.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do konfiguracji: Niczego nie trzeba konfigurowa\u0107.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Masquerade<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/masquerade\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/masquerade<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>w zale\u017cno\u015bci od potrzeb<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Modu\u0142 ten umo\u017cliwia administratorom prze\u0142\u0105czanie si\u0119 na innych u\u017cytkownik\u00f3w bez podawania has\u0142a i pracy w kontek\u015bcie tego u\u017cytkownika. Bardzo przydatne narz\u0119dzie dla developer\u00f3w i administrator\u00f3w do testowania uprawnie\u0144 u\u017cytkownik\u00f3w oraz diagnozowania problem\u00f3w z dost\u0119pem lub konfiguracj\u0105.<\/p>\n\n\n\n<p>Aby prze\u0142\u0105czy\u0107 si\u0119 na u\u017cytkownika, nale\u017cy przej\u015b\u0107 do zak\u0142adki \/admin\/people i z operacji wybra\u0107 Masquerade as.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do konfiguracji: Niczego nie trzeba konfigurowa\u0107.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Security Review<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/security_review\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/security_review<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>zawsze<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Narz\u0119dzie to posiada list\u0119 test\u00f3w weryfikuj\u0105cych podatno\u015bci zwi\u0105zane z konfiguracj\u0105 aplikacji i \u015brodowiska.<\/p>\n\n\n\n<p>Testy mo\u017cna wywo\u0142a\u0107 r\u0119cznie w panelu administracyjnym lub te\u017c wple\u015b\u0107 go w skrypty releasuj\u0105ce, wywo\u0142uj\u0105c komend\u0119 drush security:review.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do konfiguracji: \/admin\/config\/security-review<\/li>\n\n\n\n<li>Dodatkowe linki: <a href=\"https:\/\/www.droptica.pl\/blog\/security-review-opis-modulu\/\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.droptica.pl\/blog\/security-review-opis-modulu\/<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>CORS UI<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/cors_ui\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/cors_ui<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>zawsze<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Daje nam mo\u017cliwo\u015b\u0107 zarz\u0105dzania ustawieniami Cross-Origin Resource Sharing (CORS). Umo\u017cliwia administratorom witryny \u0142atw\u0105 konfiguracj\u0119 polityk CORS bez konieczno\u015bci r\u0119cznej edycji plik\u00f3w konfiguracyjnych. Dzi\u0119ki temu integracja z zewn\u0119trznymi aplikacjami i us\u0142ugami staje si\u0119 bardziej intuicyjna i mniej podatna na b\u0142\u0119dy.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do konfiguracji: \/admin\/config\/services\/cors<\/li>\n\n\n\n<li>Dodatkowe linki:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Guides\/CORS\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Guides\/CORS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sekurak.pl\/czym-jest-cors-cross-origin-resource-sharing-i-jak-wplywa-na-bezpieczenstwo\/\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/sekurak.pl\/czym-jest-cors-cross-origin-resource-sharing-i-jak-wplywa-na-bezpieczenstwo\/<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Flood control<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Projekt: <a href=\"https:\/\/www.drupal.org\/project\/flood_control\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >https:\/\/www.drupal.org\/project\/flood_control<\/a><\/li>\n\n\n\n<li>Ocena przydatno\u015bci: <strong>zawsze<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Modu\u0142 pozwala ograniczy\u0107 ilo\u015b\u0107 b\u0142\u0119dnych logowa\u0144 per IP lub u\u017cytkownik, ustawi\u0107 whitelist lub ograniczy\u0107 mo\u017cliwo\u015b\u0107 wysy\u0142ania formularzy dla danego adresu email.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u015acie\u017cka do modu\u0142u: \/admin\/config\/people\/flood-control<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/oferty-pracy\/\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"737\" height=\"170\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/praca-PL-k.jpg\" alt=\"oferty pracy\" class=\"wp-image-31019\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/praca-PL-k.jpg 737w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/praca-PL-k-300x69.jpg 300w\" sizes=\"(max-width: 737px) 100vw, 737px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<p>Z opisanymi wy\u017cej modu\u0142ami startujesz z Drupalem w wersji \u201cpro\u201d, kt\u00f3r\u0105 \u0142atwiej rozwija\u0107, utrzymywa\u0107 i bezpiecznie u\u017cytkowa\u0107. Wiedza o funkcjonalno\u015bciach pozwoli Ci b\u0142yskawicznie dostosowywa\u0107 rozwi\u0105zania do potrzeb klienta, ale te\u017c mo\u017ce by\u0107 pierwsz\u0105 checklist\u0105 przy ka\u017cdym nowym wdro\u017ceniu.<\/p>\n\n\n\n<p>***<\/p>\n\n\n\n<p>Je\u015bli interesuje Ci\u0119 tematyka Drupal, zajrzyj koniecznie r\u00f3wnie\u017c do innego artyku\u0142u naszego specjalisty: <a href=\"https:\/\/sii.pl\/blog\/drupal-vs-wordpress-ktory-system-wybrac\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Drupal vs. WordPress \u2013 kt\u00f3ry system wybra\u0107?<\/a><\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;31010&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;3&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;3.7&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;3.7\\\/5 ( votes: 3)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Daj Drupalowi to, czego nie dosta\u0142 przy porodzie&quot;,&quot;width&quot;:&quot;101.8&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 101.8px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            3.7\/5 ( votes: 3)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Wdra\u017caj\u0105c Drupala od zera, zawsze pojawia si\u0119 kwestia pocz\u0105tkowej konfiguracji \u015brodowiska. W\u00f3wczas zaczynamy szuka\u0107 w pami\u0119ci, jakie modu\u0142y b\u0119d\u0105 nam &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/daj-drupalowi-to-czego-nie-dostal-przy-porodzie\/\">Continued<\/a><\/p>\n","protected":false},"author":712,"featured_media":31021,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1314],"tags":[2741,1546,1512,930],"class_list":["post-31010","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-twardo","tag-drupal","tag-przeglad-narzedzi","tag-poradnik","tag-e-commerce"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/Raport-analiza-wykres_v3.jpg","category_names":["Development na twardo"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/31010"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/712"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=31010"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/31010\/revisions"}],"predecessor-version":[{"id":31025,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/31010\/revisions\/31025"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/31021"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=31010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=31010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=31010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}