PHP Auf Paramter innerhalb einer Klasse zugreifen

AMD4Ever

Ensign
Registriert
Apr. 2008
Beiträge
188
Hallo,

ich bräuchte einmal eure Unterstützung:

Ich habe hier einen Quelltext von einem Plugin, dass mir in von einem Joomla-Beitrag einen oder mehrere Parameter an ein "leeres Content" weitergibt, dass ich entsprechend weiterprogrammieren muss. Ich möchte gerne auf den Parameter1 des im unten genannten Quelltext zugreifen und den Parameter im nachfolgenden Code außerhalb der Kasse weiterverwenden. Wie geht das? Geht das überhaupt?


PHP:
jimport('joomla.plugin.plugin');


class plgContentBlankContentPlugin extends JPlugin {


	function plgContentBlankContentPlugin( &$subject ) {
    parent::__construct( $subject );
  }


  /**
   * Contentstring Definition
   * String erkennen und mit neuem Inhalt füllen
   */
  public function onContentPrepare($context, &$article, &$params, $limitstart) {
		$regex = '/{BlankContentPlugin\s*(.*?)}/i';
		$article->text = preg_replace_callback($regex,array($this,"form"), $article->text);
	  return true;
  }


  public function form($matches) {

   /**
    * Contentstring zerlegen
    */
		$string = $matches[1];
    $params = explode('|',$string);


   /**
    * Parameter raus filtern und Variablen erstellen
    */
    foreach ($params as $param) {
      if (stristr($param,'param1=')) { $parameter1 = str_replace( 'param1=', '', $param ); }
      if (stristr($param,'param2=')) { $parameter2 = str_replace( 'param2=', '', $param ); }
      if (stristr($param,'param3=')) { $parameter3 = str_replace( 'param3=', '', $param ); }
      // kann beliebig erweitert werden
    }


   /**
    * individuelle Anwendung starten
    */
    $output = "<h3>Blank Content Plugin</h3>";
    if (isset($parameter1)) { $output .= "<h4>".$parameter1."</h4>"; }
    if (isset($parameter2)) { $output .= "<p>".$parameter2."</p>"; }
    if (isset($parameter3)) { $output .= "<p>".$parameter3."</p>"; }


    return $output;
	}

}

?>

Wäre schön wenn ihr mir irgendwie helfen könnt. Vielen Dank!
 
ok, und wie kann ich das jetzt umsetzen??


Hier mal ein Bild was passiert, wenn mein "custom Code" in der Klasse steht screenshot.PNG
 
Zuletzt bearbeitet:
Und was genau sehen wie jetzt in deinem Bild? Was soll dein "Custom-Code" machen? Macht er das schon in deinem Bild? Macht er es nicht? Ist ein unerwartetes Verhalten im Bild zusehen?

Eigentlich hättest du auch einfach ein Katzen-Bild hochladen können, hätte den selben Effekt gehabt :rolleyes:
 
Das Katzenbild wäre ästhetischer gewesen...

Ich weiß auch nicht, was der TE genau will.
 
$paramter1 ist keine Instanzvariable und kann so erstmal nicht direkt zugegriffen werden soweit ich das sehe. Entweder musst Du das in einer public Instanz Variable z.B. speichern oder per return zurückgeben.

Aber einerseits ist mir auch nicht so ganz klar, was der TE will und andererseits vermute ich auch, dass objektorientierte Porgrammierung noch nicht richtig verstanden wurde und Joomla wahrscheinlich auch nicht.

Aber alles nur Vermutungen. :)
 
Objektorientierte Programmierung habe ich nicht verstanden bzw so tief stecke ich in php leider noch nicht drin. Und Joomla ist für mich auch noch neu. Hintergrund ist dieser: seit ein paar Tagen versuche ich als Gerüst Joomla zu verwenden. Da ich ein Hardware-Archiv pflege und alle Daten in einer bestehenden MySQL-DB eingepflegt sind, habe ich Formulare erstellt um bestimmte Datensätze abzurufen und diese in einem Formular wiederzugeben.

Mein Problem liegt jetzt dabei, dass ich Joomla als Backend für Artikel und für die Gestaltung der Site verwenden möchte. Zudem soll Joomla Datensätze aus der Datenbank auslesen und entsprechend mit einem selbst programmierten Plugin wiedergeben.

Ich habe bisher nichts besseres gefunden als ein BlankContentPlugin, was man über Parameter im Backend von Joomla ansprechen kann. Also wenn ich einen Parameter in Beitrag an das Plugin ünermittle, soll das Plugin den Parameter aufgreifen und entsprechend die Datensätze rausschmeißen.

screenshot2.PNG

So sieht das zumindest in den NEWS richtig aus. Der eigentliche Content soll nicht schon in der Beitragsliste erscheinen.


Außerdem: Die Site ist halt noch längst nicht fertig. Nur wenn ich die Hardware-Infos nicht auf die Site integriert bekomme, brauche ich vorher nicht mich ums Design der Site kümmern.

Was meint ihr mit TE?
 
Thread-Ersteller.... also in diesem Falle: Du!

Du gehst hier vollkommen falsch ran. Du willst Dynamik, also schreib dir eine eigene Klasse, die diese Dynamik bereit stellt. Lerne, wie du über Joomla Datenbank-Queries zünden kannst. Lerne, wie du an die GET- und POST-Parameter kommst. Daraus baust du dir eine Klasse, die auf Basis dieser Parameter deinen Query zusammenbaut, ausführt und das Resultat in eine lesbare Form bringt.

Schritt 1 zu dem ganzen: Lerne Objektorientierung im Allgemeinen
Schritt 2: Lerne OO in PHP... weicht in manchen Punkten von OO in Java, C++,... ab
Schritt 3: mach dich mit dem Joomla-Framework vertraut. Das Ding ist ganz sicher objektorientiert.... Lass dich z.B. bloß nicht dabei erwischen, dass du jetzt deinen Datenbank-Aufruf mit mysql_query machst... Wenn du so arbeitest, dann hast hast du was elementar falsch gemacht.

Tja, Programmieren ist wohl doch keine Wochenendaufgabe...
 
Zurück
Oben