Sida 1 av 1

Ändra vad som syns i profilen

Postat: 2007-02-20 13:52
av Rehn
Om jag vill ändra något i vad som syns när man klickar på en användares profil antar jag att jag går in och gör det i profile_view_body.tpl, men nu är det så att det jag vill lägga till inkluderar lite php-kod och en del som läses från databaser. Då blir jag osäker på hur jag ska göra.

Först provade jag att bara lägga in koden i tpl-filen, men det ville sig inte.
Därför började jag fundera över alla funktioner (eller vad det är) som finns i filen annars, tex {INTERESTS} innan jag kom fram till att jag inte har någon aning om hur de fungerar. Varifrån läses dessa? Är det kanske bara jag som gör fel? Kan man skriva php-kod direkt i en tpl-fil?

Postat: 2007-02-20 14:35
av Marcus
Nej, du kan inte lägga till php-kod i TPL-filen.

Den fil du ska editera för att ändra PHP-kod är <forumrot>/includes/usercp_viewprofile.php

Från den filen tilldelas alla Template-variabler (t.ex. {INTERESTS}) sina värden.

Du kan skapa egna variabler, och sedan visa dem på den TPL-fil som hör till PHP-filen.

/marcus

Postat: 2007-02-20 15:58
av Rehn
Super :mrgreen:, tack så mycket.

Nu får jag dock nya problem. Efterson den mängd data som ska visas är olika från användare till användare blir det väldigt krångligt på det där viset.
Det är bara ett fält i tabellen jag vill lägga till, och det allra enklaste vore om den på något sätt kunde läsa in en hel tabell jag krånglat fram och ha den i fältet.
Jag antar att jag var väldigt otydlig nu, så jag tog mig tid att göra en fin bild istället som kan förklara allt.

Bild

Be om extra förklaring om jag fortfarande är otydlig.

Postat: 2007-02-20 19:27
av Marcus
Prova att trycka in en tabell i sin helhet, så ser du om det blir bra.

Dvs. du till delar 'min_tabell' => '<table><tr><td>Sven</td><td>Man... ...</table>',

Och sedan kommer TPL-filen att kasta in din tabell där du sätter in {min_tabell}

Och jag antar att du kanske inte har helt statiskt "Sven" där, utan att du har någon form av databas i botten som du hämtar in data ifrån...

Ex. du har en databas som med koppling till userId i phpBB innehåller lite info. T.ex. 100, 'Sven', 'Man'.

Sedan när du ska hämta ut alla data för user 100, så skriver du:

$resultat = mysql_query('SELECT * FROM minDatabasTabell WHERE userId = {$userID_fran_phpBB}");

$resultat kommer nu innehålla alla rader i din egen tabell som har med user 100 (om du $userId_fran_phpBB är satt till just 100).

Sedan skapar du en tabell, men en rad för varje rad i din databas.

Denna tabell tilldelar du in i en variabel, som du slutligen tilldelar "templatvarabeln" min_tabell.

/marcus

PS!
Svarar rätt kort, för du verkar ha koll på HTML...
DS!

Postat: 2007-02-21 15:18
av Rehn
Så kan man såklart göra! Så smart!

Nu är problemet att jag sitter och krånglar med 4 databaser för att få fram tabellen. Ifrågasätt inte det, det är absolut nödvändigt.

Nu har jag bara en fråga som förmodligen och förhoppningsvis är väldigt enkel. Det är nämligen som så att jag aldrig fattat hur man skriver i php för att lägga till saker i en sträng (eller varchar eller vad det heter). Exempel:

Kod: Markera allt

$test="svenne";
$test+=" och lotta"; //så här kan man väl inte skriva?

Postat: 2007-02-22 07:14
av Marcus
Nästan, du använder inte addition utan konkatenering.

Kod: Markera allt

$test = "Marcus";
$test .= " är kung på PHP! ;-)";
Då kommer $test att innehålla:

"Marcus är kung på PHP! ;-)"

På detta sätta kan du sedan använda .-tecknet till att binda ihop variabler och statiska strängar. T.ex.:

Kod: Markera allt

$minVar = "<table>\n";
while($raddata = mysql_fetch_array($databassvar) {
   $minVar .= "\t<tr>\n";
   $minVar .= "\t\t<td>" . $raddata['name'] . "</td>\n";
   $minVar .= "\t\t<td>" . $raddata['sex'] . "</td>\n";
   $minVar .= "\t</tr>\n";
}
$minVar .="</table>";
Har iofs. för mig att Java (eller om det är Javascript, eller båda) har += för både matematik och stänghantering.

/marcus

Postat: 2007-02-23 13:42
av Rehn
Det där stämmer ju alldeles utmärkt och fungerar likaså!

Då var det bara ett problem kvar (för den här gången). När man tittar på en profil står det ju u=användarens id, i mitt fall 2236. Nu är den stora frågan var man hittar det värdet i usercp_viewprofile.php, och om det inte finns alls där; hur får man med sig det dit från profile.php?

Postat: 2007-02-23 19:13
av PazZze
$userdata['user_id']
$profiledata['user_id']

någon av dom så får man fram id i en php fil..

så typ i usercp_viewprofile.php kan du lägga till

Kod: Markera allt

'USERID' => $profiledata['user_id'],
efter

Kod: Markera allt

'POST_PERCENT_STATS' => sprintf($lang['User_post_pct_stats'], $percentage), 
den finns nästan längst ner på sidan..

sen är det bara att i profile_add_body.tpl lägga till

Kod: Markera allt

{USER_ID}
där du vill ha id:et utskrivet