Seite 1 von 2

[request] neue Beiträge pic 4 1 Forum in overall_header?!

Verfasst: 18.10.2002 12:41
von K
high

mal wieder eine Frage von mir :D

wir haben ein Forum welches News heisst (sehr originell ;) ) .. und die News daraus werden in der news.php angezeigt für die ein Link+Icon in der overall_h.. platziert ist.
Jetzt hatte ich gerade die Vorstellung, wie praktisch es doch wäre, wenn das Symbol zum Link (in der overall_head).. sich bei neuen Beiträgen verändern liesse (a la [ externes Bild ] -> [ externes Bild ] ) also wie vor 'm Originalforum für eingeloggte Users...

.. war das zu verstehen?!? :-?

yo. Voller Hoffnung auf 'n Tip
verbleib' ich ers'ma'

gruss
K

Verfasst: 18.10.2002 14:52
von saerdnaer
welchen newshack hast du denn? und was für eine forum id hat dein newsforum?

ah

Verfasst: 18.10.2002 15:16
von Gast
deinen :D (Vers. 1.4.1)

und die topic_id ist 48

gruss
K

Verfasst: 18.10.2002 15:18
von K
.. einloggn vergessen ;)

Verfasst: 18.10.2002 16:18
von saerdnaer
forum id nicht topic id...
also öffne die language/xxx/lang_main.php und füge vor ?> ein:

Code: Alles auswählen

$lang['News'] = 'News';
$lang['News_new'] = '(neue) News';
dann öffne die templates/xxx/xxx.cfg und füge vor ?> folgendes ein:

Code: Alles auswählen

$images['news'] = "$current_template_images/news.gif";
$images['news'] = "$current_template_images/news_new.gif";
dann öffne die includes/page_header.php und füge vor

Code: Alles auswählen

//
// The following assigns all _common_ variables that may be used at any point
// in a template.
//
folgendes ein:

Code: Alles auswählen

// news forum id
$news_forum_id = 1;
$unread_topics = false;
if ( $userdata['session_logged_in'] )
{
        $tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . "_t"]) : array();
	$tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . "_f"]) : array();

        $sql = "SELECT t.forum_id, t.topic_id, p.post_time
	       	FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
		WHERE p.post_id = t.topic_last_post_id
		      AND p.post_time > " . $userdata['user_lastvisit'] . "
		      AND t.topic_moved_id = 0
                      AND t.forum_id = $news_forum_id";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not query new topic information', '', __LINE__, __FILE__, $sql);
	}

	$new_topic_data = array();
	while( $topic_data = $db->sql_fetchrow($result) )
	{
		$new_topic_data[$topic_data['forum_id']][$topic_data['topic_id']] = $topic_data['post_time'];
	}

        if ( !empty($new_topic_data[$news_forum_id]) )
	{
		$forum_last_post_time = 0;

		while( list($check_topic_id, $check_post_time) = @each($new_topic_data[$news_forum_id]) )
		{
			if ( empty($tracking_topics[$check_topic_id]) )
			{
				$unread_topics = true;
				$forum_last_post_time = max($check_post_time, $forum_last_post_time);
			}
			else
			{
				if ( $tracking_topics[$check_topic_id] < $check_post_time )
				{
					$unread_topics = true;
					$forum_last_post_time = max($check_post_time, $forum_last_post_time);
				}
			}
		}

		if ( !empty($tracking_forums[$news_forum_id]) )
		{
			if ( $tracking_forums[$news_forum_id] > $forum_last_post_time )
			{
				$unread_topics = false;
			}
		}

		if ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) )
		{
			if ( $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all'] > $forum_last_post_time )
			{
				$unread_topics = false;
			}
		}

	}
}
$news_img = ( $unread_topics ) ? $images['news_new'] : $images['news'];
$news_txt = ( $unread_topics ) ? $lang['News_new'] : $lang['News'];
und dann musst du noch die grafiken für neue news (news_new.gif) und das andere (news.gif) icon in templates/xxx/images/ abspeichern. uns schließlich must du deinen link noch dementsprechend abändern. da ich nicht weiß wie du ihn gemacht hast musst du mir mal den code des links zeigen (aus der overall_header.tpl)...

ah

Verfasst: 19.10.2002 12:47
von K
yo
bis jetze siehts so aus:
<div align="center"><span class="mainmenu"><a href="./news.php" class="mainmenu"><img src="templates/subSilver/images/news.gif" width="12" height="13" border="0" align="top" alt="News" hspace="3" />News</a>&nbsp;&nbsp; (...)usw
ich dachte, ich wär schlau, und hab nach dem text noch n
'NEWS_IMG' => $news_img,
in die page_header reingematscht, und wollte dieses dann per
<img src="{NEWS_IMG}" (...)
in die overall_tpl einbinden.. gut so ? :-?

ich hatte das gestern mal probiert, muss aber irgndwas falsch gemacht hab'n.. desw. lieber nochmal nen fachman guckn lassn :wink:
___

achso..den
$lang['News'] = 'News';
$lang['News_new'] = '(neue) News';
und
$news_txt = ( $unread_topics ) ? $lang['News_new'] : $lang['News'];
kann ich doch fehlen lassen, wenn ich den Text nicht ändern möcht, oder?
will ja nur'n Wechselbild ;)



vielen Dank (mal wieda) 4 deine Hilfe :D

Verfasst: 20.10.2002 09:16
von saerdnaer
das mit der img stimmt...
ja den text kannst du weglassen...

funnktionerts jetzt oder nicht?
achja soll sich das ungelesen symbol auf gelesen zurücksetzen wenn man die news.php aufruft?

Verfasst: 20.10.2002 12:03
von K
hmm :(

jetzt werden in der index.php keine neue_Beiträge symbole mehr bei neuen Beiträgen angezeigt..
und das symbol vor den news signalisiert dafür neue posts wo gar keine sind :(

ich hab alles so gemacht wie du sagtest (glaubich ;) )
ausser diese zeile:
$images['news'] = "$current_template_images/news_new.gif";
dafür nahm ich
$images['news'] = "$current_template_images/newer.gif";
aber das ist vermutl. nicht das Problem

ne idee? :roll:


achso.. das mit dem nachm lesen zurücksetzn wär natürlich auch schwer praktisch.. aber scheint ja doch janz schön kompliziert zu sein :D

peace
K

Verfasst: 21.10.2002 15:28
von saerdnaer
okay lösch alles bis auf das nach der letzten klammer aus der page_header raus und schreib dafür rein:

Code: Alles auswählen

$unread_topics = new_news();
dann öffne de functions.php und füge am ende vor ?> folgendes ein:

Code: Alles auswählen

function new_news()
{
	global $userdata, $board_config, $db, $HTTP_COOKIE_VARS;
	$unread_topics = false;
	if ( $userdata['session_logged_in'] )
	{
	        $tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . "_t"]) : array();
	        $tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . "_f"]) : array();

	        $sql = "SELECT t.forum_id, t.topic_id, p.post_time
	                FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
	                WHERE p.post_id = t.topic_last_post_id
	                      AND p.post_time > " . $userdata['user_lastvisit'] . "
	                      AND t.topic_moved_id = 0
	                      AND t.forum_id = $news_forum_id";
	        if ( !($result = $db->sql_query($sql)) )
	        {
	                message_die(GENERAL_ERROR, 'Could not query new topic information', '', __LINE__, __FILE__, $sql);
	        }

	        $new_topic_data = array();
	        while( $topic_data = $db->sql_fetchrow($result) )
	        {
	                $new_topic_data[$topic_data['forum_id']][$topic_data['topic_id']] = $topic_data['post_time'];
	        }

	        if ( !empty($new_topic_data[$news_forum_id]) )
	        {
	                $forum_last_post_time = 0;

	                while( list($check_topic_id, $check_post_time) = @each($new_topic_data[$news_forum_id]) )
	                {
	                        if ( empty($tracking_topics[$check_topic_id]) )
	                        {
	                                $unread_topics = true;
	                                $forum_last_post_time = max($check_post_time, $forum_last_post_time);
	                        }
	                        else
	                        {
	                                if ( $tracking_topics[$check_topic_id] < $check_post_time )
	                                {
	                                        $unread_topics = true;
	                                        $forum_last_post_time = max($check_post_time, $forum_last_post_time);
	                                }
	                        }
	                }

	                if ( !empty($tracking_forums[$news_forum_id]) )
	                {
	                        if ( $tracking_forums[$news_forum_id] > $forum_last_post_time )
	                        {
	                                $unread_topics = false;
	                        }
	                }

	                if ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) )
	                {
	                        if ( $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all'] > $forum_last_post_time )
	                        {
	                                $unread_topics = false;
	                        }
	                }

	        }
	}
        return $unread_topics;
}

Verfasst: 20.11.2002 22:23
von Gast
http://www.flugzeuginformation.de/php/index.php guckt euch mal oben den news bereich an wie müste ich da vor gehen ? ich will das auch so hin bekommen !