Buddylist mit Bildertablle
Eingetragen von marble (104)
am 24.07.2007 - 19:51 Uhr in
am 24.07.2007 - 19:51 Uhr in
Hallo zusammen,
ich versuche gerade eine darstellung meiner buddies in tabellenform zu basteln.
Was ich will sind zwei reihen von bildern die jeweils den avatar und darunter den usernamen enthalten.
Nach ein bisschen rumprobieren konnte dieses script(http://drupal.org/node/36501) halbwegs in meiner user_profile.tpl.php zum laufen bringen.
Allerding stecke ich jetzt mit dem layout fest. Soweit ich dass verstanden habe sollen php und layout getrennt werden und statt dessen benutzt man css tags. Leider habe ich keine ahnung wie ich das dann einbinden soll.
Nicht zu sehr schreien wenn ihr den code seht. Ich bin gerade noch wild am üben.
besten dank
<?php
if ( user_access('view buddy lists') || user_access('administer users') ) {
// if thisuser has friends, show friends
$output = '<table class="profileTable" cellpadding="0" cellspacing="0">
<tbody>';
$i = 0;
$cnt = variable_get('buddylist_prof_buddies', 8);
if ($buddies = buddylist_get_buddies($user->uid)) {
foreach(array_keys($buddies) as $buddy) {
$account = user_load(array('uid' => $buddy));
$output .= '<td valign="top"><table cellpadding="0" cellspacing="0"><tr><td height="85" width="85"><div style="height:85px; width:85px; border: 1px solid white; background-color: #0099ff "><table cellpadding="0" cellspacing="0" border="0"><center>';
$output .= theme('user_picture', $account);
$output .='</center> </table> </div> </tr></td><tr><td><center>';
$output .= $account->name;
$output .='</center></td></tr></table> </td>';
if($i==3){
$output .='<tr>';
}
$i++;
}
if (count($buddies) > variable_get('buddylist_prof_buddies', 8)) {
$output .= '<div class="more-link">' . l(t('more'), 'buddylist', array('title' => t('View more.'))) . '</div>';
}
$output .='</tr></tbody></table> ';
print $output;
}
}
?>
- Anmelden oder Registrieren um Kommentare zu schreiben
Zum erstellen von Tabellen
am 29.07.2007 - 12:44 Uhr
Zum erstellen von Tabellen gibt es die Funktion theme_table()[1], das
<center>
-Tag ist schon lange als deprecated eingestuft und sollte nicht mehr verwendet werden.CSS benutzt Du übrigens bereits, z.B. in
style="height:85px; width:85px; border: 1px solid white; background-color: #0099ff "
, allerdings solltest Du es nicht inline, wie hier benutzen, sondern in die style.css Deines Themes schreiben.vg
[1] http://api.drupal.org/api/5/function/theme_table
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
jetzt mit theme_table
am 29.07.2007 - 14:40 Uhr
Hi sanduhrs,
danke erstmal fuer den tipp. Habe das ganze nochmal komplett umgebaut und jetzt ist es wenigstens in sachen html tags aufgeräumter.
Wie kann ich die namen und bilder zentrieren, so dass sie in einer spalte übereinander stehen.
besten danke
<?php
if ( user_access('view buddy lists') || user_access('administer users') ) {
//Define number of Buddies that should be displayed in one table
$numberOfBuddiesPerPage = 8;
$i = 1;
$imageset=0;
if($_GET['b']){
$imageset=$_GET['b'];
}
// if thisuser has friends, show friends
if ($buddies = buddylist_get_buddies($user->uid)) {
if (count($buddies)>$numberOfBuddiesPerPage){
$x=ceil(count($buddies)/$numberOfBuddiesPerPage);//ceil da ich immer den größeren wert brauche
for ($d=1;$d<=$x; $d++){
$var =$d-1;
print('<a href="user/' .$user->uid .'/&b=' .$var .'#test">'.$d.' </a>');
}
}
// Define Rows for Pictures + Names
$pictureRow1=array();
$pictureRow2=array();
$nameRow1=array();
$nameRow2=array();
for ($k=$imageset*$numberOfBuddiesPerPage; ($k<$imageset*$numberOfBuddiesPerPage+$numberOfBuddiesPerPage) && ($k<count($buddies));$k++){
$userkeys = array_keys($buddies);
$account =user_load(array('uid' => $userkeys[$k]));
if($i <=($numberOfBuddiesPerPage/2) ){
$pictureRow1[] = theme('user_picture', $account);
$nameRow1[] = theme('username', $account);
}
else{
$pictureRow2[] = theme('user_picture', $account);
$nameRow2[] = themetheme('username', $account);
}
$i++;
}
//Create Table
$header = array();
$row=array($pictureRow1, $nameRow1, $pictureRow2, $nameRow2);
$tableHTML = theme('table', $header, $row);
print $tableHTML;
}
}
?>
css
am 29.07.2007 - 18:33 Uhr
Probier mal den Css-Code
text-align:center;
Mein Blog: www.exper-tec.de
Deutscher IRC-Channel: irc.freenode.net #drupal.de je mehr desto besser
... Jabber-me: dereine@jabber.ccc.de Warum Jabber?
Immer noch Probleme beim zentrieren
am 01.08.2007 - 16:41 Uhr
Wo hin schreibe ich denn den text-align:center; ?
Diese theme() function ist mir noch nicht so ganz klar. Woher weiss er denn was das theme von 'username' oder 'user_picture' ist, bzw wo kann ich dass anpassen?
nochmals danke
Themeable functions
am 01.08.2007 - 16:51 Uhr
CSS Angaben kommen in die style.css Deines Themes.
Die Definition von theme_username() findest Du unter [1]
Die Definition von theme_user_picture() findest Du unter [2]
Ändern/Beeinflussen kannst Du sie, indem Du in der Datei template.php (wenn nicht vorhanden einfach anlegen) die Funktionen reinkopierst, dan Namen von theme_xxx in phptemplate_xxx änderst, und einfach den Code Deinen Bedürfnissen anpasst.
vg
[1] http://api.drupal.org/?q=api/function/theme_username/5
[2] http://api.drupal.org/?q=api/function/theme_user_picture/5
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Danke!!
am 01.08.2007 - 16:56 Uhr
Das ging schnell