statik HTML sayfaları tekrardan azaltılması

8 Cevap php

Ben statik HTML sayfaları bir demet oluşan bir web sitesi var. Açıkçası bu (başlık, menü, vb) arasında çoğaltılması çok şey var. Ben kullanmayı planlıyorsanız hosting şirketi hakkında bir şey biliyorum ki, PHP destekler. Muhtemelen PHP # çeşit mekanizması içerir sağlar, ama bunu kullanmak için HTML sayfaları yapmak için gereken ne değişir?

Örneğin, ben böyle bir sayfa olduğunu varsayalım

index.html

<html>
  <head></head>
  <body>
    <h1>My Common Header</h1>
  </body>
</html>

Açıkçası ben kendi dosyasına ortak kısmını taşımak gerekir:

header.html

<h1>My Common Header</h1>

Yukarıdaki örnekte verilen (ve tüm dosyalar aynı dizinde olduğunuzu varsayarak):

  • Ne header.html dahil almak için vücut etiketi içinde eklerim?
  • Ben bir. Php dosyası olduğunu belirtmek için bazı özel etiketler index.html yeniden adlandırmak ya da eklemek gerekir mi?
  • Ben HEADER.html herhangi bir değişiklik yapmak gerekir mi?

Update: Ben burada amaç en düşük sürtünme statik HTML dosyaları arasında tekrarını azaltmak anlamına gelir bulmak için basitçe olduğunu vurgulamak istiyorum. Ben henüz ben dosyalarını barındıran olacak sunucu (IIS / Apache) ne tür bilmiyorum çünkü sunucu tarafı yol içerir inmek için biraz isteksiz ve içerip açık veya kapalı olacak. Ben bu işi yapmak mümkün olacak kullanılabilir olacağını tahmin edebilirsiniz tek şey, çünkü sadece ben PHP doğru çekildi. Yanıt için teşekkürler.

Thanks, Donal

8 Cevap

Aradığınız include (or one of its derivative such as include_once, require, require_once) vardır:

header.php

<h1>My Common Header</h1>

index.php

<html>
  <head></head>
  <body>
    <?php include('header.php'); ?>
  </body>
</html>

Ve böylece, örneğin altbilgi için.

Bu işlevselliği almak için PHP kullanmak gerekmez, ve olası güvenlik kaygıları bunu yapmak için genellikle kötü bir fikir. Esasen, bir nükleer bomba ile bir sivrisinek vurmaya ediyoruz. Eğer dinamik bir dil kullanarak değilseniz, o zaman içerir sunucu tarafı arıyoruz.

IIS, örneğin:

<!--#include virtual="file.inc"-->

Bu özellik genellikle varsayılan olarak kapalıdır gibi sık sık onları kullanmak için sunucuyu yapılandırmak zorunda farkında olun. IIS ve Apache desteği sunucu tarafı içerir, ancak farklı yapılandırmaları kullanın.

Daha fazla bilgi burada bulabilirsiniz:

Server Side Includes

EDIT: Ben sadece diğer dosyalar da dahil olmak üzere sadece PHP kullanarak, PHP kullanmak için kötü bir fikir olduğu anlamına gelmez. Bu PHP işlevselliği gerekli değildir zaman güvenlik sorunları için potansiyel dolayısıyla, değil gerektiğinde karışımı içine PHP getirerek büyük bir saldırı yüzey oluşturur.

EDIT2: Ben size çünkü büyüklükte bir hedef olmayacak varsaymak kötü bir fikir olduğunu düşünüyorum, ve böylece güvenliğini göz ardı edebilirsiniz. Çoğu site otomatik solucanlar tarafından tehlikeye ve malware barındıran spam zombiler, ya da korsan yazılım / medya sunucuları haline getirilir. Apart bulaşmasını başkalarıyla karışma sonunda olabilir gerçeğinden, sitenizin kara listede olabilir ve bant genişliği geçkin ücretleri size gerçek para mal olabilir. Biz dolar yüzlerce veya binlerce bahsediyoruz.

Eğer küçük bir site sırf size bir hedef daha az yapmaz. Sadece internet üzerinde olmak size bir hedef yapar.

Tamamen sunucu üzerinde yapıyor unut.

Eğer really yapmak istediğiniz tüm bazı statik sayfaları korumak eğer - ve hiç gerçekten PHP kullanmak zorunda beklemiyoruz - Ben sadece oluşturmak izin ve şablonları yönetecek Dreamweaver, bunu yapardım ve ucunda değişken içeriği.

Gereksiz içerir. Hiçbir çiftleşmiş motoru gerekli. (Bunlar başarmak için çalışıyoruz ne için abartılı olur.)

. Önce indeksi dosya uzantılarını değiştirmek ve olmaya başlık olmalıdır php, sonra bunu yapabilirsiniz:

<html>
<head></head>
    <body>
        <? include 'header.php'; ?>
    </body>
</html>

Ve header.php sadece var

<h1>My Common Header</h1>

Sadece "include" kullanabilirsiniz ise, "ihtiyaç", ya da bir sayfada şeyler eklemek için "Require_once" direktifleri, sizin gibi bir şablon motoru ile daha iyi bir şans olabilir Smarty

Başlığı için bir içerme dosyası kullanırken ben birkaç yıl geriye sorunla karşılaştığı zaman ben farklı bir yol gitti bir çözümdür: Ben tüm sayfaları ben oldukça yaygın olduğunu varsayalım aynı düzeni (;-) kullanmak istedim. Ben sadece content Sayfanın değiştirmek istedim Böylece, ben sayfa içeriği dahil ve üstbilgi ve altbilgi içeren bir ana şablon dosya alır dosyayı yaptı. Dahil edilecek sayfa ayarı için ben sadece dahil almak için sayfayı tutan bir değişken ayarlamak oldukça küçük php komut dosyaları oluşturmak için başvurdu. Bazı durumlarda sayfası da bir GET parametresi tarafından adlandırılmış alabilirsiniz. Tabii ki bu o parametrenin doğru doğrulama gerektirir. Uzun vadede ben artık HTML kendisi hakkında endişelenmenize gerek yok - Ben yaptığım dahil olsun küçük parçacıkları (tabii kendileri için tam olması gereken) mal olduğunu.

A muhtemelen daha iyi bir çözüm mevcut bir şablon çerçeve kullanmak olacaktır. Nedeniyle geri vardı contraints sonra ben bunu yapmak mümkün değildi, ama yine aynı sorunla karşı karşıya ben onu yapardı.

Statik HTML sayfaları için biraz ve kesinlikle kullanmanızı tavsiye ederim geri gün içinde, ben ("<- - file.inc! # Sanal include =" ">" Mystere Man tarafından yukarıda anlatılan yöntem) SSIS kullanılan söyledi.

Bunun için destek sunucu üzerinde etkin olup olmayacağı konusunda herhangi bir belirsizlik ortadan kaldırmak istiyorsanız Ancak, yerel olarak ayrı dosyalar geliştirmek ve sunucuya yüklemeden önce çıkan dosyaların içine onları birleştirmek olabilir. Dreamweaver, örneğin kesintisiz bir şekilde bunu destekler.

Ya da öylesine bir "header.html" dosyasının içeriği ile {{{include-başlık}}} yerine, dosyaları belirteçleri üzerine basit dize değiştirme yaparak seçtiğiniz dilde oldukça basit bir script ile bunu kendiniz yapmak ve olabilecek üzerinde.

Edit

Oops! Nedense ben Dreamweaver hakkında aynı nota sahip Clayton'un yazı görmedim.

Tamam, bu sadece bir yarı-programlama ile ilgili soru.

PHP (), kullanımı gerçekten çok kolay olan içerir var, ama gelecekte sürdürülebilirlik katkıda bulunmaz. Ben özellikle büyük siteler için bunu tavsiye etmem.

Ben profesyonelim çerçeveler değilim. Ben CodeIgniter, CakePHP ve hatta Smarty şablon motoru kullandım. Eğer PHP konusunda ciddi iseniz, CakePHP'ye düşünüyorsunuz. Eğer ana içerikleri başlık, altbilgi, css, javascript outside çerçeve bu "düzen" kavramı vardır; örneğin "hakkımızda" sayfası için, içerik gibi bir şey olurdu:

Bu size hakkımızda şeyler bir sürü söyler bir hakkımızda sayfası ...

CakePHP bu içerik, bu alır ve etrafında düzen sarar:

header
css
javascript
Bu size hakkımızda şeyler bir sürü söyler bir hakkımızda sayfası ...
footer