Views pager

Marci képe

Csináltam egy blogbejegyzéseket megjelenítő nézetet. A fejlécében megjelenítettem a blogger modul által generált táblázatot az alábbi blogger.module fájlból kihalászott kóddal:

<?php {    
  $maxdisp  = 25;	
  $shownum  = variable_get("blogger_shownum", 0);  
  $blogger_order  = variable_get("blogger_order", 0); 
  $blogger_case   = variable_get("blogger_case", 0); 
  $blogger_avatar = variable_get("blogger_avatar", 0); 
  $blogger_avatar_width = variable_get("blogger_avatar_width", 0);
  $blogger_avatar_height = variable_get("blogger_avatar_height", 0);
 
  $sql_counts = " SELECT DISTINCT (u.name)"
	           ." FROM {users} u"
	           ." INNER JOIN {node} n ON n.uid=u.uid"
	           ." WHERE u.name<>'' AND n.type='blog' AND n.status=1"
		       ;
  $dse_sql_counts = db_query($sql_counts);
  $cnt_sql_counts = db_num_rows($dse_sql_counts);
  $sql_counts = "SELECT $cnt_sql_counts";
 
  $sql = " SELECT n.uid, u.name, count(u.name) AS numitems, u.picture, n.title "
      ." FROM {node} n "
      ." INNER JOIN {users} u ON u.uid = n.uid "
	  ." WHERE n.type = 'blog' AND n.status=1 "
	  ." GROUP BY n.uid"
	  .($blogger_order<>0 ? " ORDER BY " : "")
	  .($blogger_order==1 ? "u.name" : "")
	  .($blogger_order==2 ? "numitems DESC, u.name" : "")
	  ;
  $sql = db_rewrite_sql($sql);
 
  //$results = pager_query($sql, 1, 0, $sql_count, COMMENT_PUBLISHED, $uid, $uid);
  $results = pager_query($sql, $maxdisp, 0, $sql_counts);
 
  $i=1;
  while ($node = db_fetch_object($results)) {  
    //l($node->title, "node/$node->nid") .' '. theme('mark', node_mark($node->nid, $node->changed)),
    switch ($blogger_case)  
	{
      default:
      case 0:
        break;
      case 1: //smallcase
        $node->name = strtolower($node->name);
        break;
      case 2: //uppercase
        $node->name = strtoupper($node->name);
        break;
      case 3: //Wordcase
        $node->name = ucwords($node->name);
        break;
    }
 
    //Latest blog
	$sql = " SELECT n.title, nid "
	      ." FROM {node} n "
		  ." WHERE n.uid = '$node->uid' AND n.type='blog' AND n.status=1"
		  ." ORDER BY n.created DESC"
		  ." LIMIT 1"
		  ;
    $latest_blogs = db_query($sql);
    $latest_blog  = db_fetch_object($latest_blogs);
	//  
	if (($blogger_avatar) AND ($node->picture<>"")) 
	{ 
	  $blogger_img  = base_path().$node->picture;
	  $showpict = "<img src='$blogger_img' align='center'"
	           .($blogger_avatar_width<>0 ?  " width=$blogger_avatar_width " : " ")
	  		   .($blogger_avatar_height<>0 ? " height=$blogger_avatar_height " : " ")  
		       ."></>";
	}
	else
	{ $showpict = ""; }
	//  
    if (!$blogger_avatar)
	{  
      $rows[] = array(
        l($node->name, "blog/$node->uid"),
        $node->numitems,
        l($latest_blog->title, "node/$latest_blog->nid")
      );
    } else {
	  $rows[] = array(
        l($node->name, "blog/$node->uid"),
        $node->numitems,
        l($latest_blog->title, "node/$latest_blog->nid"),
		"$showpict"
	  );
	}
  }
  if (!$blogger_avatar) { $header = array( t('Name'), t('Numbers of Blogs'),t('Latest Blog') ); }
  else { $header = array( t('Name'), t('Numbers of Blogs'),t('Latest Blog'), t('Avatar') ); }
 
  $output = '<div id="blogger">';
  $output .= theme('table', $header, $rows);
  $output .= theme('pager', NULL, $maxdisp, 0);
  $output .= '</div>';
 
  return $output;
} ?>

Ez működik, megjelenik a táblázat a fejlécben, de eltünteti a pagert, ami kéne (be van jelölve a "Lapozó használata"). Mit kell változtatnom a kódon, hogy ne tüntesse el a pagert?

Illyés Edit képe

A Blogger tünteti el a Views pagerét, vagy a Views a Bloggerét? Egyébként mindegy: a Views pont az ilyen Blogger-szerű modulok leváltására van kitalálva. Ugyanezt a táblázatot el tudod készíteni Views-ban is, és egyszerűbb lesz az életed :)

0
0
Illyés Edit képe

Ja igen, a Views pager sok mindennel nem kompatibilis, többek között a Views egyes funkcióival sem :)

(Pl. $offset értéket csak akkor tudsz használni argumentumként, ha ki van kapcsolva a pager, stb.)

0
0
Marci képe

Kifejtenéd milyen mezőket használjak az elkészítéshez? Kellene egy sorban felhasználó neve, blogbejegyzéseinek száma, legutóbbi blogbejegyzése és képe. Magamtól még nem jöttem rá, hogyan valósítsam meg.

0
0
pp képe

Minek használsz views-t ha nem használod???
Ezt a kódot egyszerűen nyomd bele egy sima oldalba és állítsd be a php bevitelt. Ez a lehető legnagyobb gányolás persze, ennél már csak az lenne a nagyobb, ha belenyomnád egy views fejlécébe és a views beállításainál - aminek semmi köze ehhez a lekérdezéshez - nyomkodnád a pager beállítást. :D

Nem is értem, hogy minek neked a views? (és miért nem jó a blogger modul, ha már úgy is onnan másoltad ki, lehet csak sminkelni kéne és jónapot)

pp

0
0
Illyés Edit képe

Ő 2 nézetet akar 1 oldalra. Tehát fent a Blogger-szerű táblázat, alatta pedig a blogbejegyzések listája, ez utóbbit már elkészítette Views-zal.

Egyébként azt hiszem, nincs olyan az alap Views-ban, hogy adott szerző node-jainak a száma... Lehet, hogy nem lehet megkerülni a lekérdezés megírását.

Akkor viszont tényleg egyszerűbb, ha oldalba beszúrja a Blogger kódját, alá pedig meghívja a nézetet, vagy Insert View modullal beilleszti:

<?php
$block = module_invoke('views', 'block', 'view', 'nezetneve');
print $block['content'];
?>
0
0