drupal 8 https://www.drupal.cz/stitky/drupal-8 cs Hypio.cz https://www.drupal.cz/node/371726 <span class="field field--name-title field--type-string field--label-hidden">Hypio.cz</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="Zobrazit profil uživatele." href="/user/hsponner" class="username">hsponner</a></span> <span class="field field--name-created field--type-created field--label-hidden">Po, 03/18/2019 - 17:34</span> <div class="field field--name-field-drupal-version field--type-entity-reference field--label-inline"> <div class="field__label">Drupal version</div> <div class="field__items"> <div class="field__item">Drupal 8</div> </div> </div> <div class="field field--name-field-url field--type-link field--label-hidden field__item"><a href="https://www.hypio.cz/">Hypio.cz</a></div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/stitky/drupal-8" hreflang="cs">drupal 8</a></div> <div class="field__item"><a href="/stitky/drupalcs-awards-2019" hreflang="cs">DrupalCS Awards 2019</a></div> </div> </div> <div class="field field--name-field-main-screenshot field--type-entity-reference field--label-above"> <div class="field__label">Main screenshot</div> <div class="field__item"><a href="/media/476" hreflang="cs">Hypio.cz</a></div> </div> Mon, 18 Mar 2019 16:34:45 +0000 hsponner 371726 at https://www.drupal.cz Jednoduché sdílení na sociální sítě pro Drupal 8 https://www.drupal.cz/navody/jednoduche-sdileni-na-socialni-site-pro-drupal-8 <span class="field field--name-title field--type-string field--label-hidden">Jednoduché sdílení na sociální sítě pro Drupal 8</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="Zobrazit profil uživatele." href="/user/petr" class="username">petr</a></span> <span class="field field--name-created field--type-created field--label-hidden">Pá, 09/28/2018 - 01:52</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p class="lead">Existuje množství online nástrojů i hotových modulů s jejich integrací pro pohodlné sdílení stránek. Často jsou závislé na JavaScriptu, nejen proto je bezpečnost uživatelů diskutabilní. V tomto článku se dozvíte jak si vytvořit vlastní, jednoduchou ale flexibilní integraci bez JavaScriptu.</p> <h2>Bezpečnost především</h2> <article class="embedded-entity align-right"><article class="media media--type-image media--view-mode-embed"><div class="field field--name-field-media-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/styles/original/public/images/2018-09/social-shares-initial_0.png?itok=Hwk8cbm3" width="600" height="400" alt="Drupal a sociální sítě" class="image-style-original" /></div> </article></article><p>V dnešní době se na bezpečnost uživatelů v online světě kladou stále větší nároky. Nástroje na sdílení jako např AddToAny, poskytují nepřeberné množství sociálních sítí, ale samozřejmě za to něco chtějí. Při kliknutí na jejich widget jste nejpre spojeni se serverem dané služby, který váš požadavek zpracuje a následně ho teprve pošle na cílový server. Mají tedy přístup jak k tomu co jste "lajknuli", hlavně jsou ale schopní vás sledovat přes různé weby. Díky tomu vytvoří váš uživatelský profil, a to je v dnešní době velice hodnotná informace. Další možností narušení bezpečnosti spočívá v tom, že tyto scripty jsou šířeny z CDN serverů a vy nemáte možnost ovlivnit jestli se ve scriptu neobjeví nějaká nová funkce, nebo nedejbože, že daný script někdo hackne a na počítače uživatelů se dostane něco zcela jiného. Něco takového na svém webu nechci a klienti většinou také ne. :)</p> <p>Naštěstí můžeme využít přímo i jednoduchý způsob sdílení bez prostředníka.</p> <h2>Začneme jednoduše</h2> <p>Nejdříve si vytvoříme Vlastní typ bloku (Custom block type), ale můžete klidně použít i oblíbený modul paragraphs.</p> <p><strong>Jméno vlastního typu bloku</strong>: Sociální sítě<br /><strong>Strojové jméno</strong>: [social_share]</p> <p>Nyní přihoďtě pár polí typu boolean. Jedno pro každou službu.</p> <p><strong>Popiska pole</strong>: [Název pro lidi] např. “Twitter”<br /><strong>Strojové jméno</strong>: [strojove_jmeno] např. “social_share_twitter” – toto jméno budeme později potřebovat.</p> <p>Přejděte na Zprávu zobrazení bloku (/admin/structure/block/block-content/manage/social_share/display) a změňte výstup polí na Vlastní. Vyplňte hodnotu pro TRUE textem, který budete chtít vidět na odkazu např. "<strong>Sdílet na Twitteru</strong>".</p> <p>Tím máme připravený způsob pro zádávání dat a můžeme vytvořit první blok Sociální sítě a zaškrtnout požadované služby. Na webu uživatelé nyní uvidí pouze Popisky polí.</p> <article class="embedded-entity"><article class="media media--type-image media--view-mode-embed"><div class="field field--name-field-media-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/styles/original/public/images/2018-09/social-share-labels.png?itok=XSq4QutB" width="152" height="103" alt="Sdílení na sociálních sítích" class="image-style-original" /></div> </article></article><h2>Theming</h2> <p>Zábavnější část je změna výstupu pole z obyčejné popisky na opravdý link na sdílení. Na začátku je dobré vědět, jak má výsledný link vypadat a jaké informace se prodstřednictím odkazu přenáší. Každá služba má trochu jiné požadavky.</p> <p>Příklady odkazů:</p> <pre> <strong>Facebook:</strong> http://www.facebook.com/share.php?u=[PAGE_URL]&amp;title=[PAGE_TITLE] <strong>Twitter:</strong> http://twitter.com/intent/tweet?status=[PAGE_TITLE]+[PAGE_URL] <strong>LinkedIn:</strong> http://www.linkedin.com/shareArticle?mini=true&amp;url=[PAGE_URL]&amp;title=[PAGE_TITLE]&amp;source=[BASE_PATH] <strong>E-mail:</strong> mailto:?subject=Interesting page [PAGE_TITLE]&amp;body=Check out this site I came across [PAGE_URL]</pre> <p>Z toho vidíme, že pro zprovoznění odkazu pro Twitter budeme potřebovat jméno stránky [PAGE_TITLE] a její URL adresu [PAGE_URL]. Například LinkedIn navíc požaduje i základní cestu [BASE_PATH]. V základním nastavení se v TWIG templatě dostaneme pouze k URL adrese. Další proměné si musíme připravit v preprocesu.</p> <p>Proto si do souboru <em>theme_name.theme</em> přidáme</p> <pre> /** * Implements template_preprocess_field(). */ function theme_name_preprocess_field(&amp;$variables, $hook) { switch ($variables['field_name']) { case 'field_social_share_twitter': $request = \Drupal::request(); $route_match = \Drupal::routeMatch(); $title = \Drupal::service('title_resolver') -&gt;getTitle($request, $route_match-&gt;getRouteObject()); if (is_array($title)) { $variables['node_title'] = $title['#markup']; } else { $variables['node_title'] = (string) $title; } $variables['base_path'] = base_path(); break; } }</pre> <p>Je pravděpodobné, že budete chtít přidat více služeb najednou, proto bude vhodnejší použít DRY (Don't repeat yourself) přístup, abychom kód zbytečně neopakovali. Vytvoříme si tedy pomocnou funkci pro generování proměných.</p> <pre> /** * Preprocess field_social_share. */ function _theme_name_preprocess_field__social_shares(&amp;$variables) { $request = \Drupal::request(); $route_match = \Drupal::routeMatch(); $title = \Drupal::service('title_resolver') -&gt;getTitle($request, $route_match-&gt;getRouteObject()); if (is_array($title)) { $variables['node_title'] = $title['#markup']; } else { $variables['node_title'] = (string) $title; } $variables['base_path'] = base_path(); }</pre> <p>Tuto funkci si následně můžeme zavolat pro různé příležitosti.</p> <pre> /** * Implements template_preprocess_field(). */ function theme_name_preprocess_field(&amp;$variables, $hook) { switch ($variables['field_name']) { case 'field_social_share_twitter': case 'field_social_share_facebook': case 'field_social_share_linkedin': case 'field_social_share_email': _theme_name_preprocess_field__social_shares($variables); break; } }</pre> <p>Nyní máme připravený titulek stránky a základní cestu pro použití v šablonách.<br /><br /> Zapněte si Twig debug a v prohlížeči se podívejte na zdrojový kód checkboxů. Nad polem uvidíte seznam návrhů jmen pro šablony, to které heldáme je <em>field--field-social-share-twitter.html.twig</em>.</p> <p>Protože výstup má být jendoduchý odkaz můžeme předpokládat, že můžeme odebrat podmínky pro zobrazení popisek polí a kontroly vícenásobného pole. Na druhou stranu je důležité zajistit aby se pole nezobrazilo, pokud není checkbox zaškrtnutý. To není v TWIGU úplně jednoduché, protože mu chybí informace o stavu zatržítka. Máeme přístup pouze k aktuální hodnotě. Protože ale používáme vlastní snadno změnitelnou hodnotu nemůžeme tento přístup použít. Naštěstí můžeme použít malý trik. Vzpomínáte jak jsme nenastavili žádnou hodnotu pro FALSE? Díky tomu můžeme testovat jestli pole vrací nějaký #markup. Prázdná hodnota FALSE nevytvoří žádný markup a podmínka se tím pádem nevykoná.</p> <pre> {% if item.content['#markup'] %}</pre> <p>Zde je kompletní kód šablony pro pole.</p> <pre> {% set classes = [ 'social-share__service', 'social-share__service--twitter', ] %} {% for item in items %} {% if item.content['#markup'] %} &lt;a {{ attributes.addClass(classes) }} href="http://twitter.com/intent/tweet?status={{ node_title }}+{{ url('&lt;current&gt;') }}" title="Share to {{ item.content }}"&gt;{{ item.content }}&lt;/a&gt; {% endif %} {% endfor %}</pre> <p><br /> Pro další služby bude potřeba šablonu samozřejmě upravit, postup bude ale stále stejný.</p> <p>A máme hotovo. Nyní by měl blok vracet správné odkazy pro sdílení na sociální sítě.</p> <article class="embedded-entity"><article class="media media--type-image media--view-mode-embed"><div class="field field--name-field-media-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/styles/original/public/images/2018-09/social-share-links.png?itok=_O2mRnwS" width="252" height="31" alt="Odkazy v Drupalu pro sdílení na sociálních sítích" class="image-style-original" /></div> </article></article><h2>Pro tip:</h2> <p>Zatím jsme nepoužily ani jeden rozšiřující modul. Samozřejmě váš zákazník se nespokojí s obyčejným vzhledem odkazu a bude chtít něco hezčího.</p> <p>Můžete si vzhled přidat přímo to tématu, ale to nebude příliš flexibilní. Naštěstí existují moduly jako <a href="https://www.drupal.org/project/entity_class_formatter">Entity Class Formater</a> pomocí kterého můžete snadno přidat potřebnou třídu například ze select listu. Pro přehlednost můžete vytovřit několik seznamů s třídami – Velikost, Barva, Zaoblení rohů a podobně. Tím dáte editorovi potřebnou variabilitu.</p> <h2>Závěrem</h2> <p>Nyní jsme v bodě, kdy máme náš blok hotový. V každé jeho instanci můžeme zvolit, které ze služeb se na něm zobrazí a jak budou vypadat. Např. na blogu můžete mít sdílení na Twitter, Facebook  a E-mail nastylované jako malé kruhové ikonky. Pro stránku s nabídkou pracovních pozicí bude ale vhodnější zobrazit velkou čtvercovou ikonu s popiskem LinkedIn. </p> <article class="embedded-entity"><article class="media media--type-image media--view-mode-embed"><div class="field field--name-field-media-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/styles/original/public/images/2018-09/social-share-icons.png?itok=jPJnhgGU" width="607" height="521" alt="Sdílení na sociálních sítích v Drupalu" class="image-style-original" /></div> </article></article><h2>Poznámka na konec</h2> <p>Den po dopsání draftu tohoto článku byl vydán modul <a href="https://www.drupal.org/project/better_social_sharing_buttons" title="Better Social Sharing Buttons – Drupal Module">Better Social Sharing Buttons</a> který funguje na podobném principu. Je snažší ho nastavit protože má předdefinované styly i služby, to ale může být zároveň nevýhodou. Pokud budete chtít styl změnit, nebo přidat jiné služby může to být složitější.</p> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/stitky/drupal-8" hreflang="cs">drupal 8</a></div> <div class="field__item"><a href="/stitky/socialni-site" hreflang="cs">sociální sítě</a></div> <div class="field__item"><a href="/stitky/no-js" hreflang="cs">no-js</a></div> <div class="field__item"><a href="/stitky/front-end" hreflang="cs">front-end</a></div> </div> </div> <div class="field field--name-field-teaser-image field--type-entity-reference field--label-above"> <div class="field__label">Teaser image</div> <div class="field__item"><a href="/media/436" hreflang="cs">Sdílení na sociální sítě – úvodník</a></div> </div> Thu, 27 Sep 2018 23:52:31 +0000 petr 886 at https://www.drupal.cz COLOSEUM RESTAURANTS s.r.o. https://www.drupal.cz/node/881 <span class="field field--name-title field--type-string field--label-hidden">COLOSEUM RESTAURANTS s.r.o.</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="Zobrazit profil uživatele." href="/user/hsponner" class="username">hsponner</a></span> <span class="field field--name-created field--type-created field--label-hidden">St, 08/29/2018 - 13:23</span> <div class="field field--name-field-drupal-version field--type-entity-reference field--label-inline"> <div class="field__label">Drupal version</div> <div class="field__items"> <div class="field__item">Drupal 8</div> </div> </div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Webový portál sítě restaurací Coloseum. Web pohání Drupal 8.</p> <p>Vytvořili ve <a href="https://www.freely.agency">Freely Agency</a></p> </div> <div class="field field--name-field-url field--type-link field--label-hidden field__item"><a href="https://www.coloseum.cz/cs">Coloseum.cz</a></div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/stitky/drupal-8" hreflang="cs">drupal 8</a></div> <div class="field__item"><a href="/stitky/restaurace" hreflang="cs">restaurace</a></div> </div> </div> <div class="field field--name-field-main-screenshot field--type-entity-reference field--label-above"> <div class="field__label">Main screenshot</div> <div class="field__item"><a href="/media/411" hreflang="cs">Coloseum - main</a></div> </div> Wed, 29 Aug 2018 11:23:23 +0000 hsponner 881 at https://www.drupal.cz Centropol https://www.drupal.cz/node/456 <span class="field field--name-title field--type-string field--label-hidden">Centropol</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="Zobrazit profil uživatele." href="/user/hsponner" class="username">hsponner</a></span> <span class="field field--name-created field--type-created field--label-hidden">Ne, 04/01/2018 - 20:19</span> <div class="field field--name-field-drupal-version field--type-entity-reference field--label-inline"> <div class="field__label">Drupal version</div> <div class="field__items"> <div class="field__item">Drupal 8</div> </div> </div> <div class="field field--name-field-url field--type-link field--label-hidden field__item"><a href="https://www.centropol.cz/">Centropol</a></div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/stitky/drupal-8" hreflang="cs">drupal 8</a></div> </div> </div> <div class="field field--name-field-main-screenshot field--type-entity-reference field--label-above"> <div class="field__label">Main screenshot</div> <div class="field__item"><a href="/media/291" hreflang="cs">Centropol</a></div> </div> Sun, 01 Apr 2018 18:19:35 +0000 hsponner 456 at https://www.drupal.cz Drupal 8.5. je nyní k dispozici https://www.drupal.cz/clanky/drupal-8-5-je-nyni-k-dispozici <span class="field field--name-title field--type-string field--label-hidden">Drupal 8.5. je nyní k dispozici</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p class="lead">Nová verze zpřístupňuje modul media pro všechny uživatele, významně zlepšuje migraci, stabilizuje moduly Content Moderation a Settings Tray, urychluje zobrazení dynamických stránek pomocí BigPipe a přináší nové (experimentální) uživatelské rozhraní pro nastavení zobrazení entit. Zahrnuje několik velmi důležitých oprav pro workflow překladů obsahu a podporuje běh na PHP 7. 2.</p> <h2><span class="tlid-translation translation">Média v jádře se zlepšují a jsou k dispozici pro všechny </span></h2> <p><span class="tlid-translation translation">V Drupal 8.4 jsme přidali Media API do jádra, které vychází z modulu Media Entity. Modul byl skryt z uživatelského rozhraní kvůli problémům s UX. V Drupal 8.5 byla vyřešena řada problémů s použitelností a modul je nyní možné normálně povolit. Média v aplikaci Drupal 8.5 podporují nahrávání a přehrávání zvukových a video souborů, stejně jako výpis a opětovné použití médií. </span></p> <p><span class="tlid-translation translation">Pro optimální uživatelskou zkušenost doporučujeme rozšířit základní sadu některým z bohatého ekosystému modulů, které rozšiřují hlavní modul Media. V budoucích verzích vylepšíme základní práci s multimediální knihovnou a dalšími nástroji, přidáme integraci do WYSIWYGu, přidáme podporu pro externí typy médií, jako jsou videa YouTube, a poskytneme cestu k upgradu dat ze základních polí Soubor a Obrázek na existujících stránkách. </span></p> <h2><span class="tlid-translation translation">Settings Tray a moderování obsahu je nyní stabilní </span></h2> <p><span class="tlid-translation translation">Dva experimentální moduly původně přidané v Drupalu 8.2.0 se v minulých verzích neustále vylepšovali a jsou nyní stabilní. Modul Settings Tray poskytuje rychlé řešení pro správu nastavení v daném kontextu, například přesunutí položek v menu. Modul Moderování obsahu umožňuje definovat stavy workflow obsahu, jako jsou Koncept, Archivováno a Publikováno, stejně jako role, které mají schopnost přesouvat obsah mezi stávy. Drupal 8.5.0 také přidává podporu pro překlady, které jsou moderovány nezávisle. </span></p> <h2><span class="tlid-translation translation">Nový experimentální modul Layout Builder </span></h2> <p><span class="tlid-translation translation">Nový experimentální modul Layout Builder poskytuje funkce pro rozložení zobrazení článků, stránek, uživatelských profilů a dalších zobrazení entity. Layout Builder používá stejné uživatelské rozhraní "outside-in" jako v modulu Settings tray, což umožňuje stavitelům webu upravit jejich rozvržení na aktuální stránce (spíše než muset přejít na samostatný formulář v backendu). Aktuální uživatelské rozhraní je základní implementací, ale očekáváme, že se v příštích měsících výrazně zlepší. </span></p> <p><span class="tlid-translation translation">Ukázka umísťování bloků pomocí nástroje Layout Builder </span></p> <p><img alt="" src="https://www.drupal.org/files/umami-8.5-layout-builder.gif" /></p> <h2><span class="tlid-translation translation">Migraci je stabilní</span></h2> <p><span class="tlid-translation translation">Po více než čtyřech letech práce je architektura systému Migrate je stabilní. Moduly Drupal Migrate a Drupal Migrate UI jsou považovány za stabilní pro modernizaci jednojazyčných stránek. (Migrace vícejazyčných stránek ještě není plně podporována.) Podpora přírůstkových migrací je také součástí této verze. Další podrobnosti o migraci do aplikace Drupal 8 naleznete v oznámení o migraci. </span></p> <h2><span class="tlid-translation translation">BigPipe je ve výchozím stavu zapnutý</span></h2> <p><span class="tlid-translation translation">Modul BigPipe poskytuje pokročilou implementaci renderování stránky pomocí BigPipe techniky vytvořené Facebookem. Tím dochází ke značnému zlepšení vnímaného výkonu pro stránky s dynamickým, personalizovaným nebo nekešovatelným obsahem. Modul byl experimentálně přidán v aplikaci Drupal 8.1.0 a stal se stabilní v aplikaci Drupal 8.3.0. Po testování v reálu je BigPipe nyní součástí standardního instalačního profilu Drupalu 8.5.0, takže všechny nové instalace Drupal 8 budou ve výchozím nastavení rychlejší. BigPipe je také první novou funkcí Drupalu 8, který to dotáhl z experimentálního prototypu, až na součást standardní instalace! </span></p> <h2><span class="tlid-translation translation">Základ pro nový demo instalační profil "Out of the box" </span></h2> <p><span class="tlid-translation translation">Drupal 8.5.0 obsahuje základ pro nový demo instalační profil a téma vzhledu od iniciativy Out of the Box, které bude demonstrací moderních schopností Drupalu a jeho krásy. To nám umožní poskytnout demo jako experimentální profil a téma, v budoucí verzi Drupal 8.5. (Demo profil a téma vzhledu by neměly být použity na skutečných produkčních nebo vývojových webech, protože není zaručena zpětná kompatibility nebo upgrady.) Pokud byste chtěli vidět toto demo v akci, podívejte se na vývojovou verzi 8.6.x. </span></p> <h2><span class="tlid-translation translation">PHP 7. 2. je nyní podporováno </span></h2> <p><span class="tlid-translation translation">Drupal 8.5.0 nyní běží i na PHP 7. 2., který přichází s novými funkcemi a dále zlepšuje výkon proti PHP 7. 1. PHP 7. 2. je nyní doporučenou verzí PHP pro Drupal 8.</span></p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="Zobrazit profil uživatele." href="/user/petr" class="username">petr</a></span> <span class="field field--name-created field--type-created field--label-hidden">Čt, 03/08/2018 - 07:37</span> <div class="field field--name-field-tags field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><a href="/stitky/drupal-8" hreflang="cs">drupal 8</a></div> <div class="field__item"><a href="/stitky/novinka" hreflang="cs">novinka</a></div> <div class="field__item"><a href="/stitky/drupal" hreflang="cs">drupal</a></div> </div> <section class="field field--name-field-comments-article field--type-comment field--label-above comment-wrapper"> <h2 class="title comment-form__title">Přidat komentář</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=376&amp;2=field_comments_article&amp;3=comment_article" token="rLFQtJSFkXTNgcgy2cL3SSVKOP_2QzH18AK201Tz7Fg"></drupal-render-placeholder> </section> Thu, 08 Mar 2018 06:37:56 +0000 petr 376 at https://www.drupal.cz Drush https://www.drupal.cz/navody/drush <span class="field field--name-title field--type-string field--label-hidden">Drush</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="Zobrazit profil uživatele." href="/user/pepino710" class="username">pepino710</a></span> <span class="field field--name-created field--type-created field--label-hidden">Ne, 03/04/2018 - 21:40</span> <div class="field field--name-field-paragraphs field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <div class="paragraph paragraph--type--dcz-para-content paragraph--view-mode--default"> <div class="paragraph-content"> <div class="clearfix text-formatted field field--name-field-content field--type-text-long field--label-hidden field__item"><p><a href="http://www.drush.org/">Drush</a>, neboli Drupal Shell, je příkazová řádka (CLI) pro Drupal. Drush je tedy nástroj poskytující příkazy, které usnadňují správu a vývoj Drupalu. <strong>Tento tutoriál se týká Drushe ve verzi 8+</strong>.</p> <p>Potřebujete např. nainstalovat / odinstalovat modul nebo theme? Vyčistit cache či updatovat? Nebo snad změnit uživatelské jméno a heslo či vygenerovat testovací obsah? Při použití nástroje Drush vám zpravidla na každou akci stačí jeden příkaz na příkazové řádce a vše je hotovo.</p> <p>Drush toho samozřejmě umí ještě mnohem víc a bez nadsázky se dá říci, že znalost alespoň základních příkazů vám při vývoji a správě webů velmi usnadní život.</p> </div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--dcz-para-tabs paragraph--view-mode--default" id="tabs-861" role="tablist"> <div class="paragraph-content"> <div class="clearfix text-formatted field field--name-field-content field--type-text-long field--label-hidden field__item"><h2>Instalace</h2> </div> <ul class="tab" role="tablist"> <li role="presentation"><a class="tablink active" href="#" data-tab-id="tab-tabs-861-0" aria-controls="Linux (debian)" role="tab">Linux (debian)</a></li> <li role="presentation"><a class="tablink " href="#" data-tab-id="tab-tabs-861-1" aria-controls="Apple" role="tab">Apple</a></li> <li role="presentation"><a class="tablink " href="#" data-tab-id="tab-tabs-861-2" aria-controls="Windows" role="tab">Windows</a></li> </ul> <div class="tab-content"> <div role="tabpanel" class="tab-pane active" id="tab-tabs-861-0"> <div class="paragraph paragraph--type--dcz-para-tab paragraph--view-mode--default"> <div class="tab-content"> <div class="clearfix text-formatted field field--name-field-content field--type-text-long field--label-hidden field__item"><p>Vyberte si složku, kam chcete Drush nainstalovat. Uvnitř této složky vytvořte složku <code>drush</code>. Uvnitř složky <code>drush</code> spusťte composer, který zajistí instalaci. Nakonec vytvořte symlink do složky <code>/usr/local/bin/drush</code>, což je v debian-based distribucích zpravidla složka, ve které se systém snaží najít/spouštět programy. Umístění symlinku do této složky tedy zpřístupní příkaz drush pro CLI.</p> <p>V mém případě byl postup následující:</p> <pre code="bash"> cd /usr/local/share mkdir drush cd drush composer require drush/drush:8.x ln -s /usr/local/share/drush/vendor/bin/drush /usr/local/bin/drush </pre> <p>Dostupnost Drushe si můžete ověřit tak, že v terminálu zadáte příkaz <code>drush</code> či <code>drush help</code>. Oba tyto příkazy vypíšou seznam příkazů, které máte k dispozici.</p> </div> </div> </div> </div> <div role="tabpanel" class="tab-pane" id="tab-tabs-861-1"> <div class="paragraph paragraph--type--dcz-para-tab paragraph--view-mode--default"> <div class="tab-content"> <div class="clearfix text-formatted field field--name-field-content field--type-text-long field--label-hidden field__item"><p>Umíte nainstalovat Drush na počítači od firmy Apple? Přispějte do komunity a pomožte těm, kteří by rádi věděli, jak na to.</p> <p>Pokud potřebujete přístupy do adminstrace webu, obraťte se na někoho z <a href="/node/201#drupal-team">Drupal týmu.</a></p> </div> </div> </div> </div> <div role="tabpanel" class="tab-pane" id="tab-tabs-861-2"> <div class="paragraph paragraph--type--dcz-para-tab paragraph--view-mode--default"> <div class="tab-content"> <div class="clearfix text-formatted field field--name-field-content field--type-text-long field--label-hidden field__item"><p>Umíte nainstalovat Drush na počítači s operačním systémem Windows? Přispějte do komunity a pomožte těm, kteří by rádi věděli, jak na to.</p> <p>Pokud potřebujete přístupy do adminstrace webu, obraťte se na někoho z <a href="/node/201#drupal-team">Drupal týmu.</a></p> </div> </div> </div> </div> </div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--dcz-para-content paragraph--view-mode--default"> <div class="paragraph-content"> <div class="clearfix text-formatted field field--name-field-content field--type-text-long field--label-hidden field__item"><h2>Použití</h2> <p>Obecná struktura Drush příkazů je následující:</p> <pre code="bash"> drush [options]<command></command> [argument1] [argument2] </pre> <p>Pro přehled dostupných příkazů je možné, kromě výše uvedeného příkazu drush help, využít také <a href="https://drushcommands.com/">online verzi</a>.</p> <p>Případně můžete použít příkaz drush, který na příkazovou řádku vypíše všechny dostupné příkazy. Možnosti každého příkazu pak můžete zjistit následovně:</p> <pre> drush --help<command></command> [drush příkaz] </pre> <h3>Nejčastěji používané drush příkazy:</h3> <ul><li><code>drush cr</code>. Vyčistí všechny cache drupalu.</li> <li><code>drush en [jméno modulu] -y</code>. (Stáhne) a nainstaluje modul.</li> <li><code>drush pmu [jméno modulu] -y</code>. Odnstaluje modul.</li> <li><code>drush updb -y</code>. Provede update databáze.</li> <li><code>drush cex -y</code>. Provede export aktuální konfigurace databáze do kódu.</li> <li><code>drush cim -y</code>. Provede import konfigurace z kódu do databáze.</li> <li><code>drush sql-dump --result-file=[lokace]</code>. Provede dump databáze, který uloží do specifikovaného souboru v příslušné lokaci souborového systému.</li> <li><code>drush user-login ([uid])</code>. Vygeneruje jednorázový přístupový link pro specifikované uživatelské ID, tzv. User id = UID. Výchozí je user 1.</li> <li><code>drush watchdog-list</code>. Zobrazí prompt s výběrem voleb kategorií Drupal logu. Po výběru kategorie jsou vypsány poslední záznamy z logu.</li> </ul></div> </div> </div> </div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/stitky/drupal-8" hreflang="cs">drupal 8</a></div> <div class="field__item"><a href="/stitky/pro-zacatecniky" hreflang="cs">pro začátečníky</a></div> </div> </div> <div class="field field--name-field-teaser-image field--type-entity-reference field--label-above"> <div class="field__label">Teaser image</div> <div class="field__item"><a href="/media/26" hreflang="cs">Default – Drush</a></div> </div> Sun, 04 Mar 2018 20:40:20 +0000 pepino710 226 at https://www.drupal.cz Instalace Drupalu https://www.drupal.cz/navody/instalace-drupalu <span class="field field--name-title field--type-string field--label-hidden">Instalace Drupalu</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="Zobrazit profil uživatele." href="/user/pepino710" class="username">pepino710</a></span> <span class="field field--name-created field--type-created field--label-hidden">Út, 02/20/2018 - 11:43</span> <div class="field field--name-field-paragraphs field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <div class="paragraph paragraph--type--dcz-para-content paragraph--view-mode--default"> <div class="paragraph-content"> <div class="clearfix text-formatted field field--name-field-content field--type-text-long field--label-hidden field__item"><p>V tomto tutoriálu se budeme věnovat tomu, jak je možné Drupal nainstalovat na svém počítači. Minimálním požadavkem v tuto chvíli je mít ve svém počítači funkční webový server. Pokud webový server dosud nemáte, můžete si ho jednoduše zprovoznit za pomoci tutoriálu <a href="/node/66">Instalace a konfigurace webového serveru</a>.</p> <p>Instalaci Drupalu lze provést vícero způsoby:</p> <ul><li><a href="#1">Manuálním stažením kódu Drupal ve formě <code>.zip</code> / <code>.tar.gz</code> přímo z drupal.cz</a></li> <li><a href="#2">Pomocí nástoje Git</a></li> <li><a href="#3">Pomocí Drupal specifických nástrojů Drush / Drupal console</a></li> <li><a href="#4"><strong>Pomocí nástroje Composer (doporučené)</strong>.</a></li> </ul></div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--dcz-para-content paragraph--view-mode--default"> <div class="paragraph-content"> <div class="clearfix text-formatted field field--name-field-content field--type-text-long field--label-hidden field__item"><h2 id="1">Manuální stažení kódu Drupalu z <code>drupal.org</code></h2> <p>Jedná se o nejjednodušší a zároveň o nejvíce pracný způsob instalace Drupalu.</p> <p>Postup je následující:</p> <ol><li>Stahněte si <code>.zip</code> / <code>.tag.gz</code> a extrahujte kód.</li> <li>Složku s kódem Drupalu přesuňte do složky <code>www</code> na vašem web-serveru.</li> <li>Nastavte si lokální doménu, více viz. <a href="/node/76">tutoriál nastavení lokální domény</a>.</li> <li>V prohlížeči zadejte lokální doménu, a následně projděte instalačním procesem Drupalu.</li> </ol></div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--dcz-para-content paragraph--view-mode--default"> <div class="paragraph-content"> <div class="clearfix text-formatted field field--name-field-content field--type-text-long field--label-hidden field__item"><h2 id="2">Instalace Drupal pomocí nástroje Git</h2> <p>Instalace skrze git je velmi jednoduchá: stačí pouze přejít do složky, kam se má Drupal nainstalovat, a napsat jeden příkaz. Pokud git zatím nepoužíváte, přicházíte o hodně - doporučujeme vám náš tutoriál <a href="/node/61">Git</a>.</p> <p>Konkrétně:</p> <ol><li><code>cd /var/www/</code></li> <li><code>git clone --branch 8.4.x https://git.drupal.org/project/drupal.git [nazev cilove slozky]</code></li> <li>Nastavte si lokální doménu, více viz. <a href="/node/76">tutoriál nastavení lokální domény</a>.</li> <li>V prohlížeči zadejde lokální doménu, a následně projděte instalačním procesem Drupalu.</li> </ol><p>Výhodou této metody je, že vám odpadá těžkopádně manuální kopírování souborů z místa na místo.</p> <p>Nevýhoda existuje pouze v případě, že chcete začít na této instanci Drupalu lokálně vyvíjet či stavět své vlastní řešení. V tomto případě se budete muset nejprve zbavit aktuálního repozitáře smazáním složky <code>.git</code> a manuálně znovu založit vlastní repozitář. Pro rychlé otestování Drupalu je ovšem toto zcela validní a vývojářsky příjemný postup.</p> </div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--dcz-para-content paragraph--view-mode--default"> <div class="paragraph-content"> <div class="clearfix text-formatted field field--name-field-content field--type-text-long field--label-hidden field__item"><h2 id="3">Instalace pomocí nástroje Drush</h2> <p>Jak již víte z tutoriálu <a href="/node/226">Drush</a> a <a href="/node/231">Drupal console</a>, oba nástroje poskytují vývojářům sadu příkazů, skrze které mohou nad Drupal instancí jednoduše a rychle provádět složitější operace. Jednou z těchto operací je také samotná instalace Drupalu.</p> <p>Postup:</p> <ol><li><code>cd /var/www/</code></li> <li><code>mkdir drupal8</code></li> <li><code>cd drupal8</code></li> <li><code>drush dl drupal-8 --select</code></li> <li><code>mysql -u[username] -p[password]</code></li> <li><code>create database [drupal-database]</code></li> <li><code>drush si standard --db-url=mysql://[db_user]:[db_pass]@[ip-address]/[db_name]</code></li> <li>Nastavte si lokální doménu, více viz tutoriál nastavení lokální domény.</li> <li>V prohlížeči zadejte lokální doménu a následně projděte instalačním procesem Drupalu.</li> </ol><p>Oproti Gitu je výhodou, že implicitně nevzniká Git repozitář, a tudíž není potřeba mazat složku <code>.git</code>.</p> </div> </div> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--dcz-para-content paragraph--view-mode--default"> <div class="paragraph-content"> <div class="clearfix text-formatted field field--name-field-content field--type-text-long field--label-hidden field__item"><h2 id="4">Instalace skrze Composer (doporučené)</h2> <p><a href="https://getcomposer.org/">Composer</a> je tzv. package manager, který je v PHP světě v současnosti de facto standardem pro instalaci a správu kódu. Od verze 8.x Drupalu je použití Composeru preferovaným způsobem instalace.</p> <p>(Pozn. Drupal až do verze 7.x představoval ve světě PHP samostatný ostrov se svými pravidly a specifiky. Kvůli kompatibilitě proto nemohl být Composer v minulosti využíván; jeho roli zastával Drush.)</p> <p>Instalace je téměř stejná jako u Drushe či Drupal console. Liší se pouze v bodu 2:</p> <ul><li><code>composer create-project %{{repository}} %{{directory}} --stability dev --no-interaction</code> <ul><li>Kde <code>%{{repository}} %{{directory}}</code> nahradíme URL repozitáře na základě kterého chceme založit projekt a cílovým adresářem kam se uloží výsledek.</li> <li>Funkční příklad využívá <a href="https://github.com/drupal-composer/drupal-project">https://github.com/drupal-composer/drupal-project</a>:<br /><code>composer create-project drupal-composer/drupal-project:8.x-dev drupal8 --stability dev --no-interaction</code></li> </ul></li> <li>Nastavte si lokální doménu, více viz tutoriál <a href="/node/76">Nastavení lokální domény</a>.</li> <li>V prohlížeči zadejte lokální doménu a následně projděte instalačním procesem Drupalu.</li> </ul></div> </div> </div> </div> <div class="field__item"> <div class="dcz-para-light paragraph paragraph--type--dcz-para-content paragraph--view-mode--default"> <div class="paragraph-content"> <div class="clearfix text-formatted field field--name-field-content field--type-text-long field--label-hidden field__item"><h3>Proč je nyní použití composeru žádoucí a zajímavé?</h3> <ol><li><strong>Off Drupal island</strong>. S příchodem verze 8 Drupal komunita velmi trasnparentně vyjádřila zájem být co nejvíce součástí celosvětové PHP komunity. Nyní je možné pomocí Composeru doinstalovávat k Drupalu i nástroje či moduly z jiných PHP frameworků. Totéž samozřejmě platí naopak.</li> <li><strong>Best practice</strong>. Největší výhodou Composeru je, že udržuje aktuální kód třetích stran. Představte si, že chcete na Drupalu postavit své vlastní řešení. Drupal core, contrib moduly a případně další externí knihovny, které se rozhodnete v rámci řešení používat, jsou v té chvíli pro vás třetí strany. Je to kód, který chcete mít stále aktuální a nechcete do něj zasahovat. Vaším řešením, resp. tím, co obsahuje váš git repozitář, je tak ve výsledku pouze specifická konfigurace Drupal core a contrib modulů a případně váš vlastní kód. Díky tomu můžete v rámci svého projektu verzovat jen to, co se skutečně týká vašeho vlastního řešení, a vše ostatní nechat na composeru.</li> </ol></div> </div> </div> </div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/stitky/pro-zacatecniky" hreflang="cs">pro začátečníky</a></div> <div class="field__item"><a href="/stitky/drupal-8" hreflang="cs">drupal 8</a></div> </div> </div> <div class="field field--name-field-teaser-image field--type-entity-reference field--label-above"> <div class="field__label">Teaser image</div> <div class="field__item"><a href="/media/51" hreflang="cs">Drupal Instalace</a></div> </div> Tue, 20 Feb 2018 10:43:05 +0000 pepino710 56 at https://www.drupal.cz