web-dev-qa-db-fra.com

Comment puis-je afficher les notes de l'utilisateur actuel dans le front-end qui ont été ajoutées dans le back-end de Joomla?

Il existe une très bonne fonctionnalité dans Joomla 3.3 qui permet d’ajouter des notes pour chaque utilisateur.

Dans une partie de la zone d'administration, nous pouvons sélectionner un utilisateur et lui ajouter une note.
Lorsqu'un utilisateur est connecté au serveur, j'aimerais qu'il puisse voir ce texte. J'ai googlé et je ne trouve rien à ce sujet.
Est-ce qu'il y a un moyen de faire ça?

5
Mostafa Fallah

Essayez ce code -

if ($user->id) {
    $db =JFactory::getDBO();
    $query = $db->getQuery(true);
    $query->select('*')
    ->from('#__user_notes')
    ->where('user_id = '. (int)$user->id)
    ->where('state=1');
    $db->setQuery($query);
    $rows = $db->loadObjectList();
    print_r($rows[0]->body);
}

J'espère que ça vous aidera :)

1
Joomler

Je suppose que les deux seules colonnes importantes pour vos utilisateurs seront subject et body. Après avoir demandé à vos utilisateurs d'être connectés, vous pouvez créer votre requête pour exclure les notes attribuées à d'autres utilisateurs et les notes non publiées. Je vais vous montrer comment construire votre clause SELECT afin d'afficher une table HTML simple devient un jeu d'enfant avec implode().

$user = JFactory::getUser();
if (!$user->guest) {
    $db =JFactory::getDBO();
    $query = $db->getQuery(true)
        ->select($db->qn(["subject", "body"], ["Topic", "Note"]))
        ->from($db->qn("#__user_notes"))
        ->where([
            $db->qn("user_id) . " = " . (int)$user->id,  // target the logged in user
            $db->qn("state") . " = 1"                     // ensure that only published notes are shown
        ]);
    $db->setQuery($query);
    if ($results = $db->loadAssocList())
    {
        echo "<table>";
            // display Topic and Note as column headings
            echo "<tr><th>" , implode("</th><th>", array_keys($results[0])) , "</th></tr>";
            // display rows of data
            foreach ($results as $row)
            {
                echo "<tr><td>" , implode("</td><td>", $row) , "</td></tr>";
            }
        echo "</table>";
    }
    else
    {
        echo "No Notes";
    }
}

La sortie sera comme:

__________________________________________________________________
|    Topic    |    Note                                          |
|-------------|--------------------------------------------------|
|  Feedback1  |  I loved the way you did my laundry.             |
|-------------|--------------------------------------------------|
|  Feedback2  |  Perhaps I can interest you in my dry cleaning.  |
------------------------------------------------------------------
0
mickmackusa