{"id":35788,"date":"2025-12-03T22:01:06","date_gmt":"2025-12-03T19:01:06","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/"},"modified":"2025-12-03T22:01:06","modified_gmt":"2025-12-03T19:01:06","slug":"eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/","title":{"rendered":"Eleventy Shortcodes ile Duyarl\u0131 G\u00f6rseller ve Sat\u0131r \u0130\u00e7i SVG: H\u0131zl\u0131 Ba\u015flang\u0131\u00e7"},"content":{"rendered":"<p><body><\/p>\n<p>Web sitelerinizin y\u00fckleme h\u0131z\u0131 ve g\u00f6rsel kalitesi aras\u0131nda denge kurmakta zorlan\u0131yor musunuz? Sayfa h\u0131z\u0131n\u0131 d\u00fc\u015f\u00fcren b\u00fcy\u00fck resim dosyalar\u0131 veya her ikon i\u00e7in ayr\u0131 bir HTTP iste\u011fi, kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Bu rehber, Eleventy statik site jenerat\u00f6r\u00fcn\u00fc kullanarak duyarl\u0131 g\u00f6rselleri ve sat\u0131r i\u00e7i SVG&#8217;leri (inline SVG) shortcode&#8217;lar arac\u0131l\u0131\u011f\u0131yla nas\u0131l optimize edece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, kullan\u0131c\u0131lar\u0131n web sitelerinden beklentileri her zamankinden daha y\u00fcksek. H\u0131zl\u0131 y\u00fcklenen, g\u00f6rsel olarak \u00e7ekici ve t\u00fcm cihazlarda sorunsuz \u00e7al\u0131\u015fan web siteleri art\u0131k bir l\u00fcks de\u011fil, bir zorunluluktur. Ancak bu hedeflere ula\u015fmak genellikle b\u00fcy\u00fck bir zorluktur. \u00d6zellikle g\u00f6rseller, bir web sayfas\u0131n\u0131n toplam boyutunun \u00f6nemli bir k\u0131sm\u0131n\u0131 olu\u015fturarak y\u00fckleme s\u00fcrelerini uzatabilir ve mobil kullan\u0131c\u0131lar i\u00e7in veri t\u00fcketimini art\u0131rabilir. Bir yandan \u00e7arp\u0131c\u0131 g\u00f6rsellerle ziyaret\u00e7ilerin dikkatini \u00e7ekmek isterken, di\u011fer yandan site performans\u0131ndan \u00f6d\u00fcn vermek zorunda kalmak, bir\u00e7ok geli\u015ftiricinin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 yayg\u0131n bir ikilemdir.<\/p>\n<p>Peki, bu ikilemi nas\u0131l a\u015fabiliriz? Eleventy gibi modern bir statik site jenerat\u00f6r\u00fc ve onun sundu\u011fu k\u0131sa kodlar (shortcodes) bu noktada devreye giriyor. Geleneksel yakla\u015f\u0131mlarla her g\u00f6rselin farkl\u0131 boyutlar\u0131n\u0131 manuel olarak olu\u015fturmak veya her ikon i\u00e7in ayr\u0131 bir iste\u011fi y\u00f6netmek olduk\u00e7a zaman al\u0131c\u0131 ve hataya a\u00e7\u0131k bir s\u00fcre\u00e7 olabilir. Eleventy shortcode&#8217;lar\u0131, bu tekrarlayan g\u00f6revleri otomatikle\u015ftirerek geli\u015ftirme s\u00fcrecini basitle\u015ftirir ve web sitelerinizin yaln\u0131zca h\u0131zl\u0131 de\u011fil, ayn\u0131 zamanda bak\u0131m\u0131 kolay ve \u00f6l\u00e7eklenebilir olmas\u0131n\u0131 sa\u011flar. Duyarl\u0131 g\u00f6rseller i\u00e7in <code><picture><\/code> ve <code>srcset<\/code> gibi HTML5 \u00f6zelliklerini, SVG&#8217;ler i\u00e7inse sat\u0131r i\u00e7i kullan\u0131m ve optimizasyon tekniklerini tek bir \u015fablon i\u015flevi alt\u0131nda birle\u015ftirebiliriz.<\/p>\n<p>Bu makalede, Eleventy shortcode&#8217;lar\u0131n\u0131n g\u00fcc\u00fcn\u00fc kullanarak web sitelerinizdeki g\u00f6rsel varl\u0131klar\u0131 nas\u0131l d\u00f6n\u00fc\u015ft\u00fcrece\u011finizi, performans\u0131 nas\u0131l art\u0131raca\u011f\u0131n\u0131z\u0131 ve geli\u015ftirme i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 nas\u0131l iyile\u015ftirece\u011finizi ayr\u0131nt\u0131l\u0131 bir \u015fekilde inceleyece\u011fiz. \u0130ster yeni ba\u015flayan bir geli\u015ftirici olun, ister deneyimli bir profesyonel, burada sunulan ad\u0131m ad\u0131m \u00f6rnekler ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla, web projelerinize entegre edebilece\u011finiz pratik \u00e7\u00f6z\u00fcmler bulacaks\u0131n\u0131z. B\u00f6ylece, ziyaret\u00e7ilerinize g\u00f6z al\u0131c\u0131 ve y\u0131ld\u0131r\u0131m h\u0131z\u0131nda bir deneyim sunarken, geli\u015ftirme s\u00fcrecindeki verimlili\u011finizi de maksimize edebileceksiniz. Sayfa h\u0131z\u0131 optimizasyonu ve g\u00f6rsel kalitesi aras\u0131ndaki dengeyi nihayet yakalama zaman\u0131 geldi.<\/p>\n<h2>Eleventy Nedir ve Shortcode&#8217;lar Neden Bu Kadar \u00d6nemli?<\/h2>\n<p>Eleventy (11ty), JavaScript ile yaz\u0131lm\u0131\u015f, h\u0131zl\u0131 ve esnek bir statik site jenerat\u00f6r\u00fcd\u00fcr (SSG). Dinamik i\u00e7erik y\u00f6netim sistemlerinin (CMS) aksine, Eleventy veritaban\u0131 veya sunucu taraf\u0131nda \u00e7al\u0131\u015fma zaman\u0131 gerektirmeyen, do\u011frudan taray\u0131c\u0131da sunulabilecek HTML, CSS ve JavaScript dosyalar\u0131 \u00fcretir. Bu yakla\u015f\u0131m, web sitelerinin y\u00fcklenme h\u0131z\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r, g\u00fcvenlik risklerini azalt\u0131r ve bar\u0131nd\u0131rma maliyetlerini d\u00fc\u015f\u00fcr\u00fcr. Eleventy&#8217;nin en \u00e7ekici \u00f6zelliklerinden biri, farkl\u0131 \u015fablon dillerini (Nunjucks, Liquid, Markdown, EJS vb.) desteklemesi ve geli\u015ftiricilere i\u00e7eriklerini nas\u0131l y\u00f6netecekleri konusunda b\u00fcy\u00fck bir esneklik sunmas\u0131d\u0131r. Web sitelerinin performans\u0131 s\u00f6z konusu oldu\u011funda, Eleventy&#8217;nin statik yap\u0131s\u0131, i\u00e7erik da\u011f\u0131t\u0131m a\u011flar\u0131 (CDN) ile m\u00fckemmel bir uyum sa\u011flayarak global eri\u015filebilirli\u011fi ve h\u0131z\u0131 daha da optimize eder.<\/p>\n<p>Shortcode&#8217;lar ise Eleventy ekosisteminin temel ta\u015flar\u0131ndan biridir ve i\u00e7erik yazarlar\u0131 ile geli\u015ftiriciler aras\u0131ndaki k\u00f6pr\u00fcy\u00fc kurar. Temelde, shortcode&#8217;lar \u015fablon dilleri i\u00e7inde tan\u0131mlanan, belirli bir i\u015flevselli\u011fi yerine getiren \u00f6zel etiketlerdir. \u00d6rne\u011fin, Markdown dosyan\u0131z\u0131n i\u00e7ine <\/p>\n<pre><code>{% image \"src\/image.jpg\", \"Alternatif Metin\" %}<\/pre>\n<p><\/code> gibi basit bir kod par\u00e7ac\u0131\u011f\u0131 yazarak, Eleventy'nin bu kodu \u00e7ok daha karma\u015f\u0131k bir HTML yap\u0131s\u0131na (\u00f6rne\u011fin, duyarl\u0131 bir <code><picture><\/code> etiketi) d\u00f6n\u00fc\u015ft\u00fcrmesini sa\u011flayabilirsiniz. Bu, i\u00e7eri\u011fi yazarken HTML'in karma\u015f\u0131kl\u0131\u011f\u0131ndan soyutlanman\u0131z\u0131 ve daha temiz, daha okunabilir Markdown veya \u015fablon dosyalar\u0131 olu\u015fturman\u0131z\u0131 sa\u011flar.<\/p>\n<p>Shortcode'lar\u0131n \u00f6nemi, tekrarlanabilirli\u011fi ve bak\u0131m\u0131 kolayla\u015ft\u0131rmas\u0131yla daha da belirginle\u015fir. Bir g\u00f6rselin duyarl\u0131 olmas\u0131 i\u00e7in gereken <code><picture><\/code> etiketi, <code>srcset<\/code> \u00f6znitelikleri, farkl\u0131 boyutlar ve formatlar (WebP, AVIF) gibi detaylar\u0131 her seferinde manuel olarak yazmak yerine, bu mant\u0131\u011f\u0131 tek bir shortcode i\u00e7inde kapsayabilirsiniz. Daha sonra bu shortcode'u projenizin herhangi bir yerinde, istedi\u011finiz kadar kullanabilirsiniz. E\u011fer g\u00f6rsel i\u015fleme mant\u0131\u011f\u0131nda bir de\u011fi\u015fiklik yapman\u0131z gerekirse, sadece shortcode'un tan\u0131m\u0131n\u0131 g\u00fcncellemeniz yeterli olur; bu de\u011fi\u015fiklik t\u00fcm kullan\u0131ld\u0131\u011f\u0131 yerlere otomatik olarak yans\u0131r. Bu, hem geli\u015ftirme s\u00fcresinden tasarruf sa\u011flar hem de proje genelinde tutarl\u0131l\u0131k ve hata riskini azalt\u0131r. Ayr\u0131ca, i\u00e7erik yazarlar\u0131n\u0131n teknik detaylara tak\u0131lmadan g\u00f6rselleri kolayca eklemesine olanak tan\u0131r, bu da i\u015f ak\u0131\u015f\u0131n\u0131 h\u0131zland\u0131r\u0131r ve i\u00e7erik \u00fcretimine odaklanmay\u0131 kolayla\u015ft\u0131r\u0131r. Eleventy'nin esnek shortcode yap\u0131s\u0131 sayesinde, sadece g\u00f6rsellerle de\u011fil, inline SVG'lerden \u00f6zel bile\u015fenlere kadar her t\u00fcrl\u00fc dinamik i\u00e7eri\u011fi statik sitelerinize entegre edebilirsiniz, b\u00f6ylece web projelerinizin potansiyelini maksimuma \u00e7\u0131kar\u0131rs\u0131n\u0131z.<\/p>\n<h2>Duyarl\u0131 G\u00f6rseller \u0130\u00e7in Eleventy Shortcode Nas\u0131l Olu\u015fturulur?<\/h2>\n<p>Web performans\u0131n\u0131 art\u0131rman\u0131n ve kullan\u0131c\u0131 deneyimini iyile\u015ftirmenin en etkili yollar\u0131ndan biri, duyarl\u0131 g\u00f6rseller kullanmakt\u0131r. Geleneksel <code><img decoding=\"async\" src=\"image.jpg\" alt=\"A\u00e7\u0131klama\"><\/code> etiketi, t\u00fcm cihazlar i\u00e7in tek bir g\u00f6rsel boyutu sunar ve bu da ya k\u00fc\u00e7\u00fck ekranlarda gereksiz b\u00fcy\u00fck g\u00f6rsellerin indirilmesine ya da b\u00fcy\u00fck ekranlarda pikselli g\u00f6rsellerin g\u00f6r\u00fcnt\u00fclenmesine yol a\u00e7ar. Bu sorunu \u00e7\u00f6zmek i\u00e7in HTML5 ile tan\u0131t\u0131lan <code><picture><\/code> eleman\u0131 ve <code>srcset<\/code> \u00f6zniteli\u011fi, taray\u0131c\u0131n\u0131n ekran boyutuna, \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011fe ve hatta a\u011f h\u0131z\u0131na g\u00f6re en uygun g\u00f6rseli se\u00e7mesine olanak tan\u0131r. Ancak bu yap\u0131lar\u0131 manuel olarak olu\u015fturmak karma\u015f\u0131k ve tekrarlay\u0131c\u0131 bir s\u00fcre\u00e7tir. \u0130\u015fte burada Eleventy shortcode'lar\u0131 devreye girer. Ad\u0131m ad\u0131m, bu karma\u015f\u0131k yap\u0131y\u0131 otomatik olarak \u00fcreten bir shortcode nas\u0131l olu\u015fturaca\u011f\u0131m\u0131z\u0131 inceleyelim:<\/p>\n<h3>Ad\u0131m 1: Eleventy Projesini Kurmak<\/h3>\n<p>E\u011fer hen\u00fcz bir Eleventy projeniz yoksa, h\u0131zl\u0131ca bir ba\u015flang\u0131\u00e7 yapal\u0131m. Terminalinizde a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131rarak yeni bir proje olu\u015fturabilir ve gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckleyebilirsiniz:<\/p>\n<pre><code>\nmkdir my-eleventy-site\ncd my-eleventy-site\nnpm init -y\nnpm install @11ty\/eleventy\n    <\/pre>\n<p><\/code><\/p>\n<p>Daha sonra, projenizin k\u00f6k dizininde <code>.eleventy.js<\/code> ad\u0131nda bir yap\u0131land\u0131rma dosyas\u0131 ve <code>index.md<\/code> gibi bir i\u00e7erik dosyas\u0131 olu\u015fturun. <code>.eleventy.js<\/code> i\u00e7inde <code>eleventy-img<\/code> eklentisini kuraca\u011f\u0131z ve shortcode'umuzu tan\u0131mlayaca\u011f\u0131z.<\/p>\n<pre><code>\n\/\/ .eleventy.js\nmodule.exports = function(eleventyConfig) {\n  \/\/ Shortcode'lar\u0131m\u0131z\u0131 burada tan\u0131mlayaca\u011f\u0131z\n  return {\n    dir: {\n      input: \".\",\n      output: \"_site\"\n    }\n  };\n};\n    <\/pre>\n<p><\/code><\/p>\n<h3>Ad\u0131m 2: G\u00f6rsel \u0130\u015fleme Eklentisini Kurmak<\/h3>\n<p>Farkl\u0131 boyutlarda ve formatlarda g\u00f6rseller \u00fcretmek i\u00e7in <code>eleventy-img<\/code> eklentisini kullanaca\u011f\u0131z. Bu eklenti, g\u00f6rselleri otomatik olarak yeniden boyutland\u0131r\u0131r, s\u0131k\u0131\u015ft\u0131r\u0131r ve modern formatlara (WebP, AVIF) d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Kurulum i\u00e7in:<\/p>\n<pre><code>\nnpm install @11ty\/eleventy-img\n    <\/pre>\n<p><\/code><\/p>\n<h3>Ad\u0131m 3: Temel G\u00f6rsel Shortcode Fonksiyonunu Yazmak<\/h3>\n<p>\u015eimdi <code>.eleventy.js<\/code> dosyam\u0131zda <code>image<\/code> ad\u0131nda bir asenkron shortcode tan\u0131mlayal\u0131m. Bu shortcode, bir kaynak g\u00f6rsel yolu, alternatif metin ve iste\u011fe ba\u011fl\u0131 olarak geni\u015flikler alacak.<\/p>\n<pre><code>\n\/\/ .eleventy.js\nconst Image = require(\"@11ty\/eleventy-img\");\n\nmodule.exports = function(eleventyConfig) {\n  eleventyConfig.addNunjucksAsyncShortcode(\"image\", async function(src, alt, widths = [null], sizes = \"100vw\") {\n    let metadata = await Image(src, {\n      widths: widths,\n      formats: [\"avif\", \"webp\", \"jpeg\"],\n      outputDir: \".\/_site\/img\/\",\n      urlPath: \"\/img\/\"\n    });\n\n    let imageAttributes = {\n      alt,\n      sizes,\n      loading: \"lazy\",\n      decoding: \"async\",\n    };\n\n    return Image.generateHTML(metadata, imageAttributes);\n  });\n\n  return {\n    dir: {\n      input: \".\",\n      output: \"_site\"\n    }\n  };\n};\n    <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki kodda:<\/p>\n<ul>\n<li><code>Image(src, options)<\/code>: Belirtilen g\u00f6rseli i\u015fler ve farkl\u0131 boyutlarda\/formatlarda \u00e7\u0131kt\u0131lar \u00fcretir. <code>widths: [null]<\/code>, orijinal geni\u015fli\u011fi korur, di\u011fer say\u0131lar belirli geni\u015flikleri ifade eder.<\/li>\n<li><code>formats: [\"avif\", \"webp\", \"jpeg\"]<\/code>: G\u00f6rselin hangi formatlarda d\u00f6n\u00fc\u015ft\u00fcr\u00fclece\u011fini belirtir. AVIF ve WebP, JPEG'den daha iyi s\u0131k\u0131\u015ft\u0131rma oranlar\u0131 sunar.<\/li>\n<li><code>outputDir<\/code> ve <code>urlPath<\/code>: \u0130\u015flenmi\u015f g\u00f6rsellerin nereye kaydedilece\u011fini ve web'de hangi URL \u00fczerinden eri\u015filece\u011fini ayarlar.<\/li>\n<li><code>Image.generateHTML(metadata, attributes)<\/code>: \u0130\u015flenmi\u015f g\u00f6rsellerin meta verilerini kullanarak otomatik olarak bir <code><picture><\/code> eleman\u0131 olu\u015fturur. Bu, <code><source><\/code> etiketleri arac\u0131l\u0131\u011f\u0131yla farkl\u0131 formatlar\u0131 ve <code>srcset<\/code> \u00f6zniteliklerini i\u00e7erir.<\/li>\n<li><code>loading: \"lazy\"<\/code>: Taray\u0131c\u0131ya, g\u00f6rselin yaln\u0131zca g\u00f6r\u00fcn\u00fcm alan\u0131na yak\u0131n oldu\u011funda y\u00fcklenmesi talimat\u0131n\u0131 verir, bu da ba\u015flang\u0131\u00e7 y\u00fckleme performans\u0131n\u0131 art\u0131r\u0131r.<\/li>\n<\/ul>\n<h3>Ad\u0131m 4: Shortcode'u Kullanmak<\/h3>\n<p>Art\u0131k Markdown veya Nunjucks \u015fablon dosyalar\u0131n\u0131zda bu shortcode'u kullanabilirsiniz:<\/p>\n<pre><code>\n{# index.md veya .njk dosyan\u0131zda #}\n# Duyarl\u0131 G\u00f6rsel \u00d6rne\u011fi\n\nMerhaba, bu benim web sitemdeki bir g\u00f6rsel:\n\n{% image \"src\/assets\/hero-image.jpg\", \"Bir da\u011f manzaras\u0131\", [300, 600, 900, 1200], \"(min-width: 900px) 900px, 100vw\" %}\n\nBu g\u00f6rsel, farkl\u0131 ekran boyutlar\u0131na g\u00f6re optimize edilmi\u015f olarak y\u00fcklenecektir.\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>src\/assets\/hero-image.jpg<\/code> dosyas\u0131n\u0131 kullan\u0131yoruz. Eleventy, bu g\u00f6rseli 300, 600, 900 ve 1200 piksel geni\u015fliklerinde (ve orijinal geni\u015fli\u011finde e\u011fer listede <code>null<\/code> varsa) WebP, AVIF ve JPEG formatlar\u0131nda i\u015fleyecektir. <code>sizes<\/code> \u00f6zniteli\u011fi, taray\u0131c\u0131ya g\u00f6rselin \u00e7e\u015fitli viewport boyutlar\u0131nda ne kadar yer kaplayaca\u011f\u0131n\u0131 bildirir, bu da do\u011fru <code>srcset<\/code> kayna\u011f\u0131n\u0131n se\u00e7ilmesine yard\u0131mc\u0131 olur. \u00d6rne\u011fin, <code>\"(min-width: 900px) 900px, 100vw\"<\/code> ifadesi, viewport 900 pikselden b\u00fcy\u00fck oldu\u011funda g\u00f6rselin 900 piksel geni\u015fli\u011finde olaca\u011f\u0131n\u0131, aksi takdirde viewport'un %100'\u00fcn\u00fc kaplayaca\u011f\u0131n\u0131 belirtir.<\/p>\n<aside class=\"expert-tip\">\n        Uzman \u0130pucu: <code>eleventy-img<\/code> eklentisi, g\u00f6rsellerinizi WebP ve AVIF gibi modern formatlara d\u00f6n\u00fc\u015ft\u00fcrerek dosya boyutlar\u0131n\u0131 %30-80 oran\u0131nda azaltabilir. Bu da hem sayfa y\u00fckleme h\u0131z\u0131n\u0131 dramatik bir \u015fekilde art\u0131r\u0131r hem de kullan\u0131c\u0131lar\u0131n veri kullan\u0131m\u0131n\u0131 optimize eder. Ayr\u0131ca, <code>loading=\"lazy\"<\/code> eklemek, kritik olmayan g\u00f6rsellerin yaln\u0131zca kullan\u0131c\u0131 g\u00f6r\u00fcnt\u00fcleme alan\u0131na yakla\u015ft\u0131\u011f\u0131nda y\u00fcklenmesini sa\u011flayarak ilk sayfa y\u00fckleme s\u00fcresini iyile\u015ftirir. Bu kombinasyonla performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilirsiniz.<br \/>\n    <\/aside>\n<p>Bu shortcode, g\u00f6rsellerinizi dinamik olarak i\u015fleyerek ve duyarl\u0131 HTML \u00e7\u0131kt\u0131lar\u0131 \u00fcreterek web sitenizin performans\u0131n\u0131 ve eri\u015filebilirli\u011fini art\u0131r\u0131r. Art\u0131k her g\u00f6rsel i\u00e7in elle birden fazla boyut ve format olu\u015fturma derdinden kurtuldunuz. Eleventy, sizin yerinize bu karma\u015f\u0131k i\u015fi otomatikle\u015ftiriyor.<\/p>\n<h2>Sat\u0131r \u0130\u00e7i SVG (Inline SVG) Eleventy ile Nas\u0131l Optimize Edilir?<\/h2>\n<p>Vekt\u00f6r grafikleri (SVG), web tasar\u0131m\u0131nda esneklik, \u00f6l\u00e7eklenebilirlik ve netlik sunan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. \u00d6zellikle ikonlar, logolar ve basit ill\u00fcstrasyonlar i\u00e7in idealdirler. Sat\u0131r i\u00e7i SVG (inline SVG), SVG kodunun do\u011frudan HTML belgesine g\u00f6m\u00fclmesi anlam\u0131na gelir. Bu yakla\u015f\u0131m, ayr\u0131 bir HTTP iste\u011fi yapma ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r, bu da sayfa y\u00fckleme h\u0131z\u0131n\u0131 art\u0131r\u0131r. Ayr\u0131ca, sat\u0131r i\u00e7i SVG'ler CSS ile kolayca stilize edilebilir, JavaScript ile manip\u00fcle edilebilir ve eri\u015filebilirlik a\u00e7\u0131s\u0131ndan daha fazla esneklik sunar. Ancak, b\u00fcy\u00fck veya optimize edilmemi\u015f SVG dosyalar\u0131n\u0131 do\u011frudan HTML'e yap\u0131\u015ft\u0131rmak, kod karma\u015fas\u0131na ve dosya boyutunun gereksiz yere artmas\u0131na neden olabilir. Eleventy shortcode'lar\u0131, bu sorunu \u00e7\u00f6zerek SVG'lerinizi hem optimize etmenize hem de kolayca y\u00f6netmenize olanak tan\u0131r.<\/p>\n<h3>Ad\u0131m 1: SVG Dosyas\u0131n\u0131 Okuyan Bir Shortcode Tan\u0131mlama<\/h3>\n<p>\u0130lk ad\u0131m, bir SVG dosyas\u0131n\u0131n i\u00e7eri\u011fini okuyup HTML i\u00e7ine yerle\u015ftirecek basit bir shortcode olu\u015fturmakt\u0131r. Bunun i\u00e7in Node.js'in dosya sistemi (<code>fs<\/code>) mod\u00fcl\u00fcn\u00fc kullanaca\u011f\u0131z.<\/p>\n<pre><code>\n\/\/ .eleventy.js\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\nmodule.exports = function(eleventyConfig) {\n  eleventyConfig.addShortcode(\"inlineSvg\", function(filename, className = \"\") {\n    let filePath = path.join(\".\/src\/assets\/svg\/\", filename + \".svg\"); \/\/ SVG dosyalar\u0131n\u0131z\u0131n yolu\n    if (!fs.existsSync(filePath)) {\n      console.warn(<code>[11ty] SVG dosyas\u0131 bulunamad\u0131: ${filePath}<\/code>);\n      return <code><!-- SVG dosyas\u0131 bulunamad\u0131: ${filename} --><\/code>;\n    }\n    let svgContent = fs.readFileSync(filePath, \"utf8\");\n\n    \/\/ \u0130ste\u011fe ba\u011fl\u0131 olarak, SVG'ye dinamik bir s\u0131n\u0131f ekleyebiliriz\n    if (className) {\n      svgContent = svgContent.replace(\/<svg(.*?)>\/, <code><svg$1 class=\"${className}\"><\/code>);\n    }\n\n    return svgContent;\n  });\n\n  \/\/ Di\u011fer shortcode'lar ve ayarlar...\n  return {\n    dir: {\n      input: \".\",\n      output: \"_site\"\n    }\n  };\n};\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu shortcode:<\/p>\n<ul>\n<li><code>filename<\/code>: G\u00f6m\u00fclecek SVG dosyas\u0131n\u0131n ad\u0131n\u0131 (uzant\u0131s\u0131z) al\u0131r.<\/li>\n<li><code>filePath<\/code>: SVG dosyas\u0131n\u0131n tam yolunu olu\u015fturur. Varsay\u0131lan olarak <code>.\/src\/assets\/svg\/<\/code> klas\u00f6r\u00fcne bakacakt\u0131r.<\/li>\n<li><code>fs.readFileSync<\/code>: SVG dosyas\u0131n\u0131n i\u00e7eri\u011fini senkron olarak okur.<\/li>\n<li>Dinamik s\u0131n\u0131f ekleme: \u0130ste\u011fe ba\u011fl\u0131 olarak, SVG'nin k\u00f6k <code><svg><\/code> etiketine bir CSS s\u0131n\u0131f\u0131 ekleyerek stilizasyon esnekli\u011fi sa\u011flar.<\/li>\n<\/ul>\n<h3>Ad\u0131m 2: SVG'yi Optimize Etme (\u0130leri D\u00fczey)<\/h3>\n<p>B\u00fcy\u00fck SVG dosyalar\u0131, genellikle tasar\u0131m programlar\u0131ndan d\u0131\u015fa aktar\u0131ld\u0131klar\u0131nda gereksiz meta veriler, yorumlar ve bo\u015fluklar i\u00e7erebilir. Bu, dosya boyutunu art\u0131r\u0131r. Bu sorunu \u00e7\u00f6zmek i\u00e7in <code>svgo<\/code> gibi bir SVG optimizasyon k\u00fct\u00fcphanesini shortcode'umuzla entegre edebiliriz.<\/p>\n<pre><code>\nnpm install svgo\n    <\/pre>\n<p><\/code><\/p>\n<p>\u015eimdi shortcode'umuzu g\u00fcncelleyelim:<\/p>\n<pre><code>\n\/\/ .eleventy.js\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst { optimize } = require(\"svgo\"); \/\/ svgo'yu i\u00e7e aktar\u0131n\n\nmodule.exports = function(eleventyConfig) {\n  eleventyConfig.addShortcode(\"inlineSvg\", function(filename, className = \"\", uniqueId = \"\") {\n    let filePath = path.join(\".\/src\/assets\/svg\/\", filename + \".svg\");\n    if (!fs.existsSync(filePath)) {\n      console.warn(<code>[11ty] SVG dosyas\u0131 bulunamad\u0131: ${filePath}<\/code>);\n      return <code><!-- SVG dosyas\u0131 bulunamad\u0131: ${filename} --><\/code>;\n    }\n    let svgContent = fs.readFileSync(filePath, \"utf8\");\n\n    \/\/ SVG'yi optimize et\n    const result = optimize(svgContent, {\n      path: filePath, \/\/ svgo'ya dosya yolunu bildir\n      \/\/ Burada optimizasyon eklentilerini \u00f6zelle\u015ftirebilirsiniz\n      \/\/ Varsay\u0131lan olarak bir\u00e7ok optimizasyon a\u00e7\u0131kt\u0131r\n    });\n\n    if (result.error) {\n      console.error(<code>[11ty] SVG optimizasyon hatas\u0131: ${result.error}<\/code>);\n      return svgContent; \/\/ Optimizasyon ba\u015far\u0131s\u0131z olursa orijinal i\u00e7eri\u011fi d\u00f6nd\u00fcr\n    }\n    svgContent = result.data;\n\n    \/\/ Dinamik s\u0131n\u0131f ekleme\n    if (className) {\n      svgContent = svgContent.replace(\/<svg(.*?)>\/, <code><svg$1 class=\"${className}\"><\/code>);\n    }\n\n    \/\/ Dinamik ID ekleme (\u00f6zellikle birden fazla ayn\u0131 SVG kullan\u0131ld\u0131\u011f\u0131nda \u00e7ak\u0131\u015fmay\u0131 \u00f6nlemek i\u00e7in)\n    if (uniqueId) {\n        svgContent = svgContent.replace(\/<svg(.*?)>\/, <code><svg$1 id=\"${uniqueId}\"><\/code>);\n    }\n\n\n    return svgContent;\n  });\n\n  \/\/ Di\u011fer shortcode'lar ve ayarlar...\n  return {\n    dir: {\n      input: \".\",\n      output: \"_site\"\n    }\n  };\n};\n    <\/pre>\n<p><\/code><\/p>\n<aside class=\"expert-tip\">\n        Uzman \u0130pucu: <code>svgo<\/code> k\u00fct\u00fcphanesi ile SVG optimizasyonu yaparken, SVG'lerinizin do\u011fru \u015fekilde g\u00f6r\u00fcnt\u00fclendi\u011finden emin olmak i\u00e7in dikkatli olun. Bazen optimizasyonlar, \u00f6zellikle filtreler veya karma\u015f\u0131k animasyonlar i\u00e7eren SVG'lerde istenmeyen yan etkilere neden olabilir. Test etmek ve gerekirse <code>svgo<\/code> yap\u0131land\u0131rmas\u0131nda baz\u0131 eklentileri devre d\u0131\u015f\u0131 b\u0131rakmak \u00f6nemlidir. \u00d6rne\u011fin, <code>removeViewBox<\/code> eklentisi baz\u0131 durumlarda sorun yaratabilir.<br \/>\n    <\/aside>\n<h3>Ad\u0131m 3: Shortcode'u Kullanmak<\/h3>\n<p>Art\u0131k \u015fablonlar\u0131n\u0131zda SVG ikonlar\u0131n\u0131z\u0131 kolayca ve optimize edilmi\u015f bir \u015fekilde kullanabilirsiniz:<\/p>\n<pre><code>\n{# index.md veya .njk dosyan\u0131zda #}\n# Inline SVG \u00d6rne\u011fi\n\nWeb sitemizdeki arama ikonu:\n\n{% inlineSvg \"search-icon\", \"icon icon--search\" %}\n\nSosyal medya ikonumuz:\n\n{% inlineSvg \"twitter-logo\", \"social-icon\" %}\n\n{% inlineSvg \"settings-icon\", \"header-icon\", \"settingsIconUnique\" %}\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu sayede, <code>src\/assets\/svg\/search-icon.svg<\/code> gibi bir dosyan\u0131n i\u00e7eri\u011fi do\u011frudan HTML'inize yerle\u015ftirilecek ve <code>icon icon--search<\/code> CSS s\u0131n\u0131f\u0131na sahip olacakt\u0131r. <code>settings-icon<\/code> \u00f6rne\u011finde ise hem bir s\u0131n\u0131f hem de benzersiz bir ID eklenmi\u015ftir. Bu yakla\u015f\u0131m, ikonlar\u0131 HTML'inize ayr\u0131 ayr\u0131 istekler yapmadan entegre etmenizi sa\u011flarken, ayn\u0131 zamanda CSS ile kolayca boyutland\u0131rma, renklendirme ve di\u011fer stil de\u011fi\u015fikliklerini uygulaman\u0131za olanak tan\u0131r. B\u00f6ylece hem performans hem de geli\u015ftirme esnekli\u011fi a\u00e7\u0131s\u0131ndan \u00f6nemli avantajlar elde edersiniz.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131: E-ticaret Sitesi ve Blog i\u00e7in Vaka Analizi<\/h2>\n<p>Eleventy shortcode'lar\u0131n\u0131n duyarl\u0131 g\u00f6rseller ve sat\u0131r i\u00e7i SVG optimizasyonundaki potansiyelini daha iyi anlamak i\u00e7in, bu tekniklerin ger\u00e7ek d\u00fcnya projelerinde nas\u0131l uygulanabilece\u011fine dair iki vaka analizine g\u00f6z atal\u0131m. Bu senaryolar, performans sorunlar\u0131na pratik \u00e7\u00f6z\u00fcmler sunarken geli\u015ftirici i\u015f ak\u0131\u015f\u0131n\u0131 nas\u0131l iyile\u015ftirebilece\u011fimizi g\u00f6zler \u00f6n\u00fcne serecektir.<\/p>\n<h3>Vaka 1: Y\u00fcksek \u00c7\u00f6z\u00fcn\u00fcrl\u00fckl\u00fc \u00dcr\u00fcn G\u00f6rselleriyle E-ticaret Sitesi<\/h3>\n<h4>Problem:<\/h4>\n<p>Bir e-ticaret sitesi, binlerce \u00fcr\u00fcne ve her \u00fcr\u00fcn\u00fcn birden fazla y\u00fcksek \u00e7\u00f6z\u00fcn\u00fcrl\u00fckl\u00fc foto\u011fraf\u0131na sahiptir (\u00fcr\u00fcn \u00e7ekimleri, farkl\u0131 a\u00e7\u0131lar, detay foto\u011fraflar\u0131). Bu g\u00f6rsellerin hepsi genellikle st\u00fcdyo kalitesinde oldu\u011fu i\u00e7in \u00e7ok b\u00fcy\u00fck dosya boyutlar\u0131na sahiptir. Sitenin \u00fcr\u00fcn sayfalar\u0131nda bu g\u00f6rsellerin kullan\u0131lmas\u0131, \u00f6zellikle mobil cihazlarda sayfa y\u00fckleme s\u00fcrelerini dramatik \u015fekilde uzat\u0131yor, kullan\u0131c\u0131 deneyimini k\u00f6t\u00fcle\u015ftiriyor ve terk oranlar\u0131n\u0131 art\u0131r\u0131yordu. Geli\u015ftiriciler, her g\u00f6rsel i\u00e7in manuel olarak farkl\u0131 boyutlar ve WebP\/AVIF formatlar\u0131 olu\u015fturmak zorunda kalmaktan \u015fikayet\u00e7iydi, bu da s\u00fcrekli bir i\u015f y\u00fck\u00fc yarat\u0131yordu.<\/p>\n<h4>\u00c7\u00f6z\u00fcm: Otomatik G\u00f6rsel \u0130\u015fleme Shortcode'u ile Duyarl\u0131 G\u00f6rseller<\/h4>\n<p>Bu problemi \u00e7\u00f6zmek i\u00e7in Eleventy'nin <code>image<\/code> shortcode'u ve <code>eleventy-img<\/code> eklentisi kullan\u0131ld\u0131. <code>.eleventy.js<\/code> yap\u0131land\u0131rma dosyas\u0131nda, her \u00fcr\u00fcn g\u00f6rselinin farkl\u0131 geni\u015fliklerde (\u00f6rn. 300px, 600px, 900px, 1200px) ve modern formatlarda (WebP, AVIF) otomatik olarak i\u015flenmesini sa\u011flayan bir shortcode tan\u0131mland\u0131. Bu shortcode ayr\u0131ca, <code>loading=\"lazy\"<\/code> \u00f6zniteli\u011fini ve <code><picture><\/code> eleman\u0131n\u0131 kullanarak taray\u0131c\u0131ya en uygun g\u00f6rseli se\u00e7me yetene\u011fini kazand\u0131rd\u0131.<\/p>\n<pre><code>\n\/\/ .eleventy.js - Basitle\u015ftirilmi\u015f \u00f6rnek\nconst Image = require(\"@11ty\/eleventy-img\");\neleventyConfig.addNunjucksAsyncShortcode(\"productImage\", async function(src, alt, sizes) {\n  let metadata = await Image(src, {\n    widths: [300, 600, 900, 1200, \"auto\"], \/\/ \"auto\" orijinal geni\u015fli\u011fi korur\n    formats: [\"avif\", \"webp\", \"jpeg\"],\n    outputDir: \".\/_site\/img\/products\/\",\n    urlPath: \"\/img\/products\/\"\n  });\n  let imageAttributes = {\n    alt,\n    sizes,\n    loading: \"lazy\",\n    decoding: \"async\",\n  };\n  return Image.generateHTML(metadata, imageAttributes);\n});\n    <\/pre>\n<p><\/code><\/p>\n<p>\u00dcr\u00fcn \u015fablonlar\u0131nda, g\u00f6rseller \u015fu \u015fekilde \u00e7a\u011fr\u0131ld\u0131:<\/p>\n<pre><code>\n{# product.njk #}\n<div class=\"product-gallery\">\n  {% for image in product.images %}\n    {% productImage image.src, product.name ~ \" - \" ~ image.altText, \"(min-width: 768px) 50vw, 100vw\" %}\n  {% endfor %}\n<\/div>\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu entegrasyon sayesinde:<\/p>\n<ul>\n<li><strong>Performans Art\u0131\u015f\u0131:<\/strong> Sayfa y\u00fckleme h\u0131zlar\u0131 %60'a kadar iyile\u015fti. Mobil kullan\u0131c\u0131lar i\u00e7in daha k\u00fc\u00e7\u00fck g\u00f6rseller sunularak veri t\u00fcketimi azald\u0131.<\/li>\n<li><strong>Geli\u015ftirici Verimlili\u011fi:<\/strong> G\u00f6rsel i\u015fleme s\u00fcreci tamamen otomatikle\u015fti. Geli\u015ftiricilerin g\u00f6rselleri manuel olarak boyutland\u0131rmas\u0131na gerek kalmad\u0131, bu da yeni \u00fcr\u00fcn ekleme ve mevcut \u00fcr\u00fcnleri g\u00fcncelleme s\u00fcrecini h\u0131zland\u0131rd\u0131.<\/li>\n<li><strong>SEO \u0130yile\u015fmesi:<\/strong> Daha h\u0131zl\u0131 y\u00fcklenen sayfalar ve optimize edilmi\u015f g\u00f6rseller, arama motoru s\u0131ralamalar\u0131nda olumlu etki yaratt\u0131.<\/li>\n<li><strong>Kullan\u0131c\u0131 Deneyimi:<\/strong> G\u00f6zle g\u00f6r\u00fcl\u00fcr \u015fekilde daha h\u0131zl\u0131 ve sorunsuz bir al\u0131\u015fveri\u015f deneyimi sunuldu.<\/li>\n<\/ul>\n<h3>Vaka 2: Dinamik \u0130kon Setleri ve Blog Yaz\u0131lar\u0131 i\u00e7in Sat\u0131r \u0130\u00e7i SVG<\/h3>\n<h4>Problem:<\/h4>\n<p>Bir blog platformu, makalelerde s\u0131k\u00e7a kullan\u0131lan \u00e7e\u015fitli ikonlara (oklar, sosyal medya ikonlar\u0131, kategorilere \u00f6zel ikonlar) sahipti. Her ikon i\u00e7in ayr\u0131 bir PNG veya JPEG dosyas\u0131 kullan\u0131l\u0131yordu, bu da her bir ikon i\u00e7in ayr\u0131 bir HTTP iste\u011fi anlam\u0131na geliyordu. \u0130konlar\u0131n renkleri veya boyutlar\u0131 zaman zaman de\u011fi\u015fti\u011finde, tasar\u0131mc\u0131lar\u0131n her bir ikon i\u00e7in yeni bir dosya olu\u015fturup y\u00fcklemesi gerekiyordu. Bu durum, hem geli\u015ftirme hem de bak\u0131m s\u00fcrecini yava\u015flat\u0131yordu ve esneklik eksikli\u011fi yarat\u0131yordu.<\/p>\n<h4>\u00c7\u00f6z\u00fcm: Inline SVG Shortcode'u ile Optimize Edilmi\u015f \u0130kon Y\u00f6netimi<\/h4>\n<p>Bu blog platformunda, performans\u0131 art\u0131rmak ve ikon y\u00f6netimini basitle\u015ftirmek amac\u0131yla sat\u0131r i\u00e7i SVG shortcode'u uyguland\u0131. <code>svgo<\/code> k\u00fct\u00fcphanesi ile entegre edilmi\u015f bir <code>icon<\/code> shortcode'u olu\u015fturuldu. Bu shortcode, SVG dosyas\u0131n\u0131n i\u00e7eri\u011fini okuyup optimize ederek do\u011frudan HTML'e yerle\u015ftiriyor ve dinamik olarak CSS s\u0131n\u0131flar\u0131 ekleme imkan\u0131 sunuyordu.<\/p>\n<pre><code>\n\/\/ .eleventy.js - Basitle\u015ftirilmi\u015f \u00f6rnek\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst { optimize } = require(\"svgo\");\n\neleventyConfig.addShortcode(\"icon\", function(iconName, className = \"\") {\n  let filePath = path.join(\".\/src\/assets\/icons\/\", iconName + \".svg\");\n  if (!fs.existsSync(filePath)) {\n    return <code><!-- \u0130kon bulunamad\u0131: ${iconName} --><\/code>;\n  }\n  let svgContent = fs.readFileSync(filePath, \"utf8\");\n\n  const result = optimize(svgContent, { path: filePath });\n  if (result.error) {\n    return svgContent;\n  }\n  svgContent = result.data;\n\n  if (className) {\n    svgContent = svgContent.replace(\/<svg(.*?)>\/, <code><svg$1 class=\"${className}\"><\/code>);\n  }\n  return svgContent;\n});\n    <\/pre>\n<p><\/code><\/p>\n<p>Blog yaz\u0131lar\u0131 ve \u015fablonlarda ikonlar \u015fu \u015fekilde kullan\u0131ld\u0131:<\/p>\n<pre><code>\n{# article.njk #}\n<h2>Yaz\u0131 Ba\u015fl\u0131\u011f\u0131 {% icon \"arrow-right\", \"heading-icon\" %}<\/h2>\n\n<button class=\"share-button\">\n  {% icon \"share\", \"button-icon\" %} Payla\u015f\n<\/button>\n\n<footer>\n  Telif Hakk\u0131 {% icon \"copyright\", \"footer-icon\" %} 2023\n<\/footer>\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00e7\u00f6z\u00fcm\u00fcn faydalar\u0131:<\/p>\n<ul>\n<li><strong>HTTP \u0130stek Azaltma:<\/strong> Her ikon i\u00e7in ayr\u0131 HTTP iste\u011fi ortadan kalkt\u0131, bu da sayfa y\u00fckleme h\u0131z\u0131n\u0131 do\u011frudan art\u0131rd\u0131.<\/li>\n<li><strong>Esnek Stilizasyon:<\/strong> CSS ile ikonlar\u0131n rengi, boyutu ve di\u011fer \u00f6zellikleri kolayca de\u011fi\u015ftirilebildi. \u00d6rne\u011fin, <code>.heading-icon { fill: blue; width: 20px; height: 20px; }<\/code> gibi basit CSS kurallar\u0131 yeterli oldu.<\/li>\n<li><strong>Kolay Bak\u0131m:<\/strong> \u0130konlarda bir de\u011fi\u015fiklik gerekti\u011finde, yaln\u0131zca SVG dosyas\u0131n\u0131 g\u00fcncellemek veya CSS s\u0131n\u0131f\u0131n\u0131 de\u011fi\u015ftirmek yeterli oldu. Her ikon i\u00e7in yeni bir dosya olu\u015fturma zahmeti ortadan kalkt\u0131.<\/li>\n<li><strong>\u00d6l\u00e7eklenebilirlik:<\/strong> SVG'ler vekt\u00f6r tabanl\u0131 oldu\u011fu i\u00e7in her t\u00fcrl\u00fc ekran boyutunda pikselle\u015fmeden m\u00fckemmel g\u00f6r\u00fcn\u00fcrl\u00fck sa\u011flad\u0131.<\/li>\n<\/ul>\n<p>Her iki vaka analizi de Eleventy shortcode'lar\u0131n\u0131n, web projelerindeki karma\u015f\u0131k g\u00f6rsel ve ikon y\u00f6netimi sorunlar\u0131na nas\u0131l zarif ve etkili \u00e7\u00f6z\u00fcmler sunabilece\u011fini a\u00e7\u0131k\u00e7a g\u00f6stermektedir. Bu teknikler, geli\u015ftiricilere daha verimli \u00e7al\u0131\u015fma imkan\u0131 sunarken, son kullan\u0131c\u0131lara daha h\u0131zl\u0131 ve g\u00f6rsel olarak \u00e7ekici bir deneyim sa\u011flar.<\/p>\n<h2>\u0130leri D\u00fczey Optimizasyonlar ve \u0130pu\u00e7lar\u0131: Gelece\u011fe Haz\u0131rl\u0131k<\/h2>\n<p>Eleventy shortcode'lar\u0131 ile duyarl\u0131 g\u00f6rseller ve sat\u0131r i\u00e7i SVG'lerin temel entegrasyonunu \u00f6\u011frendikten sonra, web sitenizin performans\u0131n\u0131 daha da ileri ta\u015f\u0131mak ve gelece\u011fe haz\u0131rlamak i\u00e7in baz\u0131 ileri d\u00fczey optimizasyon tekniklerine ve ipu\u00e7lar\u0131na odaklanabiliriz. Bu stratejiler, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli projelerde veya daha iddial\u0131 performans hedefleri olan web sitelerinde fark yaratabilir.<\/p>\n<h3>1. Lazy Loading (Tembel Y\u00fckleme) Entegrasyonu<\/h3>\n<p>G\u00f6rseller i\u00e7in <code>loading=\"lazy\"<\/code> \u00f6zniteli\u011fini kullanmak, taray\u0131c\u0131ya, g\u00f6rselin yaln\u0131zca kullan\u0131c\u0131n\u0131n g\u00f6r\u00fcn\u00fcm alan\u0131na yakla\u015ft\u0131\u011f\u0131nda y\u00fcklenmesi talimat\u0131n\u0131 verir. Bu, \u00f6zellikle uzun sayfalarda veya \u00e7ok say\u0131da g\u00f6rsel i\u00e7eren sayfalarda ilk y\u00fckleme s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r. <code>eleventy-img<\/code> shortcode'unuzda bu zaten otomatik olarak ayarlanm\u0131\u015ft\u0131r, ancak <code>if<\/code> ko\u015fuluyla sadece belirli g\u00f6rseller i\u00e7in etkinle\u015ftirebilirsiniz. Daha geli\u015fmi\u015f kontrol i\u00e7in Intersection Observer API'\u0131n\u0131 kullanarak kendi lazy loading mekanizman\u0131z\u0131 da kurabilirsiniz, ancak modern taray\u0131c\u0131lar\u0131n yerle\u015fik deste\u011fi genellikle yeterlidir.<\/p>\n<pre><code>\n\/\/ Shortcode i\u00e7inde loading=\"lazy\" varsay\u0131lan olarak gelir\n<img decoding=\"async\" loading=\"lazy\" src=\"image.jpg\" alt=\"Description\">\n    <\/pre>\n<p><\/code><\/p>\n<p>Kritik \u00f6neme sahip, yani ilk g\u00f6r\u00fcnt\u00fcde mutlaka g\u00f6r\u00fcnmesi gereken (Largest Contentful Paint - LCP aday\u0131) g\u00f6rseller i\u00e7in <code>loading=\"eager\"<\/code> veya <code>fetchpriority=\"high\"<\/code> kullanmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz. Bu, taray\u0131c\u0131ya bu g\u00f6rsellerin m\u00fcmk\u00fcn olan en k\u0131sa s\u00fcrede y\u00fcklenmesi gerekti\u011fini i\u015faret eder.<\/p>\n<pre><code>\n\/\/ LCP aday\u0131 g\u00f6rseller i\u00e7in\n{% image \"src\/assets\/lcp-hero.jpg\", \"Anasayfa kahraman g\u00f6rseli\", [900, 1600], \"100vw\", \"eager\", \"high\" %}\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu, shortcode fonksiyonunuza <code>loading<\/code> ve <code>fetchpriority<\/code> parametrelerini ekleyerek kolayca yap\u0131labilir.<\/p>\n<h3>2. G\u00f6rsel CDN (\u0130\u00e7erik Da\u011f\u0131t\u0131m A\u011f\u0131) Kullan\u0131m\u0131<\/h3>\n<p>B\u00fcy\u00fck \u00f6l\u00e7ekli web siteleri i\u00e7in g\u00f6rselleri bar\u0131nd\u0131rmak ve sunmak amac\u0131yla bir g\u00f6rsel CDN kullanmak, performans\u0131 daha da art\u0131rabilir. Cloudinary, Imgix veya Akamai gibi hizmetler, g\u00f6rselleri d\u00fcnya genelindeki sunucular\u0131nda \u00f6nbelle\u011fe alarak kullan\u0131c\u0131lara co\u011frafi olarak daha yak\u0131n sunuculardan teslim eder. Bu, gecikmeyi (latency) azalt\u0131r ve y\u00fckleme s\u00fcrelerini h\u0131zland\u0131r\u0131r. <code>eleventy-img<\/code> eklentisi do\u011frudan CDN entegrasyonu sunmazken, i\u015flenmi\u015f g\u00f6rsellerin URL'lerini CDN alan ad\u0131n\u0131za y\u00f6nlendirecek \u015fekilde yap\u0131land\u0131rabilirsiniz. \u00d6rne\u011fin, <code>urlPath<\/code> \u00f6zelli\u011fini bir CDN URL'sine ayarlayarak:<\/p>\n<pre><code>\n\/\/ .eleventy.js\nlet metadata = await Image(src, {\n  \/\/ ... di\u011fer ayarlar\n  urlPath: \"https:\/\/cdn.example.com\/img\/\", \/\/ CDN URL'si\n});\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu, t\u00fcm g\u00f6rsellerinizin CDN \u00fczerinden sunulmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>3. <code>picture<\/code> Eleman\u0131nda <code>source<\/code> S\u0131ralamas\u0131 Stratejileri<\/h3>\n<p><code><picture><\/code> eleman\u0131nda <code><source><\/code> etiketlerinin s\u0131ras\u0131 \u00f6nemlidir. Taray\u0131c\u0131lar, <code><source><\/code> etiketlerini yukar\u0131dan a\u015fa\u011f\u0131ya do\u011fru de\u011ferlendirir ve destekledi\u011fi ilk format\u0131 kullan\u0131r. Bu nedenle, genellikle en modern ve verimli formatlar\u0131 (AVIF, WebP) en \u00fcste, daha geni\u015f taray\u0131c\u0131 deste\u011fine sahip ancak daha az verimli formatlar\u0131 (JPEG) ise en alta koymal\u0131s\u0131n\u0131z:<\/p>\n<pre><code>\n<picture>\n  <source srcset=\"image.avif\" type=\"image\/avif\">\n  <source srcset=\"image.webp\" type=\"image\/webp\">\n  <img decoding=\"async\" src=\"image.jpeg\" alt=\"Yedek g\u00f6rsel\">\n<\/picture>\n    <\/pre>\n<p><\/code><\/p>\n<p><code>eleventy-img<\/code> eklentisi bu s\u0131ralamay\u0131 varsay\u0131lan olarak zaten en iyi pratiklere g\u00f6re yapar.<\/p>\n<h3>4. SVG Sprite'lar\u0131 Yerine Shortcode'lar\u0131n Avantajlar\u0131\/Dezavantajlar\u0131<\/h3>\n<p>Sat\u0131r i\u00e7i SVG shortcode'lar\u0131, SVG sprite'lar\u0131na bir alternatif sunar. SVG sprite'lar\u0131, t\u00fcm SVG'leri tek bir dosyada birle\u015ftirir ve referanslar arac\u0131l\u0131\u011f\u0131yla kullan\u0131l\u0131r. Shortcode'lar\u0131n avantajlar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>Daha Az Karma\u015f\u0131kl\u0131k:<\/strong> Her SVG'yi ayr\u0131 bir dosya olarak y\u00f6netmek ve yaln\u0131zca ihtiya\u00e7 duyulanlar\u0131 getirmek daha basittir.<\/li>\n<li><strong>Kolay Stilizasyon:<\/strong> Her SVG'ye ayr\u0131 ayr\u0131 CSS s\u0131n\u0131f\u0131 eklemek ve stil vermek daha kolayd\u0131r.<\/li>\n<li><strong>Mod\u00fclerlik:<\/strong> \u0130konlar\u0131 ba\u011f\u0131ms\u0131z mod\u00fcller olarak d\u00fc\u015f\u00fcnebilir ve projenizin herhangi bir yerine kolayca entegre edebilirsiniz.<\/li>\n<\/ul>\n<p>Dezavantajlar\u0131 ise, \u00e7ok say\u0131da k\u00fc\u00e7\u00fck SVG kullan\u0131l\u0131yorsa, her biri HTML'e g\u00f6m\u00fcld\u00fc\u011f\u00fcnde HTML dosya boyutunun artabilmesidir. Sprite'lar ise bu durumda genellikle daha k\u00fc\u00e7\u00fck bir toplam HTML \u00e7\u0131kt\u0131s\u0131 ve daha az HTTP iste\u011fi sa\u011flayabilir. Se\u00e7im, projenizin b\u00fcy\u00fckl\u00fc\u011f\u00fcne, SVG say\u0131s\u0131na ve y\u00f6netim tercihinize ba\u011fl\u0131d\u0131r.<\/p>\n<h3>5. Eleventy Data Cascades ile G\u00f6rsel Meta Bilgilerini Y\u00f6netme<\/h3>\n<p>Daha b\u00fcy\u00fck projelerde, g\u00f6rsellerle ilgili meta bilgileri (\u00f6rne\u011fin, alternatif metinler, a\u00e7\u0131klamalar) do\u011frudan \u015fablon dosyas\u0131na yazmak yerine, Eleventy'nin veri basamaklama (Data Cascades) \u00f6zelli\u011fini kullanarak y\u00f6netebilirsiniz. \u00d6rne\u011fin, bir <code>_data\/images.json<\/code> dosyas\u0131 olu\u015fturup t\u00fcm g\u00f6rsel bilgilerini burada saklayabilir ve shortcode'unuzun bu verilere eri\u015fmesini sa\u011flayabilirsiniz. Bu, i\u00e7eri\u011fi veriden ay\u0131r\u0131r ve daha d\u00fczenli bir yap\u0131 sa\u011flar.<\/p>\n<pre><code>\n\/\/ _data\/images.json\n{\n  \"heroImage\": {\n    \"src\": \"src\/assets\/hero.jpg\",\n    \"alt\": \"B\u00fcy\u00fcleyici bir da\u011f manzaras\u0131\"\n  },\n  \"logo\": {\n    \"src\": \"src\/assets\/logo.png\",\n    \"alt\": \"\u015eirket logosu\"\n  }\n}\n    <\/pre>\n<p><\/code><\/p>\n<pre><code>\n{# \u015eablonunuzda #}\n{% image images.heroImage.src, images.heroImage.alt, [600, 1200], \"100vw\" %}\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu ileri d\u00fczey teknikler, Eleventy ile web sitelerinizin performans\u0131n\u0131, bak\u0131m\u0131n\u0131 ve \u00f6l\u00e7eklenebilirli\u011fini daha da art\u0131rman\u0131za yard\u0131mc\u0131 olacakt\u0131r. Her bir optimizasyonu dikkatle de\u011ferlendirerek projenizin \u00f6zel ihtiya\u00e7lar\u0131na en uygun \u00e7\u00f6z\u00fcmleri uygulayabilirsiniz.<\/p>\n<h2>Sonu\u00e7: Eleventy ile Performans ve Geli\u015ftirici Deneyimi<\/h2>\n<p>Bu makalede Eleventy shortcode'lar\u0131n\u0131n, modern web geli\u015ftirmenin en kritik alanlar\u0131ndan ikisi olan duyarl\u0131 g\u00f6rseller ve sat\u0131r i\u00e7i SVG y\u00f6netimi i\u00e7in nas\u0131l g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcm sundu\u011funu ayr\u0131nt\u0131l\u0131 olarak inceledik. Gerek g\u00f6rsel optimizasyonuyla sayfa y\u00fckleme h\u0131zlar\u0131n\u0131 art\u0131rma, gerekse SVG'leri dinamik olarak optimize ederek geli\u015ftirme s\u00fcrecini basitle\u015ftirme olsun, Eleventy shortcode'lar\u0131 web projelerinize hem performans hem de geli\u015ftirici deneyimi a\u00e7\u0131s\u0131ndan \u00f6nemli avantajlar kat\u0131yor.<\/p>\n<p>Eleventy'nin esnekli\u011fi ve shortcode'lar\u0131n\u0131n mod\u00fcler yap\u0131s\u0131 sayesinde, karma\u015f\u0131k g\u00f6rsel i\u015fleme ve SVG entegrasyonu g\u00f6revlerini otomatikle\u015ftirerek, geli\u015ftiricilerin daha yarat\u0131c\u0131 ve verimli olmalar\u0131n\u0131 sa\u011fl\u0131yoruz. Art\u0131k her g\u00f6rsel i\u00e7in farkl\u0131 boyutlar veya her ikon i\u00e7in ayr\u0131 bir HTTP iste\u011fiyle u\u011fra\u015fmak yerine, bu mant\u0131\u011f\u0131 bir kez tan\u0131mlay\u0131p her yerde tekrar kullanabiliriz. Bu da sadece zaman kazand\u0131rmakla kalm\u0131yor, ayn\u0131 zamanda web sitelerinin daha h\u0131zl\u0131, daha g\u00fcvenli ve daha \u00f6l\u00e7eklenebilir olmas\u0131n\u0131 sa\u011flayarak kullan\u0131c\u0131 deneyimini do\u011frudan iyile\u015ftiriyor. Eleventy ile gelece\u011fin web'ini in\u015fa etmeye haz\u0131rs\u0131n\u0131z!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<ol>\n<li>\n<p><strong>Eleventy shortcode'lar\u0131 yaln\u0131zca g\u00f6rseller i\u00e7in mi kullan\u0131l\u0131r?<\/strong><\/p>\n<p>Hay\u0131r, Eleventy shortcode'lar\u0131 olduk\u00e7a esnektir ve herhangi bir HTML, JavaScript veya hatta dinamik i\u00e7erik olu\u015fturmak i\u00e7in kullan\u0131labilir. \u00d6rne\u011fin, \u00f6zel bile\u015fenler, metin bloklar\u0131, dinamik i\u00e7erik listeleri veya API'lerden veri \u00e7ekme gibi bir\u00e7ok farkl\u0131 senaryoda shortcode'lardan faydalanabilirsiniz. G\u00f6rsel ve SVG optimizasyonu, shortcode'lar\u0131n g\u00fcc\u00fcn\u00fc g\u00f6steren sadece pop\u00fcler \u00f6rneklerdir.<\/p>\n<\/li>\n<li>\n<p><strong><code>eleventy-img<\/code> eklentisini kullanmak zorunlu mu?<\/strong><\/p>\n<p>Duyarl\u0131 g\u00f6rseller olu\u015fturmak ve farkl\u0131 formatlara d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in <code>eleventy-img<\/code> eklentisini kullanmak zorunlu de\u011fildir, ancak \u015fiddetle tavsiye edilir. Bu eklenti, g\u00f6rsel i\u015fleme s\u00fcrecini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde basitle\u015ftirir ve performans\u0131 art\u0131ran bir\u00e7ok modern teknik (WebP, AVIF, <code>srcset<\/code>, <code><picture><\/code>) otomatik olarak uygular. Alternatif olarak, <code>sharp<\/code> gibi bir g\u00f6rsel i\u015fleme k\u00fct\u00fcphanesini kendiniz entegre ederek kendi g\u00f6rsel i\u015fleme mant\u0131\u011f\u0131n\u0131z\u0131 yazabilirsiniz, ancak bu daha fazla \u00e7aba gerektirir.<\/p>\n<\/li>\n<li>\n<p><strong>SVG shortcode'lar\u0131 ile SVG sprite'lar aras\u0131ndaki temel fark nedir?<\/strong><\/p>\n<p>SVG shortcode'lar\u0131, her SVG dosyas\u0131n\u0131n i\u00e7eri\u011fini do\u011frudan HTML'e g\u00f6mer. Bu, her ikon i\u00e7in ayr\u0131 bir HTTP iste\u011fini ortadan kald\u0131r\u0131r ve CSS ile kolay stilizasyon sa\u011flar. SVG sprite'lar ise, t\u00fcm SVG'leri tek bir b\u00fcy\u00fck SVG dosyas\u0131nda birle\u015ftirir ve <code><use><\/code> etiketi ile referans verilerek kullan\u0131l\u0131r. Sprite'lar, \u00e7ok say\u0131da k\u00fc\u00e7\u00fck ikon kullan\u0131ld\u0131\u011f\u0131nda daha az toplam dosya boyutu ve daha az HTTP iste\u011fi sa\u011flayabilirken, shortcode'lar daha kolay y\u00f6netim ve ba\u011f\u0131ms\u0131z stilizasyon esnekli\u011fi sunar. Se\u00e7im, projenin \u00f6l\u00e7e\u011fine ve y\u00f6netim tercihine ba\u011fl\u0131d\u0131r.<\/p>\n<\/li>\n<li>\n<p><strong>Shortcode'lar sayfa y\u00fckleme h\u0131z\u0131n\u0131 ger\u00e7ekten art\u0131r\u0131r m\u0131?<\/strong><\/p>\n<p>Evet, do\u011fru uyguland\u0131\u011f\u0131nda shortcode'lar sayfa y\u00fckleme h\u0131z\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. Duyarl\u0131 g\u00f6rseller i\u00e7in kullan\u0131lan shortcode'lar, taray\u0131c\u0131n\u0131n ekran boyutuna en uygun g\u00f6rseli indirmesini sa\u011flayarak gereksiz veri indirimini \u00f6nler. Sat\u0131r i\u00e7i SVG shortcode'lar\u0131 ise, ayr\u0131 HTTP isteklerini ortadan kald\u0131rarak sunucuya yap\u0131lan \u00e7a\u011fr\u0131 say\u0131s\u0131n\u0131 azalt\u0131r. Ayr\u0131ca, <code>loading=\"lazy\"<\/code> gibi \u00f6znitelikler ve modern g\u00f6rsel formatlar\u0131 (WebP, AVIF) kullanarak dosya boyutunu k\u00fc\u00e7\u00fcltmek, toplam sayfa boyutunu azalt\u0131r ve bu da y\u00fckleme h\u0131z\u0131n\u0131 do\u011frudan etkiler.<\/p>\n<\/li>\n<\/ol>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Web sitelerinizin y\u00fckleme h\u0131z\u0131 ve g\u00f6rsel kalitesi aras\u0131nda denge kurmakta zorlan\u0131yor musunuz? Sayfa h\u0131z\u0131n\u0131 d\u00fc\u015f\u00fcren b\u00fcy\u00fck resim dosyalar\u0131&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-35788","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Eleventy Shortcodes ile Duyarl\u0131 G\u00f6rseller ve Sat\u0131r \u0130\u00e7i SVG: H\u0131zl\u0131 Ba\u015flang\u0131\u00e7<\/title>\n<meta name=\"description\" content=\"Web sitelerinizin y\u00fckleme h\u0131z\u0131 ve g\u00f6rsel kalitesi aras\u0131nda denge kurmakta zorlan\u0131yor musunuz? Sayfa h\u0131z\u0131n\u0131 d\u00fc\u015f\u00fcren b\u00fcy\u00fck resim dosyalar\u0131 veya her ikon i\u00e7in ayr\u0131 bir HTTP iste\u011fi, kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Bu rehber, Eleventy statik site jenerat\u00f6r\u00fcn\u00fc kullanarak duyarl\u0131 g\u00f6rselleri ve sat\u0131r i\u00e7i SVG&#039;leri (inline SVG) shortcode&#039;lar arac\u0131l\u0131\u011f\u0131yla nas\u0131l optimize edece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Eleventy Shortcodes ile Duyarl\u0131 G\u00f6rseller ve Sat\u0131r \u0130\u00e7i SVG: H\u0131zl\u0131 Ba\u015flang\u0131\u00e7\" \/>\n<meta property=\"og:description\" content=\"Web sitelerinizin y\u00fckleme h\u0131z\u0131 ve g\u00f6rsel kalitesi aras\u0131nda denge kurmakta zorlan\u0131yor musunuz? Sayfa h\u0131z\u0131n\u0131 d\u00fc\u015f\u00fcren b\u00fcy\u00fck resim dosyalar\u0131 veya her ikon i\u00e7in ayr\u0131 bir HTTP iste\u011fi, kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Bu rehber, Eleventy statik site jenerat\u00f6r\u00fcn\u00fc kullanarak duyarl\u0131 g\u00f6rselleri ve sat\u0131r i\u00e7i SVG&#039;leri (inline SVG) shortcode&#039;lar arac\u0131l\u0131\u011f\u0131yla nas\u0131l optimize edece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-03T19:01:06+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"25 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Eleventy Shortcodes ile Duyarl\u0131 G\u00f6rseller ve Sat\u0131r \u0130\u00e7i SVG: H\u0131zl\u0131 Ba\u015flang\u0131\u00e7\",\"datePublished\":\"2025-12-03T19:01:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/\"},\"wordCount\":4309,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/\",\"name\":\"Eleventy Shortcodes ile Duyarl\u0131 G\u00f6rseller ve Sat\u0131r \u0130\u00e7i SVG: H\u0131zl\u0131 Ba\u015flang\u0131\u00e7\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-03T19:01:06+00:00\",\"description\":\"Web sitelerinizin y\u00fckleme h\u0131z\u0131 ve g\u00f6rsel kalitesi aras\u0131nda denge kurmakta zorlan\u0131yor musunuz? Sayfa h\u0131z\u0131n\u0131 d\u00fc\u015f\u00fcren b\u00fcy\u00fck resim dosyalar\u0131 veya her ikon i\u00e7in ayr\u0131 bir HTTP iste\u011fi, kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Bu rehber, Eleventy statik site jenerat\u00f6r\u00fcn\u00fc kullanarak duyarl\u0131 g\u00f6rselleri ve sat\u0131r i\u00e7i SVG'leri (inline SVG) shortcode'lar arac\u0131l\u0131\u011f\u0131yla nas\u0131l optimize edece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Eleventy Shortcodes ile Duyarl\u0131 G\u00f6rseller ve Sat\u0131r \u0130\u00e7i SVG: H\u0131zl\u0131 Ba\u015flang\u0131\u00e7\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Eleventy Shortcodes ile Duyarl\u0131 G\u00f6rseller ve Sat\u0131r \u0130\u00e7i SVG: H\u0131zl\u0131 Ba\u015flang\u0131\u00e7","description":"Web sitelerinizin y\u00fckleme h\u0131z\u0131 ve g\u00f6rsel kalitesi aras\u0131nda denge kurmakta zorlan\u0131yor musunuz? Sayfa h\u0131z\u0131n\u0131 d\u00fc\u015f\u00fcren b\u00fcy\u00fck resim dosyalar\u0131 veya her ikon i\u00e7in ayr\u0131 bir HTTP iste\u011fi, kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Bu rehber, Eleventy statik site jenerat\u00f6r\u00fcn\u00fc kullanarak duyarl\u0131 g\u00f6rselleri ve sat\u0131r i\u00e7i SVG'leri (inline SVG) shortcode'lar arac\u0131l\u0131\u011f\u0131yla nas\u0131l optimize edece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/","og_locale":"tr_TR","og_type":"article","og_title":"Eleventy Shortcodes ile Duyarl\u0131 G\u00f6rseller ve Sat\u0131r \u0130\u00e7i SVG: H\u0131zl\u0131 Ba\u015flang\u0131\u00e7","og_description":"Web sitelerinizin y\u00fckleme h\u0131z\u0131 ve g\u00f6rsel kalitesi aras\u0131nda denge kurmakta zorlan\u0131yor musunuz? Sayfa h\u0131z\u0131n\u0131 d\u00fc\u015f\u00fcren b\u00fcy\u00fck resim dosyalar\u0131 veya her ikon i\u00e7in ayr\u0131 bir HTTP iste\u011fi, kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Bu rehber, Eleventy statik site jenerat\u00f6r\u00fcn\u00fc kullanarak duyarl\u0131 g\u00f6rselleri ve sat\u0131r i\u00e7i SVG'leri (inline SVG) shortcode'lar arac\u0131l\u0131\u011f\u0131yla nas\u0131l optimize edece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.","og_url":"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-03T19:01:06+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"25 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Eleventy Shortcodes ile Duyarl\u0131 G\u00f6rseller ve Sat\u0131r \u0130\u00e7i SVG: H\u0131zl\u0131 Ba\u015flang\u0131\u00e7","datePublished":"2025-12-03T19:01:06+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/"},"wordCount":4309,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/","url":"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/","name":"Eleventy Shortcodes ile Duyarl\u0131 G\u00f6rseller ve Sat\u0131r \u0130\u00e7i SVG: H\u0131zl\u0131 Ba\u015flang\u0131\u00e7","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-03T19:01:06+00:00","description":"Web sitelerinizin y\u00fckleme h\u0131z\u0131 ve g\u00f6rsel kalitesi aras\u0131nda denge kurmakta zorlan\u0131yor musunuz? Sayfa h\u0131z\u0131n\u0131 d\u00fc\u015f\u00fcren b\u00fcy\u00fck resim dosyalar\u0131 veya her ikon i\u00e7in ayr\u0131 bir HTTP iste\u011fi, kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Bu rehber, Eleventy statik site jenerat\u00f6r\u00fcn\u00fc kullanarak duyarl\u0131 g\u00f6rselleri ve sat\u0131r i\u00e7i SVG'leri (inline SVG) shortcode'lar arac\u0131l\u0131\u011f\u0131yla nas\u0131l optimize edece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/eleventy-shortcodes-ile-duyarli-gorseller-ve-satir-ici-svg-hizli-baslangic\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Eleventy Shortcodes ile Duyarl\u0131 G\u00f6rseller ve Sat\u0131r \u0130\u00e7i SVG: H\u0131zl\u0131 Ba\u015flang\u0131\u00e7"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35788","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=35788"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35788\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35788"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}