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

Bu blogdaki popüler yayınlar

Online CV oluşturucu siteler 2025 tam liste detaylı anlatım

Kemik Tozu Üretimi ile Para Kazanma

Küçük Yumurta, Büyük Kâr: Bıldırcın Yumurtası Yetiştiriciliğinde Altın Rehber