Stijlen Vraag

Installatie lukt niet? Plotseling een foutmelding. Of weet je niet hoe iets werkt. Problemen met phpBB2 kun je in dit archief opzoeken.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
jan8271
Berichten: 20
Lid geworden op: 24 jan 2004, 13:03

Bericht door jan8271 » 29 sep 2004, 15:28

Henk van de Kamer schreef:
mosymuis schreef:Dat verklapte ik hier al. ;)
Maar daar begreep ik je nog niet. En ik vraag mij af of de oorspronkelijke vragensteller dat daaruit haalt :)

Maar volgens mij zijn we het wel met elkaar eens dat je in dit soort gevallen gewoon moet gaan experimenteren met de phpBB code. Ik kan het iedereen dan ook aanraden om een testforum in te richten. Dan kan je naar hartelust stukjes code slopen, vervangen en zo erachter komen hoe het werkt. Want dat is veel gemakkelijker dan zelf alle code verzinnen...
ik zit ook nog maar net met php te stoeien, en begrijp jou beter ;)
ik wil me er ook graag in verdiepen en ga meteen aan de slag op mijn test forum, laat jullie weten hoe het gaat

bedankt voor de tips

jan8271
Berichten: 20
Lid geworden op: 24 jan 2004, 13:03

Bericht door jan8271 » 29 sep 2004, 21:30

ik ben er eens lekker voor gaan zitten, maar het wil nog niet echt lukken

standaard heeft mijn forum Subsilver
en nu heb ik nog 2 templates - een jongens en meiden template

maar dat wisten jullie al

dit is wat ik wou gaan doen:

index.php --> subsilver (standaard)
indexboys.php --> jongens template
indexgilz.php --> meiden template

waar kan ik in de index page instellen wel template er wordt weer gegeven?
want dan ben ik volgens mij klaar
als ik kan instellen dat de indexpagina voor de jongens de jongens template weer geeft moet het voldoelde zijn

Gebruikersavatar
mosymuis
Berichten: 6940
Lid geworden op: 05 feb 2003, 14:00
Locatie: Amsterdam
Contacteer:

Bericht door mosymuis » 29 sep 2004, 21:33

Je kan het nergens in de index pagina aanpassen, maar in de functies die ik nu al twee keer opsomde. Twee index pagina's zijn dan ook niet nodig (iets wat ik ook al eerder zei).

jan8271
Berichten: 20
Lid geworden op: 24 jan 2004, 13:03

Bericht door jan8271 » 29 sep 2004, 21:44

mosymuis schreef:Aparte index pagina's zijn niet nodig, tenslotte wordt de template opgebouwd door de functie setup_style(), en je kunt ongeacht de pagina een $_GET variabele opvragen. Pas dat aan in de functies init_userprefs() en message_die(), waar setup_style word aangeroepen (met een template ID). Al deze functies vind je in includes/functions.php.
dit stuk bedoel je?

ik begin net met php, en moet zeggen, snap er echt helemaal niets van :oops:
1 van de eerste keer dat ik in een php script kijk namelijk

Gebruikersavatar
mosymuis
Berichten: 6940
Lid geworden op: 05 feb 2003, 14:00
Locatie: Amsterdam
Contacteer:

Bericht door mosymuis » 29 sep 2004, 22:48

Hmm, dat gaat je waarschijnlijk niet lukken dan. ;)

Dit zijn de aanpassingen die je moet maken.

SQL query

Code: Selecteer alles

ALTER TABLE phpbb_sessions ADD session_style tinyint(4) default 0 NOT NULL;
Open
includes/functions.php

Zoek

Code: Selecteer alles

	global $nav_links;
Plaats eronder

Code: Selecteer alles

	global $HTTP_GET_VARS, $db, $session_id;
Zoek

Code: Selecteer alles

	//
	// Set up style
	//
	if ( !$board_config['override_user_style'] )
	{
		if ( $userdata['user_id'] != ANONYMOUS && $userdata['user_style'] > 0 )
		{
			if ( $theme = setup_style($userdata['user_style']) )
			{
				return;
			}
		}
	}

	$theme = setup_style($board_config['default_style']);
Vervang met

Code: Selecteer alles

	//
	// Set up style
	//
	if ( !$board_config['override_user_style'] )
	{
		if ( isset($HTTP_GET_VARS['s']) )
		{
			switch($HTTP_GET_VARS['s'])
			{
				case 'boys': $style_id = 1; break;
				case 'girls': $style_id = 2; break;
				default: $style_id = $board_config['default_style']; break;
			}

			$theme = setup_style($style_id);

			if ( $userdata['session_logged_in'] )
			{
				if ( $userdata['user_style'] != $style_id )
				{
					$sql = "UPDATE " . USERS_TABLE . "
						SET user_style = $style_id
						WHERE user_id = " . $userdata['user_id'];
					if ( !$db->sql_query($sql) )
					{
						message_die(GENERAL_ERROR, "Could not update user theme.", '', __LINE__, __FILE__, $sql);
					}
				}
			
			} else {
			
				if ( $userdata['session_style'] != $style_id )
				{
					$sql = "UPDATE " . SESSIONS_TABLE . "
						SET session_style = $style_id
						WHERE session_id = '" . $userdata['session_id'] . "'";
					if ( !$db->sql_query($sql) )
					{
						message_die(GENERAL_ERROR, "Could not update session theme.", '', __LINE__, __FILE__, $sql);
					}
				}
			}

		} else {

			if ( $userdata['user_style'] && $userdata['session_logged_in'] )
			{
				if ( $theme = setup_style($userdata['user_style']) )
				{
					return;
				}
				
			} elseif ( $userdata['session_style'] ) {
			
				if ( $theme = setup_style($userdata['session_style']) )
				{
					return;
				}

			} else {
			
				$theme = setup_style($board_config['default_style']);
			}
		}
	}
Nu kan je achter elke willekeurige pagina s=girls of s=boys plakken. Doe dat met een ? of een &, afhankelijk van het url. Voorbeelden: Wanneer iemand een dergelijke link aanklikt word zijn sessie (gast), of standaard template geupdate (lid).

Als je jongens en meisjes template geen theme_id's 1 en 2 hebben moet je dit nog wel even aanpassen in de switch() functie.

Gebruikersavatar
desert spider
Berichten: 1101
Lid geworden op: 08 feb 2004, 18:51

Bericht door desert spider » 30 sep 2004, 14:17

die mod die ik gaf doet presies het zelfte
http://www.owns.nl/hwfactory/computer/kb.php?s=maxos
http://www.owns.nl/hwfactory/computer/kb.php?s=phpXP2
en hij slaat het op in cookies voor gasten en in een table voor users
dus als ik terug kom ziet het er presies het zelfte uit zoals ik had ingestelt als gast!

Gebruikersavatar
mosymuis
Berichten: 6940
Lid geworden op: 05 feb 2003, 14:00
Locatie: Amsterdam
Contacteer:

Bericht door mosymuis » 30 sep 2004, 15:08

DO'H! :(

Maar toch, mijn aanpassing gebruikt de sessie database tabel, en geen cookies. Dat werkt dus gegarandeerd. ;):roll:

jan8271
Berichten: 20
Lid geworden op: 24 jan 2004, 13:03

Bericht door jan8271 » 30 sep 2004, 17:42

TOP :bier: ; harstike bedankt, ik ga meteen weer aan de slag :thumb:

jan8271
Berichten: 20
Lid geworden op: 24 jan 2004, 13:03

Bericht door jan8271 » 05 okt 2004, 15:15

mosymuis schreef:Hmm, dat gaat je waarschijnlijk niet lukken dan. ;)

Dit zijn de aanpassingen die je moet maken.

SQL query

Code: Selecteer alles

ALTER TABLE phpbb_sessions ADD session_style tinyint(4) default 0 NOT NULL;
Open
includes/functions.php

Zoek

Code: Selecteer alles

	global $nav_links;
Plaats eronder

Code: Selecteer alles

	global $HTTP_GET_VARS, $db, $session_id;
Zoek

Code: Selecteer alles

	//
	// Set up style
	//
	if ( !$board_config['override_user_style'] )
	{
		if ( $userdata['user_id'] != ANONYMOUS && $userdata['user_style'] > 0 )
		{
			if ( $theme = setup_style($userdata['user_style']) )
			{
				return;
			}
		}
	}

	$theme = setup_style($board_config['default_style']);
Vervang met

Code: Selecteer alles

	//
	// Set up style
	//
	if ( !$board_config['override_user_style'] )
	{
		if ( isset($HTTP_GET_VARS['s']) )
		{
			switch($HTTP_GET_VARS['s'])
			{
				case 'boys': $style_id = 1; break;
				case 'girls': $style_id = 2; break;
				default: $style_id = $board_config['default_style']; break;
			}

			$theme = setup_style($style_id);

			if ( $userdata['session_logged_in'] )
			{
				if ( $userdata['user_style'] != $style_id )
				{
					$sql = "UPDATE " . USERS_TABLE . "
						SET user_style = $style_id
						WHERE user_id = " . $userdata['user_id'];
					if ( !$db->sql_query($sql) )
					{
						message_die(GENERAL_ERROR, "Could not update user theme.", '', __LINE__, __FILE__, $sql);
					}
				}
			
			} else {
			
				if ( $userdata['session_style'] != $style_id )
				{
					$sql = "UPDATE " . SESSIONS_TABLE . "
						SET session_style = $style_id
						WHERE session_id = '" . $userdata['session_id'] . "'";
					if ( !$db->sql_query($sql) )
					{
						message_die(GENERAL_ERROR, "Could not update session theme.", '', __LINE__, __FILE__, $sql);
					}
				}
			}

		} else {

			if ( $userdata['user_style'] && $userdata['session_logged_in'] )
			{
				if ( $theme = setup_style($userdata['user_style']) )
				{
					return;
				}
				
			} elseif ( $userdata['session_style'] ) {
			
				if ( $theme = setup_style($userdata['session_style']) )
				{
					return;
				}

			} else {
			
				$theme = setup_style($board_config['default_style']);
			}
		}
	}
Nu kan je achter elke willekeurige pagina s=girls of s=boys plakken. Doe dat met een ? of een &, afhankelijk van het url. Voorbeelden: Wanneer iemand een dergelijke link aanklikt word zijn sessie (gast), of standaard template geupdate (lid).

Als je jongens en meisjes template geen theme_id's 1 en 2 hebben moet je dit nog wel even aanpassen in de switch() functie.
ok, die SQL query toevoeging heb ik gedaan;

Code: Selecteer alles

[b]Veld  Type Attributen Null Standaardwaarde [/b]
sesion_style  tinyint(4)   Nee  0  
dat aanpassen in functions.php ook

ik heb 1 veranderd na boys
2 na girls

Code: Selecteer alles

            case 'boys': $style_id = Boyz; break; 
            case 'girls': $style_id = Girlz; break; 
Stijl Template
Girlz AirHead
Boyz Boyz

maar als ik dan index.php?s=girls probeer krijk ik het volgende:

Code: Selecteer alles

phpBB : Critical Error 

Could not query database for theme info

DEBUG MODE

SQL Error : 1054 Unknown column 'AirHead' in 'where 
wat doe ik fout?

Gebruikersavatar
mosymuis
Berichten: 6940
Lid geworden op: 05 feb 2003, 14:00
Locatie: Amsterdam
Contacteer:

Bericht door mosymuis » 05 okt 2004, 15:45

jan8271 schreef:ik heb 1 veranderd na boys
2 na girls

Code: Selecteer alles

            case 'boys': $style_id = Boyz; break; 
            case 'girls': $style_id = Girlz; break; 
Stijl Template
Girlz AirHead
Boyz Boyz
Dit is ten eerste incorrecte PHP code; strings (woorden) moet je opgeven met tussen '..'. Dat veroorzaakt ook je SQL error. Ten tweede moet je daar de theme_id's invullen, de bijbehorende nummers dus.

jan8271
Berichten: 20
Lid geworden op: 24 jan 2004, 13:03

Bericht door jan8271 » 05 okt 2004, 16:12

YES het is gelukt, tnx mosymuis :bier:

met dat s=owjfow kan ik nu een andere style te pakken krijgen

jan8271
Berichten: 20
Lid geworden op: 24 jan 2004, 13:03

Bericht door jan8271 » 05 okt 2004, 17:57

mosymuis schreef:
jan8271 schreef:
mosymuis schreef: Je hebt die SQL instructie niet uitgevoerd.
Veld Type Null Standaardwaarde
sesion_style tinyint(4) Nee 0

dit klopt toch?
[/b]
Je moet de query draaien, niets zelf toevoegen.
ik weet niet hoe dat moet :oops:


jan8271
Berichten: 20
Lid geworden op: 24 jan 2004, 13:03

Bericht door jan8271 » 05 okt 2004, 18:12

ja, ik heb nu alles voor elkaar, bedankt! :thumb:

Gesloten