Merhaba,
WHMCS'deki bilgi bankası özelliğini kullanarak, ürün kategori sayfalarınızın altına "X ile ilgili Makaleler" gibi bir bölüm ekleme yolunu anlatıyorum.
Örnek:
Sanal sunucu sayfanız var. Bu sayfanın en altına sanal sunucu ile ilgili bilgi bankasında hazırladığınız makalelerin 3 tanesini sergilemek istiyorsunuz. Bu rehber, bunu nasıl yapabileceğinizi anlatmakta.
Öncelikle her sayfa için ayrı ayrı işlemleri yapmanız gerekmekte.
1- SQL dosyası import edin. Buradan sql dosyasını indirip phpMyAdmin aracılığıyla (ya da ssh) WHMCS'nizin bulunduğu veritabanına import edin. Bu tablo, önizleme bannerlarının yollarının tutulduğu sqldir. Burada kaydı bulunmayan article gözükmez.
2- Sayfanızın PHP dosyasını düzenleyin.
PHP dosyasının içerisini düzenlemeden önce makalelerini listeleyeceğiniz kategorinin id'si gerekmekte. Bunu da aşağıdaki ssde kare içine aldığım bölümden anlayabilirsiniz.
Görüldüğü gibi "Sanal Sunucu" kategorisinin id'si 1 miş.
Kategori id'sini öğrendikten sonra yapmamız gereken, php dosyasının içine kodu eklemektir.
<?php
define("CLIENTAREA", true);
require("init.php");
$ca = new WHMCS_ClientArea();
$ca->setPageTitle("Sanal Sunucu");
$ca->initPage();
$ca->setTemplate('sanal-sunucu');
$ca->output();Örnek olarak bu benim kullandığım sayfa oluşturma kodudur. Bu sayfada makaleleri listeleyebilmek için kodu aşağıdakine çevirmemiz gerekiyor.
<?php
use WHMCS\Database\Capsule;
define("CLIENTAREA", true);
require("init.php");
$ca = new WHMCS_ClientArea();
$ca->setPageTitle("Sanal Sunucu");
$ca->initPage();
$cat_id = '1';
$kbarticles_id = Capsule::table('tblknowledgebaselinks')->where('categoryid', $cat_id)->get();
$kbarrays = array();
foreach ($kbarticles_id as $kbarticle_id) {
$kbarticles = Capsule::table('tblknowledgebase')->where('tblknowledgebase.id', $kbarticle_id->articleid)->limit('3')->join('knowledgebase_banners', 'knowledgebase_banners.articleid', '=', 'tblknowledgebase.id')->select('knowledgebase_banners.image_dir', 'tblknowledgebase.*')->get();
foreach($kbarticles as $kbarticle){
array_push($kbarrays, $kbarticle);
}
}
$ca->assign('kbarray', $kbarrays);
$ca->setTemplate('sanal-sunucu');
$ca->output();Bu yeni kodun içerisindeki, sonradan eklenmiş olan makale gösterme kodlarında değişmeniz gereken tek şey
$cat_id'nin değeridir. Buraya kategori idsini yazmanız gerekmekte.
3- TPL dosyasını düzenleyelim.
PHP dosyasında tanımlama işlemleri yaptıktan sonra bu tanımladığımız $kbarrays değişkenini template içinde kullanacağız. Bu kodda hazır tabii ki.
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="row-title">Sanal Sunucu için Bazı Rehberlerimiz</div>
<div class="row-subtitle"></div>
</div>
</div>
<div class="row">
{foreach from=$kbarray item=kbarr}
<div class="col-md-4">
<div class="card bg-dark text-white">
<img class="card-img" src="{$kbarr->image_dir}" alt="{$kbarr->title}" width="400" height="200">
<div class="card-img-overlay">
<h5 class="card-title"><b>{$kbarr->title}</b></h5>
<p class="card-text">{$kbarr->article|truncate:150:"..."}...</p>
<a class="btn btn-primary" href="{routePath('knowledgebase-article-view', {$kbarr->id}, {$kbarticle.urlfriendlytitle})}">Devamını Oku</a>
</div>
</div>
</div>
{/foreach}
</div
</div>klasik boostrap card tasarımını kullanarak 3 adet makale göstermekteyim.
4- Makalemiz için Banner Ekleme
İşlemimizin son kısmı olan banner eklemeyi sql tarafında yapmaktayız. Bunu resimli olarak anlatacağım.
4.1-phpMyAdmin'de sql'e girelim.
Eğer ilk işlemi başarıyla tamamladıysanız "knowledgebase_banners" tablosu aşağıdaki gibi gözükecektir.
4.2 Yeni bir satır ekleyelim. 4.2.1 Makale ID'sini Nasıl Öğreneceğim?
Aslında kategori id'sini öğrenmekle aynı işlem.
Kutucuk içine aldığım sayı makale id'sidir.
Eğer her şeyi doğru yaptıysanız 1 makalenin görünümü aşağıdaki gibi olur.
Bu rehberdeki işlemler otomatikleştirilebilir, bir modül haline getirilebilir ancak uğraşmak istemedim. Görünüş değişikliği gibi durumları ise kendiniz yapabilirsiniz. Umarım yararlı olmuştur.