diff --git a/app/Console/Commands/ImportHtmlTemplates.php b/app/Console/Commands/ImportHtmlTemplates.php
new file mode 100644
index 0000000..59e2c44
--- /dev/null
+++ b/app/Console/Commands/ImportHtmlTemplates.php
@@ -0,0 +1,190 @@
+ '{text.company_name}',
+ 'Trunçgil' => '{text.company_name}',
+ 'tel:+' => 'tel:{setting.phone}',
+ 'mailto:' => 'mailto:{setting.email}',
+ '© 2025' => '© {date.year}',
+ ];
+
+ public function handle()
+ {
+ $path = public_path('html');
+
+ if (!File::exists($path)) {
+ $this->error("Klasör bulunamadı: $path");
+ return;
+ }
+
+ $files = File::files($path);
+ $this->info(count($files) . " adet HTML dosyası bulundu. İşlem başlıyor...");
+
+ foreach ($files as $file) {
+ if ($file->getExtension() !== 'html') continue;
+
+ $this->processFile($file);
+ }
+
+ $this->info("Tüm işlemler başarıyla tamamlandı!");
+ }
+
+ protected function processFile($file)
+ {
+ $filename = $file->getFilenameWithoutExtension();
+ $content = File::get($file->getPathname());
+ $this->line("İşleniyor: $filename");
+
+ // HTML Parse İşlemi
+ // Hataları gizle (HTML5 etiketlerinde bazen uyarı verebilir)
+ libxml_use_internal_errors(true);
+ $dom = new DOMDocument();
+ // UTF-8 karakter sorunu yaşamamak için hack
+ // mb_convert_encoding ile içeriğin UTF-8 olduğundan emin oluyoruz
+ $content = mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8');
+ $dom->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
+ libxml_clear_errors();
+
+ $xpath = new DOMXPath($dom);
+
+ // 1. HEADER ÇIKARTMA
+ $headerNodes = $xpath->query('//header');
+ if ($headerNodes->length > 0) {
+ $headerHtml = $this->getInnerHtml($headerNodes->item(0));
+ $this->createHeaderTemplate($filename, $headerHtml);
+ }
+
+ // 2. FOOTER ÇIKARTMA
+ $footerNodes = $xpath->query('//footer');
+ if ($footerNodes->length > 0) {
+ $footerHtml = $this->getInnerHtml($footerNodes->item(0));
+ $this->createFooterTemplate($filename, $footerHtml);
+ }
+
+ // 3. SECTIONS (BODY İÇİNDEKİLER)
+ // Header ve Footer haricindeki sectionları bul
+ $sections = $xpath->query('//section');
+ foreach ($sections as $index => $section) {
+ $sectionHtml = $this->getInnerHtml($section);
+
+ // ID varsa al yoksa oluştur
+ $sectionId = $section->getAttribute('id');
+ if (empty($sectionId)) {
+ $sectionId = 'section-' . ($index + 1);
+ }
+
+ // Eğer section çok kısaysa atla (boş sectionlar için)
+ if (strlen(strip_tags($sectionHtml)) < 10) continue;
+
+ $this->createSectionTemplate($filename, $sectionId, $sectionHtml);
+ }
+ }
+
+ protected function createHeaderTemplate($source, $html)
+ {
+ $html = $this->processHtmlContent($html);
+
+ HeaderTemplate::updateOrCreate(
+ ['title' => ucfirst($source) . ' Header'],
+ [
+ 'html_content' => $html,
+ 'is_active' => true,
+ 'default_data' => []
+ ]
+ );
+ }
+
+ protected function createFooterTemplate($source, $html)
+ {
+ $html = $this->processHtmlContent($html);
+
+ FooterTemplate::updateOrCreate(
+ ['title' => ucfirst($source) . ' Footer'],
+ [
+ 'html_content' => $html,
+ 'is_active' => true,
+ 'default_data' => []
+ ]
+ );
+ }
+
+ protected function createSectionTemplate($source, $sectionId, $html)
+ {
+ $html = $this->processHtmlContent($html);
+ $title = ucfirst($source) . ' - ' . ucfirst(str_replace(['-', '_'], ' ', $sectionId));
+
+ SectionTemplate::updateOrCreate(
+ ['title' => $title],
+ [
+ 'html_content' => $html,
+ 'is_active' => true,
+ 'default_data' => []
+ ]
+ );
+ }
+
+ /**
+ * HTML İçeriğini temizler, asset yollarını düzeltir ve placeholderları yerleştirir
+ */
+ protected function processHtmlContent($html)
+ {
+ // 1. Asset Yollarını Düzelt (assets/img -> /html/assets/img)
+ // Public/html altında olduğu için absolute path veriyoruz
+ $html = str_replace('src="assets/', 'src="/html/assets/', $html);
+ $html = str_replace('href="assets/', 'href="/html/assets/', $html);
+ $html = str_replace("src='assets/", "src='/html/assets/", $html);
+
+ // 2. Linkleri Düzelt (index.html -> /)
+ $html = str_replace('href="index.html"', 'href="/"', $html);
+
+ // 3. Placeholder Değişimi (Basit string replace)
+ foreach ($this->replacements as $search => $replace) {
+ $html = str_replace($search, $replace, $html);
+ }
+
+ return $html;
+ }
+
+ /**
+ * DOMNode'un HTML içeriğini string olarak alır
+ */
+ protected function getInnerHtml($node)
+ {
+ $innerHTML = '';
+ $children = $node->childNodes;
+ foreach ($children as $child) {
+ $innerHTML .= $node->ownerDocument->saveHTML($child);
+ }
+ return $innerHTML;
+ }
+}
+