İçeriklerin altında içerik başlıkları ile ileri geri navigasyon menü yapımı

İlgili Konular: Drupal Temaları     

Bir eklenti ile drupal motorunu daha fazla zorlamadan içerik metinlerimizin altına bir önceki ve bir sonraki içeriklerin başlıklarından oluşan bir ileri geri navigasyon menü yapabiliriz. Bunun için template.php, node.icerik_turu.tpl.php ve style.css dosyalarına ufak kod blokları ekliyoruz.
Sıra ile aşağıdaki adımları takip ederek menünüzü oluşturabilirsiniz:

  • Aşağıdaki kod bölümünü kullandığınız temanın template.php dosyasının sonuna ekleyiniz.

// İçerik başlıkları ile ileri geri NAVİGASYON
// Ayrıntılı bilgi ve farklı örnekler için aratmedya.com.
//Bu kod bölümü Drupal Association tarafından hazırlanmış Cihan Arat tarafından uyarlanmıştır.
// Bu fonksiyon bölümünü kullandığınız temanın template.php dosyasının sonuna ekleyiniz.
function phptemplate_prev_next($current_node = NULL, $op = 'p') {
  // Node types to include in paging
  $node_types = array('webtasarim');

  if ($op == 'p') {
    $sql_op = '<';
    $order = 'DESC';
  }
  elseif ($op == 'n') {
    $sql_op = '>';
    $order = 'ASC';
  }
  else {
    return NULL;
  }

  $output = NULL;
  foreach($node_types as $type) {
    $quoted_types[] = "'" . $type . "'";
  }
  $sql = "SELECT nid, title FROM {node} n
    WHERE nid $sql_op %d
    AND type IN ("
. implode(',', $quoted_types) . ")
    AND status = 1
    ORDER BY nid $order
    LIMIT 1"
;
  $result = db_query($sql, $current_node->nid, $type);
  $data = db_fetch_object($result);
  if (!isset($data->nid) || !$data->nid) {
    return NULL;
  }
  return l($data->title, "node/$data->nid", array('html' => TRUE));
}

Buradan $node_types = array('webtasarim'); kısmında webtasarim içerik türünün adıdır. İleri geri menü olurturmak için hangi içerik türünü istiyorsanız onu yazınız.

  • Daha sonra aşağıdaki kod bölümünü temanızın style.css dosyasının sonuna ekleyiniz.

/*İçerik başlıkları ile ileri geri Navigasyon still kodları */
/* Bu kod bölümünü style.css dosyanıza yapıştırınız */
.aratmedya_pager_div_class {
 width: 100%;
 margin-top:5px;
 margin-bottom:15px;
 clear: both;
 display: block;
 text-align: center;
 line-height: 1.5em;
}
.aratmedya_pager_prev_class {
 display: block;
 float: left;
 text-align: right;
 width: 40%;
 white-space: normal;
 word-wrap: break-word;
 padding: 0;
}
.aratmedya_pager_main_class {
 float: left;
 text-align: center;
 display: inline;
 padding: 0 1em 0 1em;
}
.aratmedya_pager_next_class {
 display: block;
 float: left;
 text-align: left;
 width: 40%;
 white-space: normal;
 word-wrap: break-word;
 padding: 0;
}
.aratmedya_pager_laquo_class {
 float: left;
 width: 10px;
}
.aratmedya_pager_raquo_class {
 float: right;
 width: 10px;
}
/*İçerik başlıkları ile ileri geri Navigasyon still kodları bitimi*/

  • Temanızdaki node.tpl.php veya node-içerik_turu.tpl.php sayfaları içinde aşağıdaki kodu bulun:

<?php print $content; ?>

  • Devamına aşağıdaki kodu ekleyiniz.

<!-- İçerik için sayfalama başlangıcı. Bu kodu node.tpl.php veya node-içerik_turu.tpl.php sayfalarından birine ekleyin -->
<?php if (!$teaser) : ?>
  <div class="aratmedya_pager_div_class">
    <div class="aratmedya_pager_laquo_class">&laquo;</div>
    <div class="aratmedya_pager_prev_class"> <?php print phptemplate_prev_next($node, 'p') ?> </div>
    <div class="aratmedya_pager_main_class"> | <a href="<?php print base_path() ?>">Anasayfa</a> | </div>
    <div class="aratmedya_pager_next_class"> <?php print phptemplate_prev_next($node, 'n') ?> </div>
    <div class="aratmedya_pager_raquo_class">&raquo;</div>
  </div>
<?php endif; ?>
<!-- İçerik sayfalama bitişi -->

2010-02-05_152320.jpg

Bu style.css ve diğer dosyalara eklediğimiz kodları değiştirip kullanarak daha farklı menüler oluşturabilirsiniz.

Eğer birden farklı içerik türünde bu özelliği kullanmak isterseniz aşağıdaki işlemleri yapınız:

template.php içersine eklediğimiz kodlardan aşağıdaki kısmı:

function phptemplate_prev_next($current_node = NULL,  $op = 'p') {
  // Node types to include in paging
  $node_types = array('webtasarim');

Aşağıdaki ile değiştiriyoruz:

function phptemplate_prev_next($current_node = NULL, $op = 'p',$tur='varsayilan_icerik_turu') {
  // Node types to include in paging
  $node_types = array($tur);

varsayilan_icerik_turu kısmını varsayılan olarak kullanmak istediğiniz içerik türünün makine adını yazınız.

Daha sonra node-içerik_turu.tpl.php içersine eklediğimiz aşağıdaki kod satırlarını:

    <div class="aratmedya_pager_prev_class"> <?php print phptemplate_prev_next($node, 'p') ?> </div>
    <div class="aratmedya_pager_main_class"> | <a href="<?php print base_path() ?>">Anasayfa</a> | </div>
    <div class="aratmedya_pager_next_class"> <?php print phptemplate_prev_next($node, 'n') ?> </div>

Aşağıdaki kod ile değiştiriniz:

    <div class="aratmedya_pager_prev_class"> <?php print phptemplate_prev_next($node, 'p','icerik_turu') ?> </div>
    <div class="aratmedya_pager_main_class"> | <a href="<?php print base_path() ?>">Anasayfa</a> | </div>
    <div class="aratmedya_pager_next_class"> <?php print phptemplate_prev_next($node, 'n','icerik_turu') ?> </div>


'icerik_turu'
kısımlarını node-içerik_turu.tpl.php dosya adına yazdığınız içerik türü adı ile değiştiriniz.

Yorumlar

Cihan Bey,
Öncelikle yardımlarınız için teşekkür ederim.
Benim sitemde birden fazla içerik bulunuyor. Ancak bu içeriklerin hiçbiri için özel bir sayfa kullanmıyorum. Çünkü tema üzerinde gelen şekli views ile düzenledim. Böylece node-içerik_turu.tpl.php gibi bir sayfa oluşturma gereği kalmadı.
Ancak, tüm içerik türlerinde bu önce sonrayı göstermek istediğimde başarılı olamadım. Aşağıdaki kodda varsayilan_icerik_turu olarak belirtilen yere ne yazmalıyım ki tüm içerik türlerin kapsasın?

function phptemplate_prev_next($current_node = NULL, $op = 'p',$tur='varsayilan_icerik_turu') {
  // Node types to include in paging
  $node_types = array($tur);

tabi bu değişikliğin node.tpl.php ve style.css dosyalarına nasıl bir etkisi olur? Bunu da belirtirseniz çok sevinirim.
Teşekkür ederim... İyi çalışmalar dilerim...

Varsayılan içerik türü diye bahsedilen mesela page veya story(makale) içerik türleri vardır bu içerik türlerinin makine isimlerini içerik türü sayfasında girersiniz, orada bulunan makine içerik türü adını bu bölüme yazmalısınız. Kodların tamamını eksiksiz olarak eklemelisiniz tüm ilgili bölümlere.

Merhabalar öncelikle hazırladığınız bilgiler için teşekkür ederim. Ben aynı üst menü öğesine sahip içeriklerin kendileri arasında menüdeki sıralamaya göre önceki sonraki olmasını istiyorum yani ihtiyacımı karşılamıyor yardım ederseniz sevinirim teşekkürler şimdiden.

İstediğiniz ileri geri değil de benzer içeriklerden bir kısmını göstermek ise buradaki eklenti işinizi görecektir.

Eğer kendim yazmak isterim diyorsanız yol göstermek gibi olacak ise veri tabanından başlıkları çekerken sayfadan aldığınız terim değerleri ile o içeriğe ait terimleri karşılaştırıp çekmeniz gerekir. Bir sayfada terimleri nasıl kullanabildiğimizi görmek için buraya bakabilirsiniz. Örnekte listeleme gösterilsede php bilginiz mevcut ise terimleri çeken komutlarıda ayırabilirsiniz.

Eğer illa taxonomy e göre ileri geri şeklinde yapmak istiyorsanız bunun için özel bir çalışma ile ya varolan eklentinin ilgili kısımlarının yeniden programlanması veya sıfırdan sitenize bu bölümlerin yazılması gerekir. Bunu sağlayacak bilgiye sahip değilseniz buraya tıklayarak hizmet talep formu üzerinden bu işi yaptırabilirsiniz.

İstediğiniz direk bir eklenti yazmak şeklinde olduğundan direk burada anlatmak uzun olacaktır ve çok zaman alır. Anlayışla karşılayacağınızı ümit ederim. Kolay gelsin.

Mesajıma bu kadar kısa sürede cevap yazdığınız ve yol gösterdiğiniz için teşekkür ederim. Aslını isterseniz bu kadar ayrıntılı bir cevapta beklemiyordum. Hassasiyetiniz, site kullanıcılarınıza sunduğunuz saygı işinizi hakkıyla yaptığınızın delili sayıyor, bu ülkenin bu bilince ihtiyacı olduğunu vurgulayıp tekrar tekrar teşekkür ediyorum.

Bu güzel yorumunuz için teşekkür ederim.

Benim gibi ilgili arkadaşlarımızıda bu sitede yazar olarak görebilmek adına sitenin formatını klasik bir bloktan geniş bir portala çevirdim.

Benim ve bir çok arkadaşımız gibi ilgili ve seviyeli arkadaşlarımızı bu sitede tyazar görmek adına yazar alımına başladım. Bu adreste ayrıntıları belirtiyor.

İsteyen herkes yazar olabiliyor :) Vaktiniz varsa ve ilgilendiğiniz konu varsa sizide bekleriz. Yazar alımına dün itibari ile başvuru almaya başladım. Hafta sonuna büyük bir ihtimalle bir yazar daha ekleniyor aramıza.

Yeni yorum veya soru gönder

Bu alanın içeriği gizlenecek, genel görünümde yer almayacaktır.
  • PHP source code can also be enclosed in <?php ... ?> or <% ... %>.
  • You may insert videos with [video:URL]

Biçimlendirme seçenekleri hakkında daha fazla bilgi


3 + 17 =
Basit matematik sorusunuz çözünüz. Örn; 1+3= 4