Önceki ve Sonraki İçerik (Tüm İçerik Türleri İçin)
Burada belirtmiş olduğum sorunu çözdüm... Ancak çözüm çok uzun olduğu için ayrı bir ek ders olarak yayınlamayı uygun gördüm.
Sayın, Cihan Arat'a burada bana yol gösteren yazısı ve emekleri için çok teşekkür ederim.
Arkadaşlar birden fazla içerik türünde sayfa altında önceki ve sonraki içerik adları ve bağlantılarının oluşması için yapmanız gerekenler:
1-Kullandığınız temanın template.php dosyasının sonuna ekleyiniz.
Burada örnek tür olarak "makale" adlı içerik kullanılmıştır. Siz burada "Anasayfa » Yönet » İçerik yönetimi » İçerik türleri" sayfasında Tür sütununda gözüken içeriğe verilen adı (içerik türünün makine adını) kullanın.
Önemli Not: İçerik her değiştirdiğinde bunu değiştirmenize gerek yok. Önemli olan kullandığınız bir türün makina adını vermiş olmanız.
// 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',$tur='makale') {
// Node types to include in paging
$node_types = array($tur);
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));
}
2- Aşağıdaki kodları temanızın style.css dosyasının en altına yapıştırınız.
/* Bu kod bölümünü style.css dosyanıza yapıştırınız */
.navi_pager_div_class {
width: 100%;
margin-top:5px;
margin-bottom:15px;
clear: both;
display: block;
text-align: center;
line-height: 1.5em;
}
.navi_pager_prev_class {
display: block;
float: left;
text-align: right;
width: 40%;
white-space: normal;
word-wrap: break-word;
padding: 0;
}
.navi_pager_main_class {
float: left;
text-align: center;
display: inline;
padding: 0 1em 0 1em;
}
.navi_pager_next_class {
display: block;
float: left;
text-align: left;
width: 40%;
white-space: normal;
word-wrap: break-word;
padding: 0;
}
.navi_pager_laquo_class {
float: left;
width: 10px;
}
.navi_pager_raquo_class {
float: right;
width: 10px;
}
/*İçerik başlıkları ile ileri geri Navigasyon still kodları bitimi*/
3- İçerik ile ilgili sayfada gösterebilmek:
3-a) Aşağıdaki kodları içerik türünüz için oluşturulmuş node-icerikadi.tpl.php doyasının içinde <?php print $content ?> satırının altına aşağıdaki kodları kopyalayın.
<?php if (!$teaser) : ?>
<div class="navi_pager_div_class">
<div class="navi_pager_laquo_class">«</div>
<div class="navi_pager_prev_class"> <?php print phptemplate_prev_next($node, 'p','makale') ?> </div>
<div class="navi_pager_main_class"> | <a href="<?php print base_path() ?>">Anasayfa</a> | </div>
<div class="navi_pager_next_class"> <?php print phptemplate_prev_next($node, 'n','makale') ?> </div>
<div class="navi_pager_raquo_class">»</div>
</div>
<?php endif; ?>
<!-- İçerik sayfalama bitişi -->
3-b) Eğer her içerik türü için ayrı bir node-icerikadi.tpl.php doyanız yok ise önce temanız da bulunan node.tpl.php dosyasını aynen kopyalayıp adını node-makale.tpl.php olarak değiştirin. Ve içerisine <?php print $content ?> satırının altına aşağıdaki kodları kopyalayın.
<?php if (!$teaser) : ?>
<div class="navi_pager_div_class">
<div class="navi_pager_laquo_class">«</div>
<div class="navi_pager_prev_class"> <?php print phptemplate_prev_next($node, 'p','makale') ?> </div>
<div class="navi_pager_main_class"> | <a href="<?php print base_path() ?>">Anasayfa</a> | </div>
<div class="navi_pager_next_class"> <?php print phptemplate_prev_next($node, 'n','makale') ?> </div>
<div class="navi_pager_raquo_class">»</div>
</div>
<?php endif; ?>
<!-- İçerik sayfalama bitişi -->
4-Ayrı ayrı her içerik türü için yapmanız gerekenler:
3-b de anlatılan adımı sadece içerik makina adlarını değiştirerek tekrarlayınız. Yani önce node.tpl.php dosyasını aynen kopyalayın adını node-yeniicerikadi.tpl.php değiştirin ve koddaki 'makale' adlı yerleri içerik türünüze uygun olacak şekilde 'yeniicerikadi' olarak değiştirin.
Bu adımı tüm içerik türleriniz için istediğiniz kadar yineleyebilirsiniz. Yukarıda Önemli Nottada belirttiğim üzere 1. bölüm de template.php dosyası içinde 'makale' adını değiştirmenize hiç gerek yok...
Hayırlı uğurlu olsun.... Güle güle kullanın... Başarılar...
- Yeni yorum ekle
- 538 kez okundu

Ders için teşekkürler, Prev Next Api eklentisi ve token yardımı ile çok daha rahat ve views gibi sizi özgür hisettirecek şekilde dilediğiniz görünümle çok daha rahat şekilde de yapabilirsiniz. Bahsettiğim şey linkler şeklinde değil de tam anlamıyla views tarzı dilediğiniz herhangi bir görünümdür. Söz gelimi buradaki kompleks ileri geri bu bahsettiğim eklenti sayesinde çok rahat yapılabilir. Tokenlerden alacağınız fieldler html etiketleri içine alınabildiğinden ayrıca jquery ile geliştirilebilir durumlar da söz konusu olabilir.
Rica ederim, ben teşekkür ederim. Umarım işe yarar. Ancak, söylediğiniz Prev-Next eklentisini epeyce kurcaladım fakat başaramadım. Token ve Prev-Next eklentisi arasında bir bağlantı kuramamıştım. Eklenti beraberinde gelen readme.txt dosyasında bulunan örneği inceledim, defalarca uğraştım ancak bir sonuç çıkartamayınca pes ettim.
Kapsamlı bir iş için göstermiş olduğunuz örnekteki yeri tercih ederim. Ancak, malesef yapadım. Eğer vaktiniz müsait olursa bu eklentiyi tanıtıcı bir ders yazarsanız çok memnun olurum.
Allah'ın izni ile bayram dönüşü bu konu için bir ders hazırlayabilirim.