+ Antworten
Ergebnis 1 bis 8 von 8

Thema: Artikel-ID ermitteln

  1. #1
    Neu an Board
    Registriert seit
    14.10.2009
    Beiträge
    38
    Bedankte sich
    7
    Erhielt 6 Danksagungen
    in 6 Beiträgen

    Standard Artikel-ID ermitteln

    Guten Abend liebe Joomla Gemeinde,

    ich bastel gerade an einem Modul, dass Informationen zu dem Autor eines Artikels anzeigen soll. Nun benötige ich dafür die Id des Artikel um dadurch den Autor aus der Datenbank herauszufinden.
    Ich hatte die Idee es mit Hilfe von $_GET umzusetzen doch später sollen auch mal suchmaschinen optimierende Komponenten zum Einsatz kommen, wodurch diese Methode wohl eher nicht in Frage kommt.

    Google hat mit folgendes ausgespuckt, was ich wie folgt in meinem Code eingebaut habe:
    PHP-Code:
    defined'_JEXEC' ) or die( 'Direct Access to this location is not allowed.' );
       
       global  
    $mainframe;
       
    $database = &JFactory::getDBO();
       
    $my = &JFactory::getUser();
    ...
    ...
    ...
    $query "Select author_alias from #_users where"
        
    " id =" $this->article->id 
    Leider wird nicht der Name des Autor ausgegeben, weil eine If-Abfrage negativ ausfällt.
    Wie kann man die Artikel-ID aus der Datenbank ermitteln von dem Artikel, den man gerade anschaut?

    Vielen Dank im Voraus

    Liebe Grüße

    Thylo

  2. #2
    Hat hier eine Zweitwohnung Avatar von progandy
    Registriert seit
    25.06.2007
    Beiträge
    1.936
    Bedankte sich
    13
    Erhielt 638 Danksagungen
    in 575 Beiträgen

    Standard

    Mach das doch als Content-PlugIn und füge die Informationen direkt in den Artikel ein, dann hast du damit keine Probleme.

  3. #3
    Hat hier eine Zweitwohnung Avatar von Some1new
    Registriert seit
    18.05.2005
    Ort
    Buest nich unt 'n Norden is dat schwer to verstohn.
    Beiträge
    1.424
    Bedankte sich
    259
    Erhielt 301 Danksagungen
    in 250 Beiträgen

    Standard

    In der #__users sind die ids, die der Benutzer, nicht des Artikels.
    "author_alias" ist dort ebenfalls nicht abgelegt.

    Gruß
    Some1new
    SUCHEN ist keine Stadt in Deutschland, sondern eine TOLLE Funktion in diesem Forum.
    Fahren Sie mich irgendwohin, ich werde überall gebraucht, denn "Es iss ja, wie´s iss!".
    Woher kommt mein Nickname? - some1new by escobar

  4. #4
    Neu an Board
    Registriert seit
    14.10.2009
    Beiträge
    38
    Bedankte sich
    7
    Erhielt 6 Danksagungen
    in 6 Beiträgen

    Standard

    Danke für die Hinweise!

    Das mit der #_users-Tabelle habe ich geändert, doch das Modul geht immer noch nicht.
    Das mit dem Content-Plugin klingt vielversprechend, nur muss ich dazu vertieft objektorientiertes Programieren lernen, aber in den Ferien ist ja jetzt ein wenig Zeit.

    Falls sich das noch jemand anschauen will sieht im ersten Teil so aus:
    PHP-Code:
    lobal  $mainframe;
       
    $database = &JFactory::getDBO();
       
    $my = &JFactory::getUser();
       
       if (
    $_GET["id"] != 0)
       {
         
    $query "Select author_alias from #_content where"
        
    " id =" $this->article->id ;
        
        
    $database->setQuery($query);
        
    $author $database->loadResult() ;
       
        echo 
    "<b>Autor:</b>" $author 
    Gruß Thylo

  5. #5
    a.h.
    Gast

    Standard

    PHP-Code:
    intval(JRequest::getVar'id') ); 

  6. #6
    Neu an Board
    Registriert seit
    14.10.2009
    Beiträge
    38
    Bedankte sich
    7
    Erhielt 6 Danksagungen
    in 6 Beiträgen

    Standard

    Guten Morgen,

    vielen Dank für die zahlreichen und vor allem hilfreichen Antworten!

    Ich habe gerade eben noch ein wenig an der der Datei gebastelt und jetzt Zeit soweit:

    PHP-Code:
    defined'_JEXEC' ) or die( 'Direct Access to this location is not allowed.' );
       
       global  
    $mainframe;
       
    $database = &JFactory::getDBO();
       
    $my = &JFactory::getUser();

       
    $idcheck JRequest::getVar('id') ; 
       
       if (
    $idcheck != 62 )
       {
        
        
    $abfrage intval(JRequest::getVar'id') );     
        
    $query "Select author_alias from #_content where"
        
    " id =" $abfrage ;   
        
        
        
    $database->setQuery($query);
        
    $author $database->loadResult() ;
       
        echo 
    "<b>Autor:</b>" $author ;
    ...
    ...
    ... 
    Die Zahl 62 steht für den Administrator.
    Leider bisher noch ohne Erfolg. Was mache ich falsch oder kann man das ganze nicht als Modul umsetzen, sondern muss sich an ein Plugin ransetzen?

    Vielen dank im Voraus

    Liebe Grüße

    Thylo

  7. #7
    a.h.
    Gast

    Standard

    Also die ID Abfrage von mir, fragt die Artikel-ID ab. Damit könntest DU dann ja in die DB gehen.

  8. #8
    Hat hier eine Zweitwohnung
    Registriert seit
    14.01.2006
    Ort
    Nienburg
    Alter
    32
    Beiträge
    1.237
    Bedankte sich
    115
    Erhielt 471 Danksagungen
    in 368 Beiträgen

    Standard

    Zitat Zitat von Thylo Beitrag anzeigen
    PHP-Code:
    defined'_JEXEC' ) or die( 'Direct Access to this location is not allowed.' );
       
       global  
    $mainframe;
       
    $database = &JFactory::getDBO();
       
    $my = &JFactory::getUser();

       
    $idcheck JRequest::getVar('id') ; 
       
       if (
    $idcheck != 62 )
       {
        
        
    $abfrage intval(JRequest::getVar'id') );     
        
    $query "Select author_alias from #_content where"
        
    " id =" $abfrage ;   
        
        
        
    $database->setQuery($query);
        
    $author $database->loadResult() ;
       
        echo 
    "<b>Autor:</b>" $author ;
    ...
    ...
    ... 
    Guten Morgen,
    in der ersten Abfrage einer Id erhaelst du nicht die Benutzer Id, sondern die eines Artikels, oder eines Datensatzes sofern gerade eine Komponente aufgerufen wurde und Id ueberhaupt zur Verfuegung steht.

    $idcheck sollte oder koennte hier $idcheck = $my->get( 'id' ); sein, allerdings hilft das nicht wirklich weiter. Ich gehe davon aus du moechtest die Ansicht nur fuer "nicht Super Administratoren", richtig ? In deinem System wird das noch funktionieren, auch wenn dann noch eine entsprechend andere Ausgabe im Modul erfolgen muesste.
    In anderen Systemen gibt es den Super Administrator mit dieser Id vielleicht nicht, oder nicht mehr. Eine Pruefung auf den "usertype" oder die "gid" macht hier mehr Sinn. Zu unterscheiden ist: Willst du die Daten des aktuellen Benutzers oder die hinterlegten Informationen zum Autor des Artikels.

    Da "author_alias" nicht immer gesetzt ist, sollte man pruefen ob dort etwas drin steht, ansonsten den "author" waehlen.

    global $mainframe wird so nicht mehr benutzt und auch $application = JFactory::getApplication(); was dem $mainframe aus Joomla! 1.0 Zeiten entspricht, wird hier nicht benoetigt. Die Uebergabe von Objekten als Referenz ist ab PHP 5 Standard. Das & Zeichen fuer Dbo(); und getUser(); kann man weglassen. JRequest durch intval() zu schicken ist nicht noetig. PHP kuemmert sich nur bedingt um den Typ und im $query wird daraus eh wieder ein String. Das aber nur am Rande. Weitere Informationen dazu: http://wiki.joomla-nafu.de/joomla-do...ework/JRequest

    Wie oben angesprochen fehlt bislang eine alternative Ausgabe sollte bei deiner Abfrage nichts zurueckgeliefert werden.

    Im Extension Directory gibt es einige Plugins die sich mit Autoren Informationen befassen. Vielleicht ist hier etwas fuer dich dabei.
    http://extensions.joomla.org/extensi...uction/authors

    Ansonsten wuerde ich mal schauen ob alternativ ein Template Override eher zum Ziel fuehrt. Es sind dort alle Informationen ueber den Artikel vorhanden. Hier kannst du im Artikel Layout entweder dein Modul rendern lassen, oder Informationen zum Autor nach kurzer Datenbankabfrage direkt ausgeben. Achte darauf das im Modul die Id des Autors ausgelesen wird und dafuer der Name oder Benutzername geholt werden muss, im Alias hingegen ein String steht. Beim Override wurde bereits im Artikel Objekt aus der Id bereits der Name / Benutzername gemacht.

    Modul, Plugin oder Override - es gibt viele Moeglichkeiten fuer die Umsetzung. Die Entscheidung wie und wo diese Informationen dargestellt werden, liegt bei dir. Jede der Varianten hat Vor- und Nachteile.

    Solltest du noch Fragen haben schick mir eine kurze PM, dann geh ich mit dir im Chat die Moeglichkeiten durch.

    Ich hoffe das hilft dir weiter,...
    Sven
    Geändert von Matrikular (06.03.2010 um 11:32 Uhr)

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein