﻿
{"id":8749,"date":"2018-07-27T07:50:38","date_gmt":"2018-07-27T07:50:38","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=8749"},"modified":"2018-07-27T07:50:38","modified_gmt":"2018-07-27T07:50:38","slug":"pug-layout-ve-block-yapisi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/pug-layout-ve-block-yapisi\/","title":{"rendered":"Pug &#8211; Layout ve Block Yap\u0131s\u0131"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde Pug paketinde Layout yap\u0131s\u0131n\u0131n Block kullan\u0131larak nas\u0131l in\u015fa edildi\u011fini ele alaca\u011f\u0131z.<\/p>\n<p>\u0130lk olarak ana dizinimizde bulunan &#8220;views&#8221; klas\u00f6r\u00fcne &#8220;layout.pug&#8221; ad\u0131nda bir dosya ekleyelim. Layout&#8217;ta sitemizin genel tasar\u0131m\u0131n\u0131 tutaca\u011f\u0131z lakin d\u00fczeni olu\u015ftururken micro y\u00f6netimi sa\u011flayabilmek i\u00e7in site tasar\u0131m\u0131n\u0131 m\u00fcmk\u00fcn mertebe k\u00fc\u00e7\u00fck par\u00e7alara b\u00f6lmemiz gerekecektir. Bu i\u015flemide &#8220;block&#8221; yap\u0131s\u0131n\u0131 kullanarak icra edece\u011fiz.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n\/\/- layout.pug\r\nhtml\r\n    head\r\n        block header\r\n    body\r\n        block content\r\n        block footer\r\n<\/pre>\n<p>Yukar\u0131daki &#8220;layout.pug&#8221; dosyas\u0131na g\u00f6z atarsan\u0131z e\u011fer sitenin ana tasar\u0131m \u015fablonu olu\u015fturulmu\u015f ama opsiyonel k\u0131s\u0131mlar\u0131 &#8220;block&#8221; keyword\u00fc ile bu layout&#8217;tan t\u00fcreyecek s\u0131n\u0131flara b\u0131rak\u0131lm\u0131\u015ft\u0131r.<\/p>\n<p>Layout&#8217;tan t\u00fcreyen sayfalarda ise a\u015fa\u011f\u0131da oldu\u011fu gibi ilgili layout sayfas\u0131 &#8220;extends&#8221; edilmelidir. Ard\u0131ndan block k\u0131s\u0131mlar\u0131 yine &#8220;block&#8221; keyword\u00fc ile \u00e7a\u011fr\u0131l\u0131p istenildi\u011fi \u015fekilde doldurulmaktad\u0131r.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n\/\/-home.pug\r\nextends layout\r\nblock header\r\n    title Home Sayfas\u0131\r\nblock content\r\n    div\r\n        strong Merhaba\r\n        p Buras\u0131 Home sayfas\u0131d\u0131r.\r\nblock footer\r\n    span\r\n        |Alt B\u00f6l\u00fcm | Home\r\n<\/pre>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n\/\/-about.pug\r\nextends layout\r\nblock header\r\n    title About Sayfas\u0131\r\nblock content\r\n    div\r\n        strong Merhaba\r\n        p Buras\u0131 About sayfas\u0131d\u0131r.\r\nblock footer\r\n    span\r\n        |Alt B\u00f6l\u00fcm | Footer\r\n<\/pre>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n\/\/-contact.pug\r\nextends layout\r\nblock header\r\n    title Contact Sayfas\u0131\r\nblock content\r\n    div\r\n        strong Merhaba\r\n        p Buras\u0131 Contact sayfas\u0131d\u0131r\r\nblock footer\r\n    span\r\n        |Alt B\u00f6l\u00fcm | Contact\r\n<\/pre>\n<p>Bu dosyalar haz\u0131rland\u0131ktan sonra script \u00fczerinden her pug dosyas\u0131na \u00f6zel route tan\u0131mlan\u0131p ili\u015fkili dosyalar render edilmelidir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst app = express();\r\napp.set(&quot;view engine&quot;, &quot;pug&quot;);\r\napp.get(&quot;\/&quot;, (request, response) =&gt; {\r\n    response.render(&quot;home&quot;);\r\n});\r\napp.get(&quot;\/home&quot;, (request, response) =&gt; {\r\n    response.render(&quot;home&quot;);\r\n});\r\napp.get(&quot;\/about&quot;, (request, response) =&gt; {\r\n    response.render(&quot;about&quot;);\r\n});\r\napp.get(&quot;\/contact&quot;, (request, response) =&gt; {\r\n    response.render(&quot;contact&quot;);\r\n})\r\napp.listen(5000, () =&gt; {\r\n    console.log(&quot;Yay\u0131n ba\u015flad\u0131...&quot;);\r\n});\r\n<\/pre>\n<p>Olu\u015fturdu\u011fumuz sunucuda dinledi\u011fimiz 5000 portunu tetiklersek e\u011fer a\u015fa\u011f\u0131daki gibi sonu\u00e7lar al\u0131nacakt\u0131r.<\/p>\n<p><em><strong>home.pug<\/strong><\/em> i\u00e7in;<br \/>\n<code>&lt;html&gt;&lt;head&gt;&lt;title&gt;Home Sayfas\u0131&lt;\/title&gt;&lt;\/head&gt;&lt;body&gt;&lt;div&gt;&lt;strong&gt;Merhaba&lt;\/strong&gt;&lt;p&gt;Buras\u0131 Home sayfas\u0131d\u0131r.&lt;\/p&gt;&lt;\/div&gt;&lt;span&gt;Alt B\u00f6l\u00fcm | Home&lt;\/span&gt;&lt;\/body&gt;&lt;\/html&gt;<\/code><br \/>\n<em><strong>about.pug<\/strong><\/em> i\u00e7in;<br \/>\n<code>&lt;html&gt;&lt;head&gt;&lt;title&gt;About Sayfas\u0131&lt;\/title&gt;&lt;\/head&gt;&lt;body&gt;&lt;div&gt;&lt;strong&gt;Merhaba&lt;\/strong&gt;&lt;p&gt;Buras\u0131 About sayfas\u0131d\u0131r.&lt;\/p&gt;&lt;\/div&gt;&lt;span&gt;Alt B\u00f6l\u00fcm | Footer&lt;\/span&gt;&lt;\/body&gt;&lt;\/html&gt;<\/code><br \/>\n<em><strong>contact.pug<\/strong><\/em> i\u00e7in;<br \/>\n<code>&lt;html&gt;&lt;head&gt;&lt;title&gt;Contact Sayfas\u0131&lt;\/title&gt;&lt;\/head&gt;&lt;body&gt;&lt;div&gt;&lt;strong&gt;Merhaba&lt;\/strong&gt;&lt;p&gt;Buras\u0131 Contact sayfas\u0131d\u0131r&lt;\/p&gt;&lt;\/div&gt;&lt;span&gt;Alt B\u00f6l\u00fcm | Contact&lt;\/span&gt;&lt;\/body&gt;&lt;\/html&gt;<\/code><\/p>\n<p>\u015euana kadar yapm\u0131\u015f oldu\u011fumuz \u00e7al\u0131\u015fmada block keywordleri layout&#8217;ta ki \u015fablonu ezerek bar\u0131nd\u0131rd\u0131klar\u0131 i\u00e7eri\u011fi ilgili alana eklemektedirler.<\/p>\n<p>S\u00f6zgelimi;<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nhtml\r\n    head\r\n        block header\r\n            meta(description = `${title} Sayfas\u0131`)\r\n    body\r\n        block content\r\n        block footer\r\n<\/pre>\n<p>Yukar\u0131daki layout&#8217;ta g\u00f6rd\u00fc\u011f\u00fcn\u00fcz header blo\u011funda varsay\u0131lan olarak bir meta etiketi tan\u0131mlanm\u0131\u015ft\u0131r. E\u011fer ki bu layout \u015fuana kadar bildi\u011fimiz \u015fekilde kullan\u0131l\u0131rsa;<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n\/\/-home.pug\r\nextends layout\r\n\r\nblock header\r\n    title Home Sayfas\u0131\r\nblock content\r\n    div\r\n        strong Merhaba\r\n        p Buras\u0131 Home sayfas\u0131d\u0131r.\r\nblock footer\r\n    span\r\n        |Alt B\u00f6l\u00fcm | Home\r\n<\/pre>\n<p>header blo\u011fu komple ezilmekte ve yerine pug sayfam\u0131zda belirtilen ilgili blo\u011fa ait veri bas\u0131lmaktad\u0131r. Dolay\u0131s\u0131yla render sonucu elde edilen sonu\u00e7 a\u015fa\u011f\u0131daki gibi olacakt\u0131r;<br \/>\n<code>&lt;html&gt;&lt;head&gt;&lt;title&gt;Home Sayfas\u0131&lt;\/title&gt;&lt;\/head&gt;&lt;body&gt;&lt;div&gt;&lt;strong&gt;Merhaba&lt;\/strong&gt;&lt;p&gt;Buras\u0131 Home sayfas\u0131d\u0131r.&lt;\/p&gt;&lt;\/div&gt;&lt;span&gt;Alt B\u00f6l\u00fcm | Home&lt;\/span&gt;&lt;\/body&gt;&lt;\/html&gt;<\/code><br \/>\n\u0130\u015fte b\u00f6yle durumlarda, layout&#8217;ta ki varsay\u0131lan \u015fablonlar\u0131n yan\u0131na pug dosyas\u0131ndan gelen yap\u0131lar\u0131 eklemek istiyorsan\u0131z &#8220;append&#8221; keyword\u00fcn\u00fc a\u015fa\u011f\u0131daki gibi kullanman\u0131z yeterlidir.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nextends layout\r\n\r\nblock append header\r\n    title Home Sayfas\u0131\r\nblock content\r\n    div\r\n        strong Merhaba\r\n        p Buras\u0131 Home sayfas\u0131d\u0131r.\r\nblock footer\r\n    span\r\n        |Alt B\u00f6l\u00fcm | Home\r\n<\/pre>\n<p>Bu durumda elde edilen \u00e7\u0131kt\u0131;<br \/>\n<code>&lt;html&gt;&lt;head&gt;&lt;meta description=\"Home Sayfas\u0131\"\/&gt;&lt;title&gt;Home Sayfas\u0131&lt;\/title&gt;&lt;\/head&gt;&lt;body&gt;&lt;div&gt;&lt;strong&gt;Merhaba&lt;\/strong&gt;&lt;p&gt;Buras\u0131 Home sayfas\u0131d\u0131r.&lt;\/p&gt;&lt;\/div&gt;&lt;span&gt;Alt B\u00f6l\u00fcm | Home&lt;\/span&gt;&lt;\/body&gt;&lt;\/html&gt;<\/code><br \/>\n\u015feklinde olacakt\u0131r.<\/p>\n<p>Tabi yukar\u0131daki son \u00f6rnekte script dosyas\u0131ndan &#8220;title&#8221; parametresini g\u00f6ndermeyi unutmuyoruz \ud83d\ude09<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst app = express();\r\napp.set(&quot;view engine&quot;, &quot;pug&quot;);\r\napp.get(&quot;\/&quot;, (request, response) =&gt; {\r\n    response.render(&quot;home&quot;, { title: &quot;Home&quot; });\r\n});\r\napp.get(&quot;\/home&quot;, (request, response) =&gt; {\r\n    response.render(&quot;home&quot;, { title: &quot;Home&quot; });\r\n});\r\napp.get(&quot;\/about&quot;, (request, response) =&gt; {\r\n    response.render(&quot;about&quot;, { title: &quot;About&quot; });\r\n});\r\napp.get(&quot;\/contact&quot;, (request, response) =&gt; {\r\n    response.render(&quot;contact&quot;, { title: &quot;Contact&quot; });\r\n})\r\napp.listen(5000, () =&gt; {\r\n    console.log(&quot;Yay\u0131n ba\u015flad\u0131...&quot;);\r\n});\r\n<\/pre>\n<p>Velhas\u0131l, Pug paketinde block keyword\u00fc ile layout yap\u0131s\u0131n\u0131n nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 incelemi\u015f olduk. Faydalanman\u0131z dile\u011fiyle&#8230;<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu i\u00e7eri\u011fimizde Pug paketinde Layout yap\u0131s\u0131n\u0131n Block kullan\u0131larak nas\u0131l in\u015fa edildi\u011fini ele alaca\u011f\u0131z. \u0130lk olarak ana dizinimizde bulunan &#8220;views&#8221; klas\u00f6r\u00fcne &#8220;layout.pug&#8221; ad\u0131nda bir dosya ekleyelim. Layout&#8217;ta sitemizin genel tasar\u0131m\u0131n\u0131 tutaca\u011f\u0131z lakin d\u00fczeni olu\u015ftururken&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":8746,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2495,2145,2499],"tags":[2511,2513,2512],"class_list":["post-8749","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-express-js","category-node-js","category-pug","tag-layout-ve-block-yapisi","tag-pug-block","tag-pug-layout"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8749","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=8749"}],"version-history":[{"count":15,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8749\/revisions"}],"predecessor-version":[{"id":8765,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8749\/revisions\/8765"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/8746"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=8749"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=8749"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=8749"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}