Drupal ile E-Ticaret Sitesi Kurulumu: Adım Adım Kılavuz + Kodlarla Destekli
Drupal, sadece bir içerik yönetim sistemi değil; aynı zamanda sağlam ve genişletilebilir yapısı sayesinde profesyonel e-ticaret platformları oluşturmak için de idealdir. Bu rehberde, Drupal Commerce modülü ile bir e-ticaret sitesi nasıl kurulur, hem pratik hem de kod temelli örneklerle açıklıyoruz.
1. Gerekli Kurulumlar
Sunucu Gereksinimleri
- PHP 8.1+
- MySQL 5.7 veya MariaDB 10.3+
- Apache/Nginx
- Composer (zorunlu)
- Drupal 10 (önerilen)
2. Drupal Commerce Modülünün Kurulumu
composer create-project drupal/recommended-project drupal-ecommerce
cd drupal-ecommerce
composer require drupal/commerce
Drupal'ı Başlat
cd web
php -S localhost:8888
Tarayıcıda http://localhost:8888
adresine giderek kurulum sihirbazını takip edin.
3. Commerce Kurulumu ve Yapılandırma
Drupal Commerce; ürün, fiyat, envanter, sipariş, ödeme gibi modülleri içerir. Kurulumdan sonra:
- Eklentiler > Commerce sekmesine gidin.
- Gerekli modülleri etkinleştirin: Commerce, Commerce Cart, Commerce Checkout, Commerce Product, Commerce Payment vb.
4. Ürün Türü Oluşturma
Yönetim > Yapılandırma > Ürün türleri > Yeni ürün türü ekle
Ürün Adı: “Tişört”
Alanlar:
- Renk (Liste)
- Beden (Liste)
- Stok (Tamsayı)
- Açıklama (Uzun metin)
// Custom field örneği
$field = FieldStorageConfig::create([
'field_name' => 'field_stok',
'entity_type' => 'commerce_product',
'type' => 'integer',
]);
$field->save();
5. Temel HTML ile Ürün Sayfası Şablonu (Twig)
Twig şablonu (commerce-product.html.twig
) içine özel HTML:
<div class="product-card">
<h2>{{ product.title }}</h2>
<p>{{ product.field_aciklama.value }}</p>
<strong>{{ product.variations.entity.price.number }} {{ product.variations.entity.price.currency_code }}</strong>
<form action="/cart/add" method="POST">
<input type="hidden" name="product_id" value="{{ product.product_id }}">
<button class="btn btn-success">Sepete Ekle</button>
</form>
</div>
6. PHP ile Özel Sepet Düğmesi (Form API)
Drupal’da PHP ile özel form oluşturabiliriz:
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
class CustomAddToCartForm extends FormBase {
public function getFormId() {
return 'custom_add_to_cart_form';
}
public function buildForm(array $form, FormStateInterface $form_state) {
$form['quantity'] = [
'#type' => 'number',
'#title' => $this->t('Adet'),
'#default_value' => 1,
];
$form['submit'] = [
'#type' => 'submit',
'#value' => $this->t('Sepete Ekle'),
];
return $form;
}
public function submitForm(array &$form, FormStateInterface $form_state) {
\Drupal::messenger()->addMessage('Ürün sepete eklendi!');
// Sepet işlem kodu buraya gelir
}
}
7. Ödeme Ağ Geçidi Entegrasyonu (Örn: PayTR)
Drupal Commerce, ödeme ağ geçitlerini plugin yapısı ile entegre eder. Örneğin PayTR için özel PHP plugin modülü yazılabilir.
namespace Drupal\commerce_paytr\Plugin\Commerce\PaymentGateway;
use Drupal\commerce_payment\Plugin\Commerce\PaymentGateway\SupportsAuthorizeInterface;
use Drupal\commerce_payment\Plugin\Commerce\PaymentGatewayBase;
/**
* PayTR ödeme ağ geçidi.
*
* @CommercePaymentGateway(
* id = "paytr_gateway",
* label = "PayTR",
* display_label = "PayTR Ödeme",
* forms = {
* "offsite-payment" = "Drupal\commerce_paytr\Form\PaytrForm"
* },
* )
*/
class PaytrGateway extends PaymentGatewayBase implements SupportsAuthorizeInterface {
public function authorize(...) {
// PayTR API bağlantı kodları
}
}
8. HTML Tabanlı Ödeme Sayfası Tasarımı
<form method="POST" action="https://www.paytr.com/odeme">
<input type="hidden" name="merchant_id" value="XXXXXX" />
<input type="hidden" name="amount" value="14900" />
<input type="hidden" name="email" value="musteri@mail.com" />
<input type="submit" class="btn btn-warning" value="Ödeme Yap" />
</form>
9. Tema Entegrasyonu (Bootstrap + HTML)
composer require drupal/bootstrap5
Temanızı etkinleştirin ve HTML sayfaları Bootstrap sınıflarıyla modernleştirin:
<div class="container mt-4">
<div class="row">
<div class="col-md-4">
<img src="/sites/default/files/urun.jpg" class="img-fluid" />
</div>
<div class="col-md-8">
<h3 class="mb-3">Ürün Adı</h3>
<p>Açıklama...</p>
<button class="btn btn-primary">Sepete Ekle</button>
</div>
</div>
</div>
10. SEO ve Performans
- URL Alias kullan:
/urun/ti-sort-kirmizi
- Metatag modülü ile SEO başlık ve açıklama gir
- Önbellekleme ve GZIP aktif olsun
Sonuç
Drupal Commerce, PHP gücünü HTML esnekliğiyle birleştirerek profesyonel e-ticaret çözümleri üretmek isteyenler için ideal bir sistem sunar. Ürün tanımlamadan ödeme sistemine kadar her adımı özelleştirebilir, modern arayüzlerle kullanıcı deneyimini iyileştirebilirsiniz..
Yorumlar
Yorum Gönder