Skip to Content

İçerik başlıkları ile ileri geri menü yapımı

cihan, Cuma, 05/02/2010 - 16:26 tarihinde.

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: 200px;
 white-space: normal;
 word-wrap: break-word;
 padding: 0;
}
.aratmedya_pager_div_class .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: 200px;
 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.

Edit: Bu derse ek olarak birden fazla içerik türünde bu özelliği kullanmak için gerekli değişiklikler eklenmiştir. Buradaki konunun sonunda yapmanız gereken değişiklikler bulunmaktadır.

Mikuru, Sal, 13/04/2010 - 13:43 tarihinde.

teşekkürler

cihan, Sal, 13/04/2010 - 18:38 tarihinde.

Ben teşekkür ederim.

tebdilikıyafet, Cuma, 21/01/2011 - 15:35 tarihinde.

bu geçiş o içerik türündeki tüm içerikelr için oluyor. mesela a içerik türünde b cck sına sahip 10 c cck sına sahip 5 içerik var. ben c cck sına sahip bir içeriğe girdiğimde altta yalnıca c cck sına sahip içerikler gözüksün istiyorum bunu nasıl yapabilirz acaba?

hunanka, Çrş, 31/08/2011 - 06:27 tarihinde.

Cihan Bey ve diğer arkadaşlar,
Ö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.
İyi çalışmalar dilerim...

hunanka, Çrş, 31/08/2011 - 15:19 tarihinde.

Sormuş olduğum sorunun cevabı dün tüm gecemi aldı. Sabaha kadar yaptığım sayısız deneme başarısız oldu. Bugün dünkü yenilgilerden sonra edindiğim tecrübelerle önceki, sonraki içerik türlerini her içerik türü için ayrı ayrı olmak üzere sorunsuz olarak yapmayı başardım.

Çözüm çok uzun olduğu için burada ayrı bir ders olarak yayınlamayı uygun gördüm. Sayın Cihan Arat'a bana yol gösteren bu dersi ve emekleri için de çok teşekkür ederim.

cihan, Çrş, 01/02/2012 - 02:51 tarihinde.

Ben sana teşekkür ederim Uygar. Askerde olduğumdan dolayı sorduğun soruyu araştırıp cevap veremedim, yoksa buradan koptuğum filan yok sadece hayata ara vermiştim:)

hunanka, Çrş, 01/02/2012 - 03:32 tarihinde.

Hoşgeldin Asker... Seni görmek ne güzel... :)))