XForum Center Block

Begonnen von soxin, 19 November 2002, 21:43:02

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

soxin

Hi!
Ich hab den Xforum center block

Nun wenn man auf eine Topix aus dem Block heraus klick kommt man imemr auf die erste seite, auch wenn schon 4 andere Seiten bestehen!!

Das ist schrott!!!

Das muß an der stelle erweitert werden

$viewlast .="<tr><td width=\"80%\"><img src =\"modules/XForum/images/$icon\"> <a href=\"modules.php?op=modload&name=XForum&file=viewthread&tid=$views\">$subject</a></td><td width=\"10%\" align=\"right\"><b>$tid</b></td><td width=\"10%\" align=\"right\"><b>$replies</b></td></tr>";


aber ich bekomm das nicht hin ?!?

kann mir jemand helfen?!?

Thx

soxin

@Darkboy bitte helf mir!!
Ihr habt das doch mit eurem CenterBlock vom Eboard auch gelößt!  :redhead:  :cry

DarkBoy

Vorweg einmal kleine Info. Es geht ziemlich viel im XForum nicht und auch die Sicherheit hat uns immer gestört, deswegen haben wir ja das  eBoard gebaut :)

Warum nimmst du dieses eigentlich nicht? Update geht ja ohne weiteres und ein besseres Forum hättest du dann eh.

Aber gedulde dch, ich schaue mal was ich dir auf die schnelle zusammen bauen kann , aber bisschen Geduld

soxin

ok ;-)
Das wär super   :D
Ich bastle schon die ganze zeit rum aber bekomm das nicht hin ..  :cry

DarkBoy

hä, und warum nimmst du das eBoard nicht? ;)  :D

Alos nun denn, habe dir auf die schnelle mal  was rausgesucht. Aber testen musste das alleine, da ich kein Xforum mehr installiert habe und das auch nicht tue!
Folgende Sachen musst du versuchen mal einzubauen und dann mal sehen was der an Fehler schmeisst:) oder auch nicht.

als erstes:
 
include "modules/XForum/settings.php";


dann das irgendwie
   if(is_user($user) || is_admin($admin))
{
if(is_admin($admin))
{
  $userAdmin = base64_decode($admin);
  $admincookie = explode(":", $userAdmin);
  $thisuser = $admincookie[0];  
}else{
  $userarray = getusrinfo($user);    
  $thisuser = $userarray['uname'];  
}
  $memberquery = mysql_query("SELECT lastvisit, lastvisitdate, lastvisitstore, keeplastvisit, ppp FROM $table_members WHERE username='$thisuser'");
  if($member = mysql_fetch_object($memberquery))
  {
if($member->lastvisitstore < (time() - (3600 * $member->keeplastvisit))){
   // für den Fall das wir in das Forum kommen und "date" und "store" ungleich sind
// wollen wir natürlich nicht, das das "date" auf time gesetzt wird. Daher Bed. if
  if($member->lastvisit < (time() - 900)){
$lastvisitdate = $member->lastvisit;
// wenn wir im Forum rumkrauchen sollen die Umschläge ja auch
// irgendwann verschwinden, daher also diese Bedingung
  }else{
$lastvisitdate = time();
  }
 }else{
 $lastvisitdate = $member->lastvisitdate;
 }
 
 $querythreads = mysql_query("SELECT COUNT(tid) as posts FROM $table_threads WHERE dateline >= '$lastvisitdate'");
 $threadcounter = mysql_fetch_object($querythreads);
   $queryposts = mysql_query("SELECT COUNT(pid) as replies FROM $table_posts WHERE dateline >= '$lastvisitdate'");
 $postcounter = mysql_fetch_object($queryposts);
 
 $newpostnum = $threadcounter->posts + $postcounter->replies;
 $ppp = $member->ppp;
  }  
}else{
$ppp = $postperpage;
}

 

und zum Schluss irgendow das:
   if($dateline < $lastvisitdate && $replies != "0"){
$lasttpost = "";
$searchquery = mysql_query("SELECT pid FROM $table_posts WHERE tid='$tid' AND dateline >= '$lastvisitdate' ORDER BY dateline LIMIT 0,1");
$lasttpost = mysql_fetch_object($searchquery);
if($lasttpost->pid == ""){
$searchquery = mysql_query("SELECT pid FROM $table_posts WHERE tid='$tid' ORDER BY dateline DESC LIMIT 0,1");
$lasttpost = mysql_fetch_object($searchquery);
}
$counter = 0;
$replynumber = 0;
$lastpostquery = mysql_query("SELECT pid FROM $table_posts WHERE tid='".$tid."' ORDER BY dateline");
while($searchlastpost = mysql_fetch_object($lastpostquery)){
$counter++;
if($searchlastpost->pid == $lasttpost->pid){
$replynumber = $counter;
}
}
  $viewthreadpage = "&page=".ceil(($replynumber+1)/$ppp)."#pid".$lasttpost->pid;

}else{
$viewthreadpage = "";
}




Und dann wieder hier melden was passiert, mehr kann ich dir momentan nicht helfen

[Editiert am 19/11/2002 von Admin DarkBoy]

soxin

hmm nein so wird das nicht gehen ...
Ich poste nun mal den Quellcode vom XForum Block
@Darkboy mir gefällt das eboard net ;-)
 
<?php
####################################
#/PHP-NUKE: XForum  Block LastPost phpNuke 5.5                    
#
# modified by Docteur_marc (http://docteurmarc.com)
# for the center Mode
# place this block into your block directory and choice the position Center
#
# (thanks to Cristophe (http://www.aubonmicro.com))
#
#
#
#  thanks  to DarkBoy for the original source
# ================================================                    
#
#  Copyright Å 2002 DarkBoy (info@maax-design.de)                      
#  Modified and german translation by
#    fsz dESIGN & maaX dESIGN
#    http://www.fsz-design.de
#    http://www.maax-design.de
#    
#    info@maax-design.de
# --------------------------------------------------------------------
# Based on XForum from Trollix www.trollix.com
# by Copyright Å 2002 Francisco Burzi (fbc@mandrakesoft.com)
# http://phpnuke.org  
# --------------------------------------------------------------------
#                                                                      
# This program is free software. You can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 or a newer version.  
####################################
if (eregi("block-XForum.php",$PHP_SELF)) {
    Header("Location: index.php");
    die();
}

// how many new-posts should be shown in this block?
$posts = 10;

// to increase speed, we stop the search for private postings
// after: $posts * $multiplyer (default 5 * 10 = 50). So if you have more than
// $multiplyer-times private postings than normal once, you
// have to increase this value (you will notice that because there are
// not $posts shown in your block)
$multiplyer = 10;

global $prefix, $dbi, $sitename, $language, $anonymous;

// Load the XForum-settings
include( "modules/XForum/settings.php" );
require "modules/XForum/lang/$language.lang.php";

// if the user wants to hide private forums we also don´t show new
// postings in private forums
if($hideprivate == "on"){

// We set here our limit for the private-postings-search
$stop = $posts * $multiplyer;

// Here we have a look how many "private"-postings are in the last $posts-postings.
// If we found a "private"-posting in the last $posts, we increase $posts by one.
$postsquery = mysql_query("SELECT fid FROM $prefix"._xmb_threads." ORDER BY lastpost Desc LIMIT 0, $stop") or die(mysql_error());

// counter is needed to count "non-private" postings until we reach $posts
$counter = 0;

// here we store our original desired posts-number
$postsnumber = $posts;

while(list($fid) = mysql_fetch_row($postsquery))
{
$queryforum = mysql_query("SELECT private, userlist FROM $prefix"._xmb_forums." WHERE fid='$fid'");
$private = mysql_fetch_row($queryforum);
// if we found a "private"-posting, increase $posts
if(($private[0] || $private[1]) && $counter < $postsnumber)
{$posts++;}
// otherwise we have one more of our desired $posts-postings to show
else
{$counter++;}
}
} // end if($hideprivate)

$query = mysql_query("SELECT COUNT(tid) as nbsites, SUM(views) as totalus FROM ".$prefix."_xmb_threads");
$row = mysql_fetch_array($query);
$topicspop = $row[nbsites];
$threadsall = $row[totalus];
$query = mysql_query("SELECT COUNT(pid) as nbposts FROM ".$prefix."_xmb_posts");
$row = mysql_fetch_array($query);
$postpop = $row[nbposts];
$postpop = $postpop + $topicspop;
$query = mysql_query("SELECT COUNT(uid) as xusers FROM ".$prefix."_xmb_members");
$row = mysql_fetch_array($query);
$member = $row[xusers];

$show = "<center>"._TEXTTOPICS." <b>$topicspop</b><b>|</b> "._TEXTPOSTS." <b>$postpop</b><b>|</b>"._TEXTVIEWS." <b>$threadsall</b><b>|</b> <a href=\"modules.php?name=Members_List\">"._TEXTMEMBERS."</a> <b>$member</b></center>";

$content = "<table width=\"100%\" border=\"1\" bordercolor=\"#cacaca\">";
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $prefix"._xmb_threads." ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
while(list($tid, $views, $subject, $lastpost,  $dateline, $replies, $author, $icon, $fid,) = mysql_fetch_row($query)) {
$queryforum = mysql_query("SELECT private, userlist FROM $prefix"._xmb_forums." WHERE fid='$fid'");
$private = mysql_fetch_row($queryforum);

// this part checks for "private"-status.
// If it is a "non-private"-posting or "hideprivate-forums" is set off, we display it
if((!$private[0] && !$private[1]) || ($hideprivate == "off")) {
if ($icon == ""){
$icon="hot_red_folder.gif";
    }
$dateA = date('d/m/Y',substr($lastpost,0,strRpos($lastpost,'|')));
$lastauthor = substr(stristr($lastpost,'|'),1,strlen($lastpost));
$lastauthor1 = "<a href=\"modules.php?name=XForum&file=member&action=viewpro&member=$lastauthor\">$lastauthor</a>";
$author1 = "<a href=\"modules.php?name=XForum&file=member&action=viewpro&member=$author\">$author</a>";

if ($lastauthor == "$anonymous")
{$lastauthor1 = "<div align=\"center\"><a href=\"modules.php?name=Your_Account&op=new_user\">"._TEXTGUEST."</a></div>"; }
if ($author == "$anonymous")
{$author1 = "<div align=\"center\"><a href=\"modules.php?name=Your_Account&op=new_user\">"._TEXTGUEST."</a></div>"; }


$viewlast .="<tr><td><b><img src =\"modules/XForum/images/$icon\">  <a href=\"modules.php?name=XForum&file=viewthread&tid=$views\">$subject</a></b></td><td><div align=\"center\"><b>$author1</b></div></td><td><div align=\"center\"><b>$tid</b></div></td><td><div align=\"center\"><b>$replies</b></div></td><td align=\"center\"><b>$lastauthor1</b><br><font size=\"-2\"><i>($dateA)</i></font></td></tr>";
}
}


    $content .= "<tr><td align=\"center\"><b>"._TEXTNEWTOPIC."</b></td><td align=\"center\"><b><b>"._TEXTAUTHOR."</b></b></td><td align=\"center\"><b>"._TEXTVIEWS."</b></td><td align=\"center\"><b>"._TEXTREPLIES."</b></td><td align=\"center\"><b> "._LPOSTSTATS." </b></td></tr>";
    $content .= "$viewlast";

$content .= "</table>";
$content .= "$show";
$content .= "<br><center>[ <a href=\"modules.php?name=XForum\">"._TEXTINDEX."</a> ]      [ <a href=\"modules.php?name=XForum&file=misc&action=stats\">"._TEXTSTATS."</a> ]      [ <a href=\"modules.php?name=XForum&file=misc&action=search\">"._TEXTSEARCH."</a> ]</center>";
?>

 



Vielleicht hat ja jemand eine bessere Idee?!?

Marek

Und ich behaupte einmal, das dir das eBoard seht gut gefällt und du dich nur nicht mit dem LINK anfreunden kannst:)

In deinem Forum steh xforum als deine kreation, nicht die feine Art alles zu entfernen und dann auch noch zu fragen ob Sie dir helfen  Ihre Arbeit für dein "Projekt" zu nutzen !

Ist wie gesagt nur meine Meinung, aber schön ist das nicht. Helfen kann ich dir leider wenig , da meine Kenntnisse nicht ausreichen.

tequila

@Soxin

Dieser Teil ist von Interesse (leicht abgewandelt):

if($thread->replies > $ppp){

    $counter = 0;

    $replynumber = 0;

    $lastpostquery = mysql_query("SELECT pid FROM $table_posts WHERE&nbs p;tid='".$tid."' ORDER BY dateline");

    while($searchlastpost = mysql_fetch_object($lastpostquery)){

        $counter++;

        if($searchlastpost->pid == $lasttpost->pid){

            $replynumber = $counter;

        }

    }

       $viewthreadpage = "&page=".ceil(($replynumber+1)/$ppp)."#pid".$lasttpost->pid;



}else{

    $viewthreadpage = "";

}

So, und $ppp steht für "Posts per page" was jeder User einmal in seinem Profil selbst bestimmen kann (steht also für den User in der nuke_xmb_members-Tabelle) und was Du einmal im Admin-Menü als Grundwert und Default-Wert für anonyme User mit $postsperpage einstellen kannst.

Und nun muß Dein Center-Block eben 1. gucken, ob angemeldet oder nicht (wenn nicht angemeldet, dann eben $ppp = $postsperpage), wenn angemeldet ob auch im XForum als Member vorhanden oder nicht (wenn ja, dann $ppp aus der members-Tabelle, sonst genau wie Anonymous).

Das alles mußt Du dann eben einstricken und dann sollte es laufen.

Und eh gefragt wird: das $viewthreadpage muß eben hoch an den Link zum Aufruf des Threads mit angehängt werden in der Art: "....$tid.$viewthreadpage" bla, bla, bla ..."
Aber egal, hol Dir den eBoard-Centerblock und guck selbst, dann wird es schon klar ;)