Metatagi w praktyce – jak tworzyć skuteczne tytuły, opisy i inne znaczniki pod SEO

SEM/SEO

Metatagi są częścią tagów HTML które potrafią istotnie wpłynąć na sposób wyświetlania Twojej strony internetowej w wynikach wyszukiwarek, takich jak Google, Bing czy Yandex. Co więcej, w dzisiejszym świecie nieustannej gonitwy za zwiększaniem konkurencyjności, metatagi są obowiązkowym punktem wyjściowym, który najczęściej odnajdziesz w sekcji HEAD kodu źródłowego serwisu. Google świetnie radzi sobie z odczytywaniem metatagów zarówno w formacie HTML, jak i XHTML. Mimo to, przesadne wykorzystanie wielu metadanych nie wpłynie na zmianę Twojej pozycji. Dlatego skupmy się tylko na tych najbardziej istotnych znacznikach, które realnie poprawią Twoje rezultaty SEO.

Meta Title

Wszystkie strony HTML wymagają podania tytułu wskazującego treść, którą zamieszczasz na danej stronie. Sam znacznik 
to w praktyce jeden z najważniejszych znaczników mających wpływ na prezentację i pozycję strony internetowej (rys. 1). <br>  </p><div class="sep-txt"><p>POLECAMY</p></div> <div style="margin-bottom:60px;" id="smb_3966"></div> <div style="text-align:center"> <figure class="image" style="display:inline-block"><img alt="" height="127" src="//forumlogopedy.pl/media/cache/resolve/thumb/uploads/61c/1ce/61c1ce9dd2bf3549325973.png" width="673"> <figcaption>Rys. 1. Metadane w wynikach wyszukiwarki Google</figcaption> </figure> </div> <p><br> Głównymi problemami w przypadku tworzenia opisów meta title jest ich słaba optymalizacja. Najczęściej są one za krótkie lub zbyt długie. W konsekwencji nie przedstawiają użytkownikom rzeczywistej zawartości strony internetowej w sposób bezpośredni. <br> Jeśli Twój title będzie na tyle długi, że przekroczy barierę 600 px długości, musisz liczyć się z tym, że liczba znaków wyniku wyszukiwania zostanie ograniczona, a pod koniec tytułu w miejscu pełnej treści pojawi się wielokropek. <br> Jeśli chcesz konkurować o najwyższe pozycje, to konstruując tytuł powinieneś pamiętać o najważniejszych, dobrych praktykach. Pierwsza z nich dotyczy unikalności. Na jedną podstronę serwisu powinien przypadać jeden unikalny tytuł. Obecnie znaczna część meta tytułów jest tworzona w sposób chaotyczny bez uprzedniego zaplanowania. Pamiętaj, że nawet dla paginacji możesz wypracować unikalność. Wystarczy, że do tytułu dodasz informacje o aktualnej stronie, na jakiej znajduje się użytkownik (np. Moja ulubiona kategoria | Strona 3 z 20). Title jest również świetnym miejscem na elementy CTA, dzięki wcześniejszemu planowaniu i testowaniu różnych formatów w końcu odnajdziesz ten, który trafi do docelowej grupy użytkowników, jednocześnie poprawiając Twoje wyniki konwersji. <br> Po drugie, pamiętaj o korelacji treści tytułu z nagłówkiem H1. Powinna być ona ze sobą ściśle powiązana. Aktualnie, jednym z najpowszechniejszych błęd...</p> </div> <div class="pay-wall-box"> <div class="box effect4"> <div style="font-size:3em; color:#999"> <i class="fas fa-lock"></i> </div>Pozostałe <b>90% treści</b> dostępne jest tylko dla Prenumeratorów</h3> <div style="display: block; margin: 0 auto;"> <a href="/prenumerata"> <img style="max-width: 100%;" src="https://o-m.pl/media/cache/resolve/origin/uploads/662/8ec/6628ec3c12444533625410.png"> </a> </div> <div class="tagline">Co zyskasz, kupując prenumeratę?</div> <div class="ptaszki"> <ul> <li>6 drukowanych wydań magazynu Online Marketing</li> <li>Dodatkowe artykuły niepublikowane w formie papierowej</li> <li>Dostęp do czasopisma w wersji online</li> <li>Dostęp do wszystkich archiwalnych wydań magazynu oraz dodatków specjalnych</li> <li>... i wiele więcej!</li> </ul> </div> </div> </div> </div> <div class="footnotes"> <h3 class="footnotes-header">Przypisy</h3> <div data-readmore="true" data-readmore-trigger-open="<i class='icon-angle-down i-plain i-large m-0 float-none'></i>" data-readmore-trigger-close="<i class='icon-angle-up i-plain i-large m-0 float-none'></i>" class="read-more-wrap" style="height: 10rem; transition-duration: 500ms;"> <ol class="footnotes-ol"></ol> <a href="#" class="read-more-trigger"><i class="icon-angle-down i-plain i-large m-0 float-none"></i></a> <div class="read-more-mask" style="height: 100%; background-image: linear-gradient(rgba(255, 255, 255, 0), rgb(255, 255, 255));"></div> </div> </div> </div> </div> <div class="widget clearfix"><div class="row justify-content-between col-mb-30 post-navigation"> <div class="col-12 col-md-6 text-center text-md-left"> <div class="pr-md-5 pr-0"> <a href="//o-m.pl/artykul/content-i-seo-jak-przygotowac-atrakcyjna-tresc-pod-katem-wyszukiwarki-i-uzytkownika" class="switch__link"> <p class="switch__header"><span class="d-md-inline d-none"> ⇐</span> Poprzedni wpis</p> <p class="switch__title">Content i SEO – jak przygotować atrakcyjną treść pod kątem wyszukiwarki i użytkownika</p> </a> </div> </div> <div class="col-12 col-md-6 text-center text-md-right"> <div class=" pl-md-5 pl-0"> <a href="//o-m.pl/artykul/priorytety-w-technicznej-optymalizacji-seo" class="switch__link"> <p class="switch__header">Następny wpis<span class="d-md-inline d-none"> ⇒</span></p> <p class="switch__title">Priorytety w technicznej optymalizacji SEO</p> </a> </div> </div> </div> </div><div class="line"></div><div class="widget clearfix"><p style="text-align:center"><a id="prenumerata" href="https://o-m.pl/prenumerata" target="_blank"><img alt="" height="250" src="https://forumlogopedy.pl/media/cache/resolve/thumb/uploads/66d/95d/66d95d7fcab87024131015.png" width="730" /></a></p> </div><div class="line"></div> </div> <div class="col-lg-4 sticky-sidebar-wrap mt-5 mt-lg-0"> <div class="sticky-sidebar"> <div class="widget clearfix"><p style="text-align:center"><a id="kongres" href="https://www.kongres-pr.pl" target="_blank"><img alt="" height="600" src="https://forumlogopedy.pl/media/cache/resolve/thumb/uploads/689/053/68905329ad931772247706.png" width="300" /></a></p> </div><div class="line"></div><div class="widget clearfix"><div class="my-2"> <div class="promo-sidebar"> <a href="https://www.kongres-online.pl/?a=86884/1&f=sm_display&c=null&chc=side#wez-udzial"> <img class="picture" style="background-color: transparent;" src="https://o-m.pl/media/cache/origin/uploads/681/b41/681b4162931d1191951503.webp?extension=png&version=666" loading="lazy"> </a> </div> </div></div><div class="line"></div><div class="widget clearfix"><div class="si-share border-0 d-flex justify-content-between align-items-center"> <span>Udostępnij:</span> <div> <a href="https://www.facebook.com/sharer/sharer.php?u=http://o-m.pl/artykul/metatagi-w-praktyce-jak-tworzyc-skuteczne-tytuly-opisy-i-inne-znaczniki-pod-seo" target="_blank" class="social-icon si-borderless si-facebook"> <i class="icon-facebook"></i> <i class="icon-facebook"></i> </a> <a href="http://twitter.com/share?text=Metatagi w praktyce – jak tworzyć skuteczne tytuły, opisy i inne znaczniki pod SEO&url=http://o-m.pl/artykul/metatagi-w-praktyce-jak-tworzyc-skuteczne-tytuly-opisy-i-inne-znaczniki-pod-seo" target="_blank" class="social-icon si-borderless si-twitter"> <i> <svg xmlns="http://www.w3.org/2000/svg" height="14" width="14" viewBox="0 0 512 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"/></svg> </i> <i> <svg xmlns="http://www.w3.org/2000/svg" height="14" width="14" viewBox="0 0 512 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"/></svg> </i> </a> </div> </div></div><div class="line"></div><div class="widget clearfix"><div class="col-12"> <h4>Podobne artykuły:</h4> <div class="related-posts row posts-md col-mb-30"> <div class="entry col-md-12"> <!-- Post Article --> <div class="grid-inner row align-items-center no-gutter"> <div class="col-auto"> <div class="entry-image"> <a href="//o-m.pl/artykul/priorytety-w-technicznej-optymalizacji-seo"> <img class="picture" style="background-color: transparent;" src="https://o-m.pl/media/cache/img_800_600/uploads/645/cf1/645cf17c88541869904030.webp?extension=jpg&version=666" loading="lazy"> </a> </div> </div> <div class="col pl-3"> <div class="entry-title"> <h4 class="font-weight-medium"><a href="//o-m.pl/artykul/priorytety-w-technicznej-optymalizacji-seo">Priorytety w technicznej optymalizacji SEO</a></h4> </div> <div class="entry-meta"> <ul> <li class="autorcanvas_art"> <span> <i class="icon-pencil"></i></span> <a href="/autor/krzysztof-walaszewski">Krzysztof Wałaszewski</a> </li> <li class="datacanvas_art"><i class="icon-time"></i>11 maja 2023</li> </ul> </div> </div> </div> </div> <div class="entry col-md-12"> <!-- Post Article --> <div class="grid-inner row align-items-center no-gutter"> <div class="col-auto"> <div class="entry-image"> <a href="//o-m.pl/artykul/ux-w-seo-czyli-jak-algorytm-google-zaczyna-rozumiec-uzytkownikow"> <img class="picture" style="background-color: transparent;" src="https://o-m.pl/media/cache/img_800_600/uploads/640/88b/64088b80ae77e079071685.webp?extension=jpg&version=666" loading="lazy"> </a> </div> </div> <div class="col pl-3"> <div class="entry-title"> <h4 class="font-weight-medium"><a href="//o-m.pl/artykul/ux-w-seo-czyli-jak-algorytm-google-zaczyna-rozumiec-uzytkownikow">UX w SEO – czyli jak algorytm Google zaczyna rozumieć użytkowników?</a></h4> </div> <div class="entry-meta"> <ul> <li class="autorcanvas_art"> <span> <i class="icon-pencil"></i></span> <a href="/autor/olaf-przybylski">Olaf Przybylski</a> </li> <li class="datacanvas_art"><i class="icon-time"></i>8 marca 2023</li> </ul> </div> </div> </div> </div> <div class="entry col-md-12"> <!-- Post Article --> <div class="grid-inner row align-items-center no-gutter"> <div class="col-auto"> <div class="entry-image"> <a href="//o-m.pl/artykul/trzy-rzeczy-ktore-licza-sie-teraz-w-google-adsach-twoich-adsach"> <img class="picture" style="background-color: transparent;" src="https://o-m.pl/media/cache/img_800_600/uploads/637/34f/63734fc79ede1202235701.webp?extension=jpg&version=666" loading="lazy"> </a> </div> </div> <div class="col pl-3"> <div class="entry-title"> <h4 class="font-weight-medium"><a href="//o-m.pl/artykul/trzy-rzeczy-ktore-licza-sie-teraz-w-google-adsach-twoich-adsach">Trzy rzeczy, które liczą się teraz w Google Adsach, Twoich Adsach</a></h4> </div> <div class="entry-meta"> <ul> <li class="autorcanvas_art"> <span> <i class="icon-pencil"></i></span> <a href="/autor/maciej-ilczyszyn">Maciej Ilczyszyn</a> </li> <li class="datacanvas_art"><i class="icon-time"></i>15 listopada 2022</li> </ul> </div> </div> </div> </div> <div class="entry col-md-12"> <!-- Post Article --> <div class="grid-inner row align-items-center no-gutter"> <div class="col-auto"> <div class="entry-image"> <a href="//o-m.pl/artykul/audyt-e-commerce-pod-katem-seo-7-punktow"> <img class="picture" style="background-color: transparent;" src="https://o-m.pl/media/cache/img_800_600/uploads/631/743/6317431dc80ba690210530.webp?extension=jpg&version=666" loading="lazy"> </a> </div> </div> <div class="col pl-3"> <div class="entry-title"> <h4 class="font-weight-medium"><a href="//o-m.pl/artykul/audyt-e-commerce-pod-katem-seo-7-punktow">Audyt e-commerce pod kątem SEO – 7 punktów</a></h4> </div> <div class="entry-meta"> <ul> <li class="autorcanvas_art"> <span> <i class="icon-pencil"></i></span> <a href="/autor/mateusz-sekara">Mateusz Sękara</a> </li> <li class="datacanvas_art"><i class="icon-time"></i>6 września 2022</li> </ul> </div> </div> </div> </div> </div> </div></div><div class="line"></div><div class="widget clearfix"><p style="text-align:center"><a href="https://hrangel.pl/hr-angel-dla-hr" target="_blank"><img alt="" height="600" src="https://forumlogopedy.pl/media/cache/resolve/thumb/uploads/65b/b61/65bb61e1cccc1643786691.png" width="300" /></a></p> </div><div class="line"></div> </div> </div> </div> </div> </div> </section> </div> <footer id="footer" class="dark" style="background-color: #1f2024;"> <div class="pt-5"> <div class="container-fluid footer"> <div class="container"> <div class="row"> <div class="col-md-4 description"> <p> <p bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}"><a bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" href="https://o-m.pl/prenumerata" target="_blank"><img alt="" bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" height="62" src="https://forumlogopedy.pl/media/cache/resolve/thumb/uploads/633/2a1/6332a1fd0efcc796532795.png" style="border:0; max-width:140px" width="150" /></a></p> <p bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}"> </p> <p bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}">Praktyczne informacje i aktualne wskazówki, dzięki którym podniesiesz swoje kwalifikacje i dowiesz się jak prowadzić sprawny marketing w sieci.</p> <p bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}"> </p> <p bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}">Bądź na bieżąco:</p> <div bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" class="header-social col-sm-12 justify-content-center justify-content-sm-start d-flex " style=" padding-left: 0;"><a bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" class="social-icon si-small si-rounded si-dark si-mini si-facebook mb-0" href="https://www.facebook.com/MagazynOnlineMarketing/" rel="”nofollow”" target="_blank"><i bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" class="icon-facebook pl6"> </i> <i bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" class="icon-facebook pl6"> </i> </a> <a bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" class="social-icon si-small si-rounded si-dark si-mini si-instagram mb-0" href="https://www.instagram.com/onlinemarketingmagazyn/" rel="”nofollow”" target="_blank"> <i bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" class="icon-instagram pl6"> </i> <i bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" class="icon-instagram pl6"> </i> </a> <a bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" class="social-icon si-small si-rounded si-dark si-mini si-linkedin mb-0" href="https://www.linkedin.com/company/magazyn-online-marketing/" rel="”nofollow”" target="_blank"> <i bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" class="icon-linkedin pl6"> </i> <i bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" class="icon-linkedin pl6"> </i> </a> <a bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" class="social-icon si-small si-rounded si-dark si-mini si-youtube mb-0" href="https://www.youtube.com/channel/UCL6HPsKe8DAR4lL6mBd8klQ/" onclick="window.dataLayer.push({'event': 'visitorInteraction','eventCategory': 'Social Media','eventAction': 'Social Profile','eventLabel': 'YT','eventValue': undefined,'eventNonInteraction': false});" rel="”nofollow”" target="_blank"> <i bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" class="icon-youtube1 pl6"> </i> <i bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" class="icon-youtube1 pl6"> </i> </a></div> <!--<p><a href="https://www.facebook.com/MagazynOnlineMarketing/" style="color: #f0f0f0;">Facebook</a></p> <p><a href="https://www.instagram.com/onlinemarketingmagazyn/" style="color: #f0f0f0;">Instagram</a></p> <p><a href="https://www.linkedin.com/company/magazyn-online-marketing" style="color: #f0f0f0;">LinkedIn</a></p>--> </p> </div> <div class="col-md-4"> <center bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}"><a bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" href="https://o-m.pl/prenumerata" target="_blank"><img alt="Online Marketing Magazyn" bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" src="https://o-m.pl/media/cache/resolve/origin/uploads/66d/567/66d5677629eea515864435.webp" style="border:0; max-width:250px" /></a></center> </div> <div class="col-md-4 social"> <h3></h3> <ul bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" style="padding-left: 15px;list-style: none;"> <li bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" style="column-count: 2;"><a bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" href="\prenumerata" style="color: #f0f0f0;">Prenumerata</a></li> <li bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}"><a bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" href="https://o-m.pl/polityka-prywatnosci" style="color: #f0f0f0;" target="_blank">Polityka prywatności</a></li> <li bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}"><a bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" href="https://o-m.pl/regulamin" style="color: #f0f0f0;" target="_blank">Regulamin</a></li> <li bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}"><a bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" href="/kontakt" style="color: #f0f0f0;">Kontakt</a></li> <li bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}"><a bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" href="https://e-forum.pl/media" style="color: #f0f0f0;">Biuro prasowe</a></li> <li bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}"><a bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" href="/faq" style="color: #f0f0f0;">Pomoc / FAQ</a></li> <li bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}"><a bis_size="{"x":0,"y":0,"w":0,"h":0,"abs_x":0,"abs_y":0}" href="https://www.reklama.forum-media.pl/produkt/online-marketing" style="color: #f0f0f0;">Reklama</a></li> </ul> </div> </div> </div> <div style="padding: 20px 0;" class="text-center"> © Copyright 2025 <span class="bolder">Forum Media Polska</span> </div> </div> </div> </footer> </div> <script src="/js/canvas-vendor.js?v=279" type="text/javascript"></script> <script src="/bundles/fosjsrouting/js/router.js?v=279" type="text/javascript"></script> <script> function routerSetData(data) { data.scheme = 'https'; fos.Router.setData(data); } </script> <script src="/js/fos_js_routes.js"></script> <script src="/Frontend/js/default/vendor/jquery.collapser.min.js?v=279"></script> <script src="/js/canvas-scripts.js?v=279" type="text/javascript"></script> <script src="https://cdn.jsdelivr.net/npm/shikwasa@2.2.1/dist/shikwasa.min.js"></script> <script> var alerts = []; </script> <script> const { Player } = window.Shikwasa; $(document).ready(function () { var playerSettings = $('#shikwasa-audio-player-settings'); new Player({ container: () => document.querySelector('.shikwasa-audio-player'), audio: { title: playerSettings.data('title'), artist: playerSettings.data('author'), src: playerSettings.data('source'), }, fixed: { type: 'static', }, }) }); </script> <script> (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.0"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); </script> <script src="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.9.0/js/lightbox.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"></script> <script src="https://www.gos.o-m.pl/bower/sweetalert2/dist/sweetalert2.js"></script> <script type="module" src="https://cdn.jsdelivr.net/npm/shikwasa@2.2.1/dist/shikwasa.min.js"></script> <script type="text/javascript" src="https://www.gos.o-m.pl/js/dist/cmsMessenger.js"></script> <script type="text/javascript" src="https://www.gos.o-m.pl/bower/iframe-resizer/js/iframeResizer.min.js"></script> <!-- Globalne close body--> <script src="https://www.gos.e-firma.pl/js/jquery.plainmodal.min.js"></script> <script src="https://www.gos.e-firma.pl/js/modalLoginRegister.js"></script> <script type="text/javascript"> var _smid = "u0zeekmgvwlr8wz3"; var _smapp = 2; var _smcustom = true; var _smbanners = true; var excludedDomains = [ 'www.animal-expert.pl', 'animal-expert.pl' ]; // Sprawdzanie czy aktualna domena nie jest na liście wyłączonych var currentDomain = window.location.hostname; if (excludedDomains.indexOf(currentDomain) === -1) { (function(w, r, a, sm, s) { w['SalesmanagoObject'] = r; w[r] = w[r] || function() { (w[r].q = w[r].q || []).push(arguments) }; sm = document.createElement('script'); sm.type = 'text/javascript'; sm.async = true; sm.src = a; s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(sm, s); })(window, 'sm', ('https:' == document.location.protocol ? 'https://' : 'http://') + 'app2.salesmanago.pl/static/sm.js'); } </script> <!--<script src="https://files.forum-media.pl/popupblocker/popupblocker.js"></script>--> <script> const expandableBox = document.querySelectorAll(".expandable-box"); if (expandableBox.length > 0) { document.querySelectorAll(".expandable-box [data-target]").forEach((btn) => btn.addEventListener("click", (e) => { let parent = e.currentTarget.closest(".expandable-box"), target = e.currentTarget.dataset.target; parent.classList.toggle("active"); }) ); } </script> <script> (function() { // NOWE: Sprawdzenie czy istnieje cookie forum=1 function checkForumCookie() { const cookies = document.cookie.split(';'); for (let i = 0; i < cookies.length; i++) { const cookie = cookies[i].trim(); if (cookie.indexOf('forum=1') === 0) { console.log('Znaleziono cookie forum=1, blokowanie wyświetlania popupów'); return true; } } return false; } // NOWE: Sprawdzenie czy w URL jest parametr f=adw function checkUrlParameter() { const urlParams = new URLSearchParams(window.location.search); if (urlParams.get('f') === 'adw') { console.log('Znaleziono parametr f=adw w URL, blokowanie wyświetlania popupów'); return true; } return false; } // NOWE: Sprawdzenie warunków blokujących i przerwanie działania skryptu jeśli są spełnione if (checkForumCookie() || checkUrlParameter()) { console.log('Warunki blokujące spełnione, przerywanie działania skryptu popupów'); return; // Przerwanie wykonania skryptu } // Funkcja sprawdzająca czy popup może zostać wyświetlony function canShowPopup(popupId, config) { // Inicjalizacja localStorage jeśli nie istnieje lub jest nieprawidłowy try { const storedStats = localStorage.getItem('jsPopupStats'); let popupStats = storedStats ? JSON.parse(storedStats) : {}; // Upewniamy się, że mamy poprawny obiekt if (!popupStats || typeof popupStats !== 'object') { console.log('Resetowanie jsPopupStats - nieprawidłowy format'); popupStats = {}; } // Inicjalizacja statystyk dla nowego popupu if (!popupStats[popupId]) { console.log('Inicjalizacja statystyk dla:', popupId); popupStats[popupId] = { totalShows: 0 }; localStorage.setItem('jsPopupStats', JSON.stringify(popupStats)); } // Inicjalizacja sessionStorage jeśli nie istnieje lub jest nieprawidłowy const storedSession = sessionStorage.getItem('jsPopupSession'); let popupSession = storedSession ? JSON.parse(storedSession) : {}; // Upewniamy się, że mamy poprawny obiekt if (!popupSession || typeof popupSession !== 'object') { console.log('Resetowanie jsPopupSession - nieprawidłowy format'); popupSession = {}; sessionStorage.setItem('jsPopupSession', JSON.stringify(popupSession)); } // Jeśli popup był już wyświetlony 3 lub więcej razy globalnie, // zapisujemy tę informację także w sessionStorage, aby unikać ponownego sprawdzania if (popupStats[popupId].totalShows >= 3 && !popupSession[popupId]) { popupSession[popupId] = true; sessionStorage.setItem('jsPopupSession', JSON.stringify(popupSession)); console.log('Zapisano blokadę w sesji dla popupu, który przekroczył limit:', popupId); } console.log('Status popupu:', popupId, { sessionShow: popupSession[popupId] ? 'TAK' : 'NIE', totalShows: popupStats[popupId].totalShows }); // Nie pokazuj jeśli już wyświetlono w tej sesji if (popupSession[popupId]) { console.log('Popup już wyświetlony w tej sesji lub przekroczył limit globalny:', popupId); return false; } // Nie pokazuj jeśli przekroczono limit 3 wyświetleń if (popupStats[popupId].totalShows >= 3) { console.log('Przekroczono limit wyświetleń dla:', popupId); return false; } // Sprawdzenie ograniczeń czasowych (jeśli określono) const currentDate = new Date(); // Sprawdź czy nie jest za wcześnie if (config.startDate) { const startDate = new Date(config.startDate); if (currentDate < startDate) { console.log('Za wcześnie na wyświetlenie popupu:', popupId); return false; } } // Sprawdź czy nie jest za późno if (config.endDate) { const endDate = new Date(config.endDate); if (currentDate > endDate) { console.log('Za późno na wyświetlenie popupu:', popupId); return false; } } // Sprawdzenie, czy URL pasuje do wzorców (jeśli określono) if (config.urlPatterns && Array.isArray(config.urlPatterns) && config.urlPatterns.length > 0) { const currentUrl = window.location.href.toLowerCase(); const patternMatch = config.urlPatterns.some(pattern => currentUrl.includes(pattern.toLowerCase()) ); // Jeśli żaden wzorzec nie pasuje do URL, nie pokazuj popupu if (!patternMatch) { console.log('URL nie pasuje do wzorców dla:', popupId); return false; } } console.log('Popup zatwierdzony do wyświetlenia:', popupId); return true; } catch (error) { console.error('Błąd w funkcji canShowPopup:', error); return false; } } // Funkcja rejestrująca wyświetlenie popupu function registerPopupShow(popupId) { try { // Pobierz aktualne dane lub zainicjuj nowe const storedStats = localStorage.getItem('jsPopupStats'); let popupStats = storedStats ? JSON.parse(storedStats) : {}; const storedSession = sessionStorage.getItem('jsPopupSession'); let popupSession = storedSession ? JSON.parse(storedSession) : {}; // Upewnij się, że struktura obiektu istnieje dla tego popupu if (!popupStats[popupId]) { popupStats[popupId] = { totalShows: 0 }; } // Aktualizacja sesji popupSession[popupId] = true; sessionStorage.setItem('jsPopupSession', JSON.stringify(popupSession)); // Aktualizacja ogólnych statystyk popupStats[popupId].totalShows += 1; localStorage.setItem('jsPopupStats', JSON.stringify(popupStats)); console.log('Zarejestrowano wyświetlenie popupu:', popupId, 'Łączna liczba wyświetleń:', popupStats[popupId].totalShows); // Wyświetl aktualny stan local i session storage console.log('Aktualny stan localStorage:', JSON.parse(localStorage.getItem('jsPopupStats'))); console.log('Aktualny stan sessionStorage:', JSON.parse(sessionStorage.getItem('jsPopupSession'))); } catch (error) { console.error('Błąd w funkcji registerPopupShow:', error); } } // Funkcja do zamykania popupu (zdefiniowana globalnie) window.closeJsPopup = function(popupId) { try { const popup = document.getElementById(popupId); if (popup && popup.parentNode) { popup.parentNode.removeChild(popup); console.log('Zamknięto popup:', popupId); } else { console.warn('Nie znaleziono popupu do zamknięcia:', popupId); } } catch (error) { console.error('Błąd podczas zamykania popupu:', error); } }; // Funkcja sprawdzająca czy grafika istnieje function checkImage(imageSrc, callback) { try { const img = new Image(); img.onload = function() { callback(true, this.width, this.height); }; img.onerror = function() { console.warn('Nie udało się załadować obrazu:', imageSrc); callback(false); }; img.src = imageSrc; } catch (error) { console.error('Błąd podczas sprawdzania obrazu:', error); callback(false); } } // Funkcja tworząca i wyświetlająca popup function createPopup(config, index) { try { const popupId = 'jsPopup' + index; console.log('Próba utworzenia popupu:', popupId); // Sprawdź czy można pokazać popup if (!canShowPopup(popupId, config)) { console.log('Popup nie może zostać wyświetlony:', popupId); return; } // Sprawdź czy grafika istnieje checkImage(config.imageUrl, function(success, width, height) { if (!success) { console.warn('Grafika nie istnieje dla popupu:', popupId); return; } // Sprawdź wymiary ekranu dla responsywności const viewportWidth = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0); const viewportHeight = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0); // Ustal maksymalne wymiary dla popupu const maxWidth = Math.min(width, viewportWidth * 0.9); // 90% szerokości viewportu const maxHeight = Math.min(height, viewportHeight * 0.9 - 30); // 90% wysokości viewportu minus przycisk zamknięcia // Oblicz rzeczywiste wymiary z zachowaniem proporcji let finalWidth = width; let finalHeight = height; if (width > maxWidth) { // Skaluj obraz zachowując proporcje const ratio = maxWidth / width; finalWidth = maxWidth; finalHeight = height * ratio; } if (finalHeight > maxHeight) { // Jeśli po skalowaniu szerokości obraz jest nadal za wysoki const ratio = maxHeight / finalHeight; finalHeight = maxHeight; finalWidth = finalWidth * ratio; } // Tworzymy popup z dostosowanymi wymiarami const popup = document.createElement('div'); popup.id = popupId; // Ustawiamy podstawowe style jako atrybuty inline popup.style.position = 'fixed'; popup.style.display = 'block'; popup.style.zIndex = '99999'; popup.style.top = '50%'; popup.style.left = '50%'; popup.style.width = `${finalWidth}px`; popup.style.height = `${finalHeight + 30}px`; // Dodajemy miejsce na przycisk zamknięcia popup.style.marginTop = `-${(finalHeight + 30) / 2}px`; popup.style.marginLeft = `-${finalWidth / 2}px`; popup.style.backgroundColor = '#ffffff'; popup.style.borderRadius = '8px'; popup.style.boxShadow = '0 5px 20px rgba(0, 0, 0, 0.3)'; popup.style.overflow = 'hidden'; // Ustawiamy zawartość popupu popup.innerHTML = ` <div onclick="window.closeJsPopup('${popupId}')" style="position: absolute; top: 5px; right: 5px; width: 25px; height: 25px; background-color: rgba(0, 0, 0, 0.6); color: #fff; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 18px; cursor: pointer; z-index: 99999; text-align: center; line-height: 25px;">×</div> <a href="${config.linkUrl}" style="display: block;"> <img src="${config.imageUrl}" alt="" style="display: block; width: 100%; height: auto; max-width: 100%;"> </a> `; // Dodanie popupu do dokumentu document.body.appendChild(popup); console.log('Popup został utworzony i wyświetlony:', popupId); // Rejestracja wyświetlenia registerPopupShow(popupId); }); } catch (error) { console.error('Błąd podczas tworzenia popupu:', error); } } // Inicjalizacja popupów function initPopups() { try { console.log('Inicjalizacja popupów'); if (!window.popupConfig || !Array.isArray(window.popupConfig) || window.popupConfig.length === 0) { console.warn('Brak konfiguracji popupów lub nieprawidłowy format'); return; } console.log('Znaleziono konfiguracji popupów:', window.popupConfig.length); // Sprawdź, czy mamy już wyświetlane popupy w tej sesji const storedSession = sessionStorage.getItem('jsPopupSession'); const popupSession = storedSession ? JSON.parse(storedSession) : {}; // Sprawdź, czy mamy popupy, które przekroczyły limit globalny const storedStats = localStorage.getItem('jsPopupStats'); const popupStats = storedStats ? JSON.parse(storedStats) : {}; // Synchronizuj dane sesji z globalnym licznikiem if (typeof popupStats === 'object' && typeof popupSession === 'object') { let sessionUpdated = false; // Dla każdego popupu, który przekroczył limit globalny, oznacz go w sesji Object.keys(popupStats).forEach(popupId => { if (popupStats[popupId] && popupStats[popupId].totalShows >= 3 && !popupSession[popupId]) { popupSession[popupId] = true; sessionUpdated = true; console.log('Synchronizacja: zapisano blokadę w sesji dla popupu z przekroczonym limitem:', popupId); } }); if (sessionUpdated) { sessionStorage.setItem('jsPopupSession', JSON.stringify(popupSession)); } } // Wyświetlanie popupów window.popupConfig.forEach((config, index) => { if (!config) { console.warn('Nieprawidłowa konfiguracja popupu na indeksie:', index); return; } createPopup(config, index); }); } catch (error) { console.error('Błąd podczas inicjalizacji popupów:', error); } } // Uruchomienie po załadowaniu strony try { if (document.readyState === 'complete') { console.log('Dokument już załadowany, inicjalizacja popupów'); initPopups(); } else { console.log('Oczekiwanie na załadowanie dokumentu'); window.addEventListener('load', function() { console.log('Dokument załadowany, inicjalizacja popupów'); initPopups(); }); } } catch (error) { console.error('Błąd podczas ustawiania event listenera:', error); } })(); </script> <script> function attachKlaroListeners() { const declineBtn = document.querySelector('.cn-decline'); if (declineBtn) { declineBtn.addEventListener('click', function () { cmsEvent({ 'category': 'klaro', 'action': 'click', 'label': 'odmowa' }); }); } const acceptBtn = document.querySelector('.cm-btn-success'); if (acceptBtn) { acceptBtn.addEventListener('click', function () { cmsEvent({ 'category': 'klaro', 'action': 'click', 'label': 'akcept' }); }); } const acceptAllBtn = document.querySelector('.cm-btn-accept-all'); if (acceptBtn) { acceptBtn.addEventListener('click', function () { cmsEvent({ 'category': 'klaro', 'action': 'click', 'label': 'akcept_all' }); }); } const learnMoreBtn = document.querySelector('.cm-btn-lern-more'); if (learnMoreBtn) { learnMoreBtn.addEventListener('click', function () { cmsEvent({ 'category': 'klaro', 'action': 'click', 'label': 'dostosuj' }); }); } const infoBtn = document.querySelector('.cm-btn-info'); if (infoBtn) { infoBtn.addEventListener('click', function () { cmsEvent({ 'category': 'klaro', 'action': 'click', 'label': 'wybrane' }); }); } } document.addEventListener('DOMContentLoaded', function () { setTimeout(attachKlaroListeners, 1000); // Odczekaj 1s aż Klaro zrenderuje przyciski }); </script> <script type="text/javascript"> (function(a,l,b,c,r,s){ _nQc=c,r=a.createElement(l),s=a.getElementsByTagName(l)[0]; r.async=1; r.src=l.src=("https:"==a.location.protocol?"https://":"http://")+b; s.parentNode.insertBefore(r,s);}) (document,"script","serve.albacross.com/track.js","89907117"); </script> <style> /*global style*/ .color-from-portal, .page-item .page-link { color: #00a69d !important; } .background-from-portal, .menu-color-home > a::before, .releases_new .button-home, .releases_new .button-home:hover { background: #00a69d !important; } /*menu style*/ .menu-color-home:hover > .menu-link, .menu-link:hover, .menu-item:hover, body:not(.dark) #header:not(.dark) #header-wrap:not(.dark) .menu-container > .menu-item.menu-color-home.current > .menu-link, body:not(.dark) #header:not(.dark) #header-wrap:not(.dark) .menu-container > .menu-item.menu-color-home:hover > .menu-link, body:not(.dark) #header:not(.dark) #header-wrap:not(.dark) .menu-container > .menu-item.menu-color-home.current > .menu-link:hover { color: #00a69d !important; } /*page style*/ .page-item.active .page-link, .page-item .page-link:hover { background-color: #00a69d !important; border-color: #00a69d !important; color: #fff !important; } /*release style*/ .release-listing__img-outer img { border: none; } .releases_new .button-home-border { border-color: #00a69d !important; color: #00a69d !important; } .releases_new .button-home-border:hover { background: #00a69d !important; color: #fff !important; } </style> <div class="promo-mobile-bar"> </div> <div id="sidebar-info" data-sidebar-info="47" data-trans-login="Logowanie" data-trans-register="Rejestracja" data-trans-change-password="Zmiana hasła" data-trans-user-form-error="Formularz nie został poprawnie wypełniony. Spróbuj jeszcze raz ponownie." data-trans-email-was-sent="Mail został wysłany ponownie." data-trans-email-was-not-sent="Wystąpił błąd. Mail nie został wysłany." data-trans-resetting-request-emailsent="Na Twój adres email wysłaliśmy instrukcję resetowania hasła. Postępuj zgodnie ze wskazówkami zawartymi w wiadomości." data-trans-error-occurred="Wystąpił błąd. Spróbuj ponownie później." data-trans-error-invalid-email="Nieprawidłowy adres e-mail." data-trans-error-order-not-found="Nie znaleziono zamówienia." data-trans-ask-for-npwz="Numer PWZ" data-trans-success-npwz="Pomyślnie zapisano, dziękujemy." data-trans-invalid-npwz="Numer PWZ jest niepoprawny." ></div> <div class="best-sidebar" id="best-sidebar"> <div class="sidebar-header"> <div class="sidebar-header__title"> <img src="/images/icon-user-login.svg?v=279" class="sidebar-header__title-icon login-icon active"> <img src="/images/icon-user-register.svg?v=279" class="sidebar-header__title-icon register-icon"> <span class="text" id="best-sidebar-header-text"></span> </div> <a href="#" class="sidebar-header__close" id="sidebar-header__close"> <span class="sidebar-header__close-text">Zamknij</span> <span class="sidebar-header__close-icon"></span> </a> </div> <div class="sidebar-body"> <div class="best-sidebar-content" id="best-sidebar-content"></div> </div> </div> <div class="best-overlay" id="best-overlay"></div> </body> </html>