{"id":229492,"date":"2022-11-17T11:55:00","date_gmt":"2022-11-17T08:55:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229492"},"modified":"2022-11-09T08:10:28","modified_gmt":"2022-11-09T05:10:28","slug":"wordpress-mallar-foer-nyboerjare-timber","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/wordpress-mallar-foer-nyboerjare-timber\/","title":{"rendered":"WordPress-mallar f\u00f6r nyb\u00f6rjare: Timber"},"content":{"rendered":"\n<p>Sedan jag pratade om WordPress-mallar har jag t\u00e4ckt n\u00e5gra olika motorer som \u00e4r tillg\u00e4ngliga:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/viniwrubleski\/jade-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jade-PHP<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/cjonasw\/wordpress-starter-theme-mustache\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Mustasch<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/zach-adams\/sprig-foundation\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Kvist<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/jenssegers\/blade\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Blad<\/a><\/li>\n<\/ul>\n<p>Om du tittar p\u00e5 Mustache, d\u00e5 kanske du \u00e4r intresserad av Styre, och om du tittar p\u00e5 Blade, s\u00e5 rekommenderar jag starkt att kolla in <a href=\"https:\/\/roots.io\/sage\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Sage<\/a> fr\u00e5n <a href=\"https:\/\/roots.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Roots<\/a> -teamet.<\/p>\n<p>Men f\u00f6r det h\u00e4r sista inl\u00e4gget ska jag forts\u00e4tta med Timber som jag presenterade ig\u00e5r. Jag \u00e4r inte s\u00e5 mycket om vilken som anv\u00e4nds (eftersom de alla har sina kompromisser) s\u00e5 l\u00e4nge det \u00e4r konsekvent.<\/p>\n<h2>WordPress-mall: Anv\u00e4nda Timber<\/h2>\n<p>Med det sagt, s\u00e5 h\u00e4r kan du komma ig\u00e5ng med att anv\u00e4nda <a href=\"https:\/\/www.upstatement.com\/timber\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Timber<\/a> i dina projekt.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ec006741.png\"><\/a><\/p>\n<p>F\u00f6r att komma ig\u00e5ng m\u00e5ste du vara bekant med Composer, och du kommer att beh\u00f6va ha en lokal utvecklingsmilj\u00f6. Om du inte har n\u00e5gon av dessa eller beh\u00f6ver hj\u00e4lp, s\u00e5 har jag dig t\u00e4ckt:<\/p>\n<ol>\n<li><a href=\"https:\/\/tommcfarlin.com\/laravel-valet-for-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Anv\u00e4nder Laravel f\u00f6r WordPress-utveckling<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/tag\/configuring-composer-for-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Konfigurera Composer f\u00f6r WordPress<\/a><\/li>\n<\/ol>\n<p>N\u00e4r du har g\u00e5tt igenom stegen i var och en av dessa guider b\u00f6r du vara bra att g\u00e5. S\u00e5 h\u00e4r \u00e4r vad vi ska g\u00f6ra.<\/p>\n<h3>1 Konfigurera en lokal installation f\u00f6r timmer<\/h3>\n<p>Jag kommer att anv\u00e4nda Betj\u00e4nad f\u00f6r detta, vilket inneb\u00e4r att jag kommer att ha en katalog med den senaste versionen av <a href=\"https:\/\/wordpress.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress<\/a> (som \u00e4r 4.8.3) installerad i dess katalog.<\/p>\n<p>Det betyder att jag redan har en databas redo att g\u00e5:<\/p>\n<\/p>\n<p>Och jag kommer att ha utf\u00e4rdat f\u00f6ljande kommandon f\u00f6r att st\u00e4lla in Laravel och en s\u00e4ker installation (f\u00f6r att efterlikna en iscens\u00e4ttningsmilj\u00f6):<\/p>\n<pre><code>$ valet link\n$ valet secure<\/code><\/pre>\n<p>S\u00e5 att jag kan komma \u00e5t sidan i en webbl\u00e4sare.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ec7806b6.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ec7806b6.png\" alt=\"WordPress-mallar f\u00f6r nyb\u00f6rjare: Timber\" ><\/a><\/p>\n<p>F\u00f6r den som \u00e4r nyfiken anv\u00e4nder jag:<\/p>\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress<\/a> 4.8.3<\/li>\n<li><a href=\"https:\/\/wordpress.org\/themes\/twentyfifteen\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tjugofemton<\/a><\/li>\n<li>Reng\u00f6r permal\u00e4nkar<\/li>\n<\/ul>\n<p>Och inga andra plugins. Det \u00e4r bara en annan vaniljinstallation \u00e4n vad du ser ovan.<\/p>\n<p>Vid det h\u00e4r laget \u00e4r jag redo att installera Timber.<\/p>\n<h3>2 Installation av timmer<\/h3>\n<p>F\u00f6rutsatt att du f\u00f6ljde guiderna ovan f\u00f6r betj\u00e4nt och komposit\u00f6r, b\u00f6r du vara bra att g\u00e5. S\u00e5 med hj\u00e4lp av en terminal, navigera till din WordPress-installationskatalog.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ecb7040b.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ecb7040b.png\" alt=\"WordPress-mallar f\u00f6r nyb\u00f6rjare: Timber\" ><\/a><\/p>\n<p>Ge sedan f\u00f6ljande kommando:<\/p>\n<pre><code>$ composer require timber\/timber<\/code><\/pre>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ece8223b.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ece8223b.png\" alt=\"WordPress-mallar f\u00f6r nyb\u00f6rjare: Timber\" ><\/a><\/p>\n<p>Detta kommer att installera Timber, men du beh\u00f6ver fortfarande uppdatera ditt temas functions.php-fil s\u00e5 att den korrekt anv\u00e4nder Composers autoloader.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ed28264d.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ed28264d.png\" alt=\"WordPress-mallar f\u00f6r nyb\u00f6rjare: Timber\" ><\/a><\/p>\n<p>F\u00f6rutsatt att allt har g\u00e5tt r\u00e4tt till b\u00f6r du kunna uppdatera din webbplats, navigera till eventuella inl\u00e4gg, sidor och s\u00e5 vidare och ingenting ska vara ur funktion.<\/p>\n<h3>3 Initiera timmer<\/h3>\n<p>Slutligen \u00e4r det dags att anv\u00e4nda Timber f\u00f6r att ers\u00e4tta mycket av det vi \u00e4r vana vid att se inom ramen f\u00f6r en WordPress-mall.<\/p>\n<p>Jag v\u00e4ljer att g\u00f6ra detta inom <strong>content-page.php<\/strong> f\u00f6r att g\u00f6ra det enkelt att f\u00f6lja. Observera att kodsegmentet jag \u00e4ndrar ursprungligen <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2c02b22272f645076f7f735bd61a4034#file-04-content-page-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ser ut s\u00e5 h\u00e4r:<\/a><\/p>\n<pre><code>&lt;article id=\"post-&lt;?php the_ID(); ?&gt;\" &lt;?php post_class(); ?&gt;&gt;\n    &lt;?php\n        \/\/ Post thumbnail.\n        twentyfifteen_post_thumbnail();\n    ?&gt;\n\n    &lt;header class=\"entry-header\"&gt;\n        &lt;?php the_title( '&lt;h1 class=\"entry-title\"&gt;', '&lt;\/h1&gt;' ); ?&gt;\n    &lt;\/header&gt;&lt;!-- .entry-header --&gt;\n\n    &lt;div class=\"entry-content\"&gt;\n        &lt;?php the_content(); ?&gt;\n        &lt;?php\n            wp_link_pages( array(\n                'before'      =&gt; '&lt;div class=\"page-links\"&gt;&lt;span class=\"page-links-title\"&gt;'. __( 'Pages:', 'twentyfifteen' ). '&lt;\/span&gt;',\n                'after'       =&gt; '&lt;\/div&gt;',\n                'link_before' =&gt; '&lt;span&gt;',\n                'link_after'  =&gt; '&lt;\/span&gt;',\n                'pagelink'    =&gt; '&lt;span class=\"screen-reader-text\"&gt;'. __( 'Page', 'twentyfifteen' ). ' &lt;\/span&gt;%',\n                'separator'   =&gt; '&lt;span class=\"screen-reader-text\"&gt;, &lt;\/span&gt;',) );\n        ?&gt;\n    &lt;\/div&gt;&lt;!-- .entry-content --&gt;\n\n    &lt;?php edit_post_link( __( 'Edit', 'twentyfifteen' ), '&lt;footer class=\"entry-footer\"&gt;&lt;span class=\"edit-link\"&gt;', '&lt;\/span&gt;&lt;\/footer&gt;&lt;!-- .entry-footer --&gt;' ); ?&gt;\n\n&lt;\/article&gt;&lt;!-- #post-## --&gt;<\/code><\/pre>\n<p>I det h\u00e4r inl\u00e4gget kommer jag inte att helt \u00e5terskapa det du ser ovan, men jag ska komma ig\u00e5ng med vad som beh\u00f6vs f\u00f6r att b\u00f6rja anv\u00e4nda en mallmotor inom ramen f\u00f6r en PHP-stiftelse.<\/p>\n<p>F\u00f6rst m\u00e5ste du skapa en mall som kan appliceras p\u00e5 exempelsidan i en vanlig WordPress-installation. Jag ringde min <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2c02b22272f645076f7f735bd61a4034#file-05-template-timber-page-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">template-timber-page.php<\/a> och det ser ut s\u00e5 h\u00e4r:<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Template Name: Timber Template\n * Description: Replaces the standard page with a Timber template.\n *\/\n\n$timber  = new TimberTimber();\n$context = Timber::get_context();\n$post    = new TimberPost();\n\n$context['post'] = $post;\nTimber::render(\n  array( 'content-'. $post-&gt;post_name. '.twig', 'page.twig' ),\n  $context\n);\n<\/code><\/pre>\n<p>I koden ovan \u00e4r det h\u00e4r vad som h\u00e4nder:<\/p>\n<ol>\n<li>\u00a0Jag instansierar Timber-objektet.<\/li>\n<li>Sedan f\u00e5r jag ett Timber-sammanhang. Kontexten inneh\u00e5ller mycket information som \u00e4r anv\u00e4ndbar inom mallen (eller webbplatsen) beroende p\u00e5 var du anv\u00e4nder din mall.<\/li>\n<li>Efter det tar jag tag i en TimberPost som i huvudsak \u00e4r en f\u00f6rl\u00e4ngning av ett WordPress-inl\u00e4gg. Den har data fr\u00e5n WP_Post men g\u00f6r den tillg\u00e4nglig f\u00f6r v\u00e5ra mallar.<\/li>\n<li>D\u00e4refter st\u00e4ller jag in <strong>postindexet<\/strong> f\u00f6r <strong>$context-<\/strong> arrayen med en referens till Timber Post (som jag har kallat <strong>$post<\/strong> ).<\/li>\n<li>Slutligen ber jag Timber att rendera en sida som heter <strong>content-sample-page.twig<\/strong> med det givna sammanhanget.<\/li>\n<\/ol>\n<p>Det \u00e4r h\u00e4r det \u00e4r viktigt att skapa sj\u00e4lva kvistfilen (som \u00e4r f\u00f6rl\u00e4ngningen av Timber-mallfilen). S\u00e5 jag skapade <strong>content-sample-page.twig<\/strong> och det ser <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2c02b22272f645076f7f735bd61a4034#file-06-cotent-sample-page-twig\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ut s\u00e5 h\u00e4r:<\/a><\/p>\n<pre><code>{% block content %}\n  &lt;article id=\"post-{{post.ID}}\" class=\"{{body_class}}\"&gt;\n\n    &lt;header class=\"entry-header\"&gt;\n      &lt;h1 class=\"article-h1\"&gt;{{post.title}}&lt;\/h1&gt;\n    &lt;\/header&gt;&lt;!-- .entry-header --&gt;\n\n    &lt;div class=\"entry-content\"&gt;\n        {{post.content}}\n    &lt;\/div&gt;&lt;!-- .entry-content --&gt;\n\n  &lt;\/article&gt;&lt;!-- #post-## --&gt;\n{% endblock %}\n<\/code><\/pre>\n<p>Efter att ha instansierat Timber-objektet och sedan ersatt koden du ser ovan, kommer du att m\u00e4rka att koden l\u00e4ses lite annorlunda (men inte helt sv\u00e5rt att f\u00f6lja).<\/p>\n<h3>4 Anv\u00e4nda mallen<\/h3>\n<p>F\u00f6r att till\u00e4mpa mallen, navigera till <strong>Sidor<\/strong> i WordPress. Leta upp <strong>exempelsidan<\/strong> och v\u00e4lj sedan den som vi just skapade med titeln ovan i mallens rullgardinsmeny:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ed87f4dc.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ed87f4dc.png\" alt=\"WordPress-mallar f\u00f6r nyb\u00f6rjare: Timber\" ><\/a><\/p>\n<p>N\u00e4r det \u00e4r gjort kan du se inl\u00e4gget. Du kommer att m\u00e4rka att den ser lite naken ut i j\u00e4mf\u00f6relse med vad vi \u00e4r vana vid att se:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77eddccec8.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77eddccec8.png\" alt=\"WordPress-mallar f\u00f6r nyb\u00f6rjare: Timber\" ><\/a><\/p>\n<p>Men du f\u00e5r den allm\u00e4nna uppfattningen om hur vi kan anv\u00e4nda sammanhanget f\u00f6r att komma \u00e5t m\u00e5nga av samma egenskaper som vi \u00e4r vana vid att se inom WordPress utan att beh\u00f6va str\u00f6 koden med markup och PHP och vad vi \u00e4n anv\u00e4nder att anv\u00e4nda.<\/p>\n<h2>Fler resurser<\/h2>\n<p>Jag vet att det h\u00e4r huvudsakligen \u00e4r en snabbkurs i mallarbete och att den inte t\u00e4cker s\u00e5 mycket som den kunde. Eftersom det h\u00e4r inl\u00e4gget n\u00e4rmar sig 1000 ord m\u00e5ste jag dra gr\u00e4nsen n\u00e5gonstans, s\u00e5 jag v\u00e4ljer att g\u00f6ra det h\u00e4r.<\/p>\n<p>Det betyder dock inte att jag \u00e4r f\u00e4rdig med att diskutera det. Jag planerar att \u00e5terkomma till mer avancerade \u00e4mnen kring mallning i framtida krukor.<\/p>\n<p>Men om du \u00e4r intresserad rekommenderar jag starkt att f\u00f6lja b\u00e5de <a href=\"https:\/\/timber.github.io\/docs\/getting-started\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Getting tarted-<\/a> guiden f\u00f6r Timber och projektet p\u00e5 <a href=\"https:\/\/github.com\/timber\/timber\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub<\/a>.<\/p>\n<p>Detta kommer \u00e5tminstone att ge dig en utg\u00e5ngspunkt fr\u00e5n vilken du kan g\u00f6ra \u00e4nnu mer framsteg i dina anstr\u00e4ngningar att skapa renare, mer logiskt separat kod \u00e4n vad vi \u00e4r vana vid att se i WordPress.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Att anv\u00e4nda en motor som Timber kan hj\u00e4lpa till att f\u00f6rb\u00e4ttra separationen av problem i WordPress-mallar. H\u00e4r \u00e4r ett exempel p\u00e5 hur du kommer ig\u00e5ng.<\/p>\n","protected":false},"author":1,"featured_media":165382,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[932,848,901,868],"tags":[1173],"class_list":["post-229492","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aemnen","category-handledningar","category-koda","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=229492"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229492\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/165382"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=229492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=229492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=229492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}