Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

Daten des Autors eines Nodes innerhalb des Nodes anzeigen lassen

Eingetragen von drupaler3000 (78)
am 02.08.2008 - 10:21 Uhr in
  • Allgemeines zu Drupal
  • Drupal 5.x

Ich möchte verschiedene Daten eines Benutzers innerhalb eines Nodes, also in node.tpl.php anzeigen lassen:

1. Name des Autors -> ist geklärt:

<?php
print $name
?>

2. Anzahl der Userpoints:

Ich habe eine Funktion im Modul gefunden, die die Userpoints des Benutzers wiedergibt, der den Node gerade betrachtet. Natürlich soll hier aber die Zahl des Autors stehen, also node->uid:

/**
* @param uid: user id of the user to get or lose the points
*
* @return number of current points in that user's account
*/
function userpoints_get_current_points($uid = NULL, $tid = NULL) {
  if (!$uid) {
    global $user;
    $uid = $user->uid;
  }
  if (!$tid) {
    $tid = userpoints_get_default_tid();
  }
  elseif ($tid == 'all') {
    return (int)db_result(db_query('SELECT SUM(points) FROM {userpoints} WHERE uid = %d', $uid));
  }
  return (int)db_result(db_query('SELECT points FROM {userpoints} WHERE uid = %d AND tid = %d', $uid, $tid));
}

Ich habe bereits versucht den Code entsprechend zu ändern, aber es hat nicht funktioniert.

3. Anzahl der Beiträge:

Wenn jemand weiß wie man die Anzahl der Beiträge anzeigen lassen kann, wie kann man dann speziell die Beiträge eines Inhaltstyps, oder die Anzahl der Kommentare anzeigen lassen?

Das war es auch schon. Es wäre hilfreich wenn mir jemand helfen könnte.
P.S.: Vielleicht hilft das weiter: http://drupal.org/node/166238

‹ Frage zum Installations-Pfad warum gehören Unterkategorien nicht automatisch zu Hauptkategorie ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Zu 2. Zitat: Ich habe

Eingetragen von quiptime (4972)
am 02.08.2008 - 10:59 Uhr

Zu 2.

Zitat:

Ich habe bereits versucht den Code entsprechend zu ändern, aber es hat nicht funktioniert

Du sollst ja auch nicht den Code des Modules aendern SONDERN bestenfalls diese Funktion dort aufrufen wo Du sie (seine Ausgabe) benoetigst - also in der Templatedatei.

<?php
print 'Blabla Punkte: ' . userpoints_get_current_points($node->uid);
?>

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

DA hätte ich wohl gleich

Eingetragen von drupaler3000 (78)
am 02.08.2008 - 11:29 Uhr

DA hätte ich wohl gleich drauf kommen müssen! Danke, so funktioniert es natürlich. Ich Laie bin nicht drauf gekommen...

Jetzt muss ich nur noch das mit den Anzahl der Beiträgen wissen...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das sind eigentlich 2 Fragen.

Eingetragen von quiptime (4972)
am 02.08.2008 - 11:35 Uhr
Zitat:

Wenn jemand weiß wie man die Anzahl der Beiträge anzeigen lassen kann, wie kann man dann speziell die Beiträge eines Inhaltstyps, oder die Anzahl der Kommentare anzeigen lassen?

Das sind eigentlich 2 Fragen.

Wobei die "2. Frage" unklar formuliert ist.

Welche Kommentare sind gemeint?
Die eines Node oder die eines User?

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

das irritiert bestenfalls

Eingetragen von quiptime (4972)
am 02.08.2008 - 11:37 Uhr
Zitat:

P.S.: Vielleicht hilft das weiter: http://drupal.org/node/166238

Das hilft nicht weiter sondern irritiert bestenfalls.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Okay, dann irritierts

Eingetragen von drupaler3000 (78)
am 02.08.2008 - 12:36 Uhr

Okay, dann irritierts halt.

Aber ich habe es so gemeint:

1. Anzahl der Kommentare des Autors
2. Anzahl der Beiträge des Autors, eines bestimmten Inhaltstyps

Es tut mir leid wenn der gut gemeinte Link irritiert, ich habe gedacht er wäre für Experten ein Anhaltspunkt.

Hier aber noch was interessantes:

http://drupal.org/node/262577

<?php
$users
= db_query("SELECT COUNT(nid) AS count, {users}.uid, {users}.name FROM {node} LEFT JOIN {users} ON {node}.uid = {users}.uid WHERE {node}.uid != 0 GROUP BY uid ORDER BY count DESC LIMIT 10");
while (
$user = db_fetch_object($users)) {
print
"<a href=\"blog/".$user->uid."\">".$user->name."</a>: ".$user->count." posts<br>";
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Was genau meinst Du?

Eingetragen von quiptime (4972)
am 02.08.2008 - 12:43 Uhr
Zitat:

2. Anzahl der Beiträge des Autors, eines bestimmten Inhaltstyps

Was genau meinst Du?

- Anz. der Beitraege des Authors insgesamt UND Anz. der Beitraege des Authors von einem bestimmten Nodetype?

oder

- Anz. der Beitraege des Authors von einem bestimmten Nodetype?

PS
Das Komma irritiert.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich meine die Anzahl der

Eingetragen von drupaler3000 (78)
am 02.08.2008 - 13:00 Uhr

Ich meine die Anzahl der Beiträge eines bestimmten Nodetypes.
Also:
Nodetype A: 45 Beiträge
Notetype B: 84 Beiträge
usw.

Ich hoffe das kleine Beispiel erläutert das besser, als meine schlechte Schreibweise... :]

Aber natürlich nur in Bezug auf den Autor, nicht die gesamte Anzahl aller Beiträge eines Nodetypes.

P.S.: Der obige Code gilt so verändert zu werden, dass nicht eine Liste mit Benutzern angezeigt wird, sondern nur der Autor. Ich kenne mich aber leider mit SQL Datenbankabfragen noch nicht aus.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe hier noch 2

Eingetragen von drupaler3000 (78)
am 02.08.2008 - 13:41 Uhr

Ich habe hier noch 2 hilfreiche Funktionen gefunden:

Mit dieser Funktion wird die Anzahl der Beiträge pro Typ und pro Jahr aller Benutzer angezeigt:

function custom_count_pull(){
    $sql = "SELECT type, COUNT(nid) AS number, FROM_UNIXTIME(created, '%Y')  AS createdate FROM {node} GROUP BY type, createdate ORDER BY createdate DESC";
    $result = db_query($sql);
    $article_count = array();

    while ($data = db_fetch_object($result)){
        if (isset($article_count[$data->type])) {
      
            $article_count[$data->type][$data->createdate] = $data->number;
        } else {
            $article_count[$data->type] = array($data->createdate => $data->number);
        }
    }
    $today = date("Y");
    $years = array($today,$today+1,$today+2);

    $output .= "<table><tr><th>Type</th><th>{$years[0]}</th><th>{$years[1]}</th><th>{$years[2]}</th></tr>";  
    foreach ($article_count as $type => $value) {
        $real_type_name = node_get_types('name', $type);
        $output .= "<tr> <td>$real_type_name</td>";

        foreach ($years as $year) {
            if ($value[$year]):
            $output .= "<td>{$value[$year]}</td>";
            else:
            $output .= "<td>0</td>";
            endif;
        }
        $output .= "</tr>";
    }
    $output .= "</table>";
    return $output;
}

Aber mit der folgenden, ist man schon näher an meinem Ziel. Es wird eine Tabelle angezeigt, wieviel Beiträge pro Typ und pro Benutzer an welchem Datum geschrieben wurden. Wenn man das Argument des Datums streicht, und die funktion so umschreibt, dass nur der Autor relevant ist und nicht alle Benutzer wären wir am Ziel:

<?php
$how_many_per_page
= 100;

$query = "SELECT {node}.created AS Date, name, type, COUNT(*) AS Total
FROM {node} JOIN {users}
ON {node}.uid = {users}.uid
GROUP BY FROM_DAYS(TO_DAYS(FROM_UNIXTIME({node}.created))), name, type"
;

$count = "SELECT COUNT(*) FROM (SELECT DISTINCT FROM_DAYS(TO_DAYS(FROM_UNIXTIME({node}.created))) AS DATE,  uid, type FROM {node}) AS Data_row";

$results = pager_query($query, $how_many_per_page, 0, $count);

$header = array(t('Date'), t('Name'), t('Type'), t('Total'));

$attributes = array('width' => '75%',
                              
'align' => 'center',
                              
'border' => '2',
                            );

$rows = array();

while (
$quote = db_fetch_array($results)) {
     
$rows[] = array(date('Y/m/d',$quote['Date']),  $quote['name'], $quote['type'], $quote['Total']);
      }

if (
count($rows)) {
      echo
theme('table', $header, $rows, $attributes);
      echo
theme('pager', NULL, $how_many_per_page);
      }
      else { echo
'No results found'; }
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Anz. Nodes eines Typ von best. User - mit einem View ermitteln

Eingetragen von quiptime (4972)
am 02.08.2008 - 18:10 Uhr

Unter Drupal 6 kann man die Info "Anzahl der Nodes eines Typ von einem bestimmten User" bequem und einfach mit einem View ermitteln.
Habe das eben getestet.

Das sollte unter Drupal 5 auch gehen.
 

PS
Der View wird zur Anzeige der Zahl eingebettet.

D5, bei mehreren Nodetypes sind mehrere Views notwendig.
D6, bei mehreren Nodetypes ein View mit mehreren Anzeigen.

 
2. PS
Mit 'nem View ersparst Du Dir die "Code-Orgie".

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich teste es mal mit dem

Eingetragen von drupaler3000 (78)
am 02.08.2008 - 18:29 Uhr

Ich teste es mal mit dem View-Modul, und erläutere die Vorgehensweise genauer, falls es funktionieren sollte.
Danke für deinen Tipp.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also bei mir geht das nicht.

Eingetragen von drupaler3000 (78)
am 02.08.2008 - 18:50 Uhr

Also bei mir geht das nicht. Ich finde zumindest kein passendes Feld.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Bei mir funktioniert es.

Eingetragen von quiptime (4972)
am 02.08.2008 - 20:40 Uhr

Bei mir funktioniert es. Unter d6 sogar extrem komfortabel.

Wenn Du magst kann ich Dir meinen View mit VNC zeigen.

Wie gesagt, ich denke mit D5 sollte es auch funktionieren. Halt nur nicht in einem View sondern in mehreren - je nach dem wieviel Nodetypes man je User zaehlen will.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es wäre nett, wenn du das

Eingetragen von drupaler3000 (78)
am 02.08.2008 - 20:46 Uhr

Es wäre nett, wenn du das machen würdest, und mir erläutern würdest wie man es machen könnte, weil es extrem wichtig für mich ist.

Danke schon mal im Voraus!

  • Anmelden oder Registrieren um Kommentare zu schreiben

@drupaler3000, komme doch

Eingetragen von quiptime (4972)
am 02.08.2008 - 21:00 Uhr

@drupaler3000, komme doch einfach mal in den DVC.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe das aber noch gar

Eingetragen von drupaler3000 (78)
am 02.08.2008 - 21:10 Uhr

Ich habe das aber noch gar nicht konfiguriert.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wer oder was hindert Dich

Eingetragen von quiptime (4972)
am 02.08.2008 - 21:27 Uhr

Wer oder was hindert Dich daran es Jetzt zu tun?

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Loesung gefunden - Views mit Template

Eingetragen von quiptime (4972)
am 03.08.2008 - 13:30 Uhr

Der View so wie Gestern im VNC. Zur Anzeige noch ein Template, welches nur die Anzahl als Ziffer realisiert.

Der View zum Importieren:

  $view = new stdClass();
  $view->name = 'NodesCount';
  $view->description = 'Anz. der Nodes eines Typ der User.';
  $view->access = array (
);
  $view->view_args_php = '';
  $view->page = TRUE;
  $view->page_title = '';
  $view->page_header = '';
  $view->page_header_format = '1';
  $view->page_footer = '';
  $view->page_footer_format = '1';
  $view->page_empty = '';
  $view->page_empty_format = '1';
  $view->page_type = 'list';
  $view->url = 'nodescount/$arg';
  $view->use_pager = TRUE;
  $view->nodes_per_page = '10';
  $view->sort = array (
  );
  $view->argument = array (
    array (
      'type' => 'uid',
      'argdefault' => '6',
      'title' => '',
      'options' => '',
      'wildcard' => '',
      'wildcard_substitution' => '',
    ),
  );
  $view->field = array (
    array (
      'tablename' => 'node',
      'field' => 'title',
      'label' => '',
      'handler' => 'views_handler_field_nodelink',
      'options' => 'link',
    ),
  );
  $view->filter = array (
    array (
      'tablename' => 'node',
      'field' => 'status',
      'operator' => '=',
      'options' => '',
      'value' => '1',
    ),
    array (
      'tablename' => 'node',
      'field' => 'type',
      'operator' => 'OR',
      'options' => '',
      'value' => array (
  0 => 'story',
),
    ),
  );
  $view->exposed_filter = array (
  );
  $view->requires = array(node);
  $views[$view->name] = $view;

 
Fuer das Views-Template - in der "template.php" eintragen:

/**
* views template to output a view.
* This code was generated by the views theming wizard
* Date: So, 08/03/2008 - 13:37
* View: NodesCount
*
* This function goes in your template.php file
*/
function phptemplate_views_view_list_NodesCount($view, $nodes, $type) {
  $fields = _views_get_fields();

  $taken = array();

  // Set up the fields in nicely named chunks.
  foreach ($view->field as $id => $field) {
    $field_name = $field['field'];
    if (isset($taken[$field_name])) {
      $field_name = $field['queryname'];
    }
    $taken[$field_name] = true;
    $field_names[$id] = $field_name;
  }

  // Set up some variables that won't change.
  $base_vars = array(
    'view' => $view,
    'view_type' => $type,
  );

  foreach ($nodes as $i => $node) {
    $vars = $base_vars;
    $vars['node'] = $node;
    $vars['count'] = $i;
    $vars['stripe'] = $i % 2 ? 'even' : 'odd';
    foreach ($view->field as $id => $field) {
      $name = $field_names[$id];
      $vars[$name] = views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view);
      if (isset($field['label'])) {
        $vars[$name . '_label'] = $field['label'];
      }
    }
    $items[] = _phptemplate_callback('views-list-NodesCount', $vars);
  }
  //if ($items) {
    //return theme('item_list', $items);
  //}
  return $vars['count'] + 1;
}

Die Variable $count muss um 1 hochgezaehlt werden weil in der Schleife der Zaehlvorgang mit 0 beginnt.

 
Die Template-Datei "views-list-NodesCount.tpl.php":

<?php // $Id: views-list-NodesCount.tpl.php, v 1.0 2008/08/03 10:36:36 quiptime Exp $
/**
* View: NodesCount
*/
print $nodes['count'];
?>

 
Und wie schon gesagt. Wenn die Anzahl der Nodes mehrerer Nodetypes benoetigt wird entsprechende Views erstellen.

 
Den View in Node/Nodetype-Template einfuegen:

<?php
$view_args
= array($node->uid); // User ID
$view = views_get_view('NodesCount');
print
views_build_view('embed', $view, $view_args, FALSE, '1');
?>

Embed View without insert_view module

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe den View

Eingetragen von drupaler3000 (78)
am 03.08.2008 - 15:22 Uhr

Ich habe den View importiert, den Code in die template.php datei eingetragen, und den letzten code in die node.tpl.php datei eingetragen. Aber bei mir zeigt der View nichts an, auch wenn ich auf nodescount/$arg gehe.

Wurde der Code bereits getestet, oder ist noch ein Modul oder ein anderer Schritt nötig, damit dieser View funktioniert? Ich bin etwas ratlos. Es scheint mir dass ich alles richtig gemacht habe..

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das muss einfach mit einer

Eingetragen von drupaler3000 (78)
am 06.08.2008 - 21:23 Uhr

Das muss einfach mit einer SQl Abfrage möglich sein, und das ist es auch.

ich weiß nur nicht wie, wenn jemand weiß wie man mit SQL eine Datenbankabfrage macht, wäre es nett wenn er mir weiterhelfen könnte.

Diese Funktion trägt bereits alles in sich:

function count_nodes_of_author($node) {
$how_many_per_page = 100;

$query = "SELECT {node}.created AS uid, name, type, COUNT(*) AS Total
FROM {node} JOIN {users}
ON {node}.uid = {users}.uid
GROUP BY FROM_DAYS(TO_DAYS(FROM_UNIXTIME({node}.created))), name, type";

$count = "SELECT COUNT(*) FROM (SELECT DISTINCT FROM_DAYS(TO_DAYS(FROM_UNIXTIME({node}.created))) AS DATE,  uid, type FROM {node}) AS Data_row";

$results = pager_query($query, $how_many_per_page, 0, $count);

$rows = array();

while (
$quote = db_fetch_array($results)) {
      $rows[] = array($quote['name'], $quote['type'], $quote['Total']);
      }

if (
count($rows)) {
      echo theme('table', $header, $rows, $attributes);
      echo theme('pager', NULL, $how_many_per_page);
      }
      else { echo 'No results found'; }
}

Das Einzige was geändert werden muss, ist dass der Name der Username nicht einfach nur ausgegeben wird, sondern nur das von $node->uid alias Autor angezeigt wird:

Das wird jetzt ausgegeben:
admin nodetypeA 1
admin nodetypeB 1
userb nodetypeC 1

Der Name "admin" wird nicht ausgegeben, sondern mit dem Autor "überprüft". Sodass nur die Zeilen des Autors ausgegeben werden.

Dürfte doch nicht so schwer sein, oder??

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe eine einfache

Eingetragen von drupaler3000 (78)
am 10.08.2008 - 14:34 Uhr

Ich habe eine einfache Methode gefunden: Man muss das Modul Userstats installieren und der dokumentation unter read documentation folgen. Damit kann man relativ leicht die Anzahl der Beiträge innerhalb des Nodes, und auch im Profil anzeigen lassen. Leider habe ich es nicht geschafft, die Posts je nach Nodetype zu trennen. Aber besser als nichts ist es allemal.

Hier der Code:

<?php
print user_stats_get_stats('post_count', $node->uid);
?>

Hat jemand vielleicht Tipps, wie man den Code noch etwas modifizieren kann?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 2 Stunden
  • Hey danke
    vor 1 Woche 20 Stunden
  • Update: jetzt gibt's ein
    vor 1 Woche 1 Tag
  • Hallo, im Prinzip habe ich
    vor 1 Woche 6 Tagen
  • Da scheint die Terminologie
    vor 1 Woche 6 Tagen
  • Kannst doch auch alles direkt
    vor 2 Wochen 3 Tagen
  • In der entsprechenden View
    vor 2 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 2 Wochen 3 Tagen
  • gelöst
    vor 4 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 21 Stunden

Statistik

Beiträge im Forum: 250233
Registrierte User: 20450

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 9 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association