Die letzten Beiträge

Joomla Layout und View-Layout einer Komponente deaktivieren

21. Februar 2012

Soeben hatte ich das Problem, dass ich die Ausgabe in einer selbst entwickelten Komponente bei Joomla deaktivieren wollte, da ich als Ausgabeformat JSON haben wollte oder gegebenenfalls auch XML oder vielleicht sogar nur Text, plain ASCII. Ich habe schon lange nichts mehr mit Joomla gemacht, musste mich also erstmal wieder an das CMS gewöhnen und hab dabei erfreut festgestellt, dass Joomla ja nach MVC-Architektur aufgebaut ist! Da ich in den letzten größeren Projekten hauptsächlich mit Zend gearbeitet hatte, kam mir das nur entgegen. Aber zum eigentlichen Problem:
Nach Recherche fand ich in der Joomla-Doku über Generating JSON output folgende Zeilen, die helfen sollen:

< ?php
//Daten, die später als JSON zurück- bzw. ausgegeben werden sollen.
$data = array('some data');
 
// Lade das Document-Objekt.
$document =& JFactory::getDocument();
 
// Setze MIME Typ für JSON Ausgabe.
$document->setMimeEncoding('application/json');
 
// Dem Header "sagen", dass es sich um eine Datei handelt, die heruntergeladen werden soll. Dateiendung *.json
JResponse::setHeader('Content-Disposition','attachment;filename="'.$view->getName().'.json"');
 
// Ausgabe der Daten JSON-encoded durch die native PHP-Funktion json_encode.
echo json_encode($data);
?>

Da ich die Daten nicht als Datei benötigt habe, sondern die Ausgabe im Browser sehen wollte, hab ich die Zeile, wo der Header für eine Datei gesetzt wird, auskommentiert. Was ich bei vielen Dokus vermisse, ist der Ort, wo dieser Code eingebaut werden soll. Neulinge wissen meist nicht, wohin der Code gehört. Weiterhin kommt dazu, dass es stets mehrere Lösungen gibt, saubere und unsaubere ;) . Für mich klang alles nach View, da es ja um die Ausgabe im Browser ging, daher hab ich den Code in die view.html.php der View der Komponente gepackt. Die Datei liegt unter

com_KOMPONENTENNAME/views/KOMPONENTENNAME/view.html.php

Sie repräsentiert die View der Komponente und lädt das Default-Template unter

com_KOMPONENTENNAME/views/KOMPONENTENNAME/tmpl/default.php

aber das nur am Rande erwähnt. Die Ausgabe jedoch entsprach nicht meinem Wunsch: Es kam der Quelltext vollständig zurück mit html, head, title, meta, body und sonstigen HTML-Tags. Nach weiterer Suche traf ich auf einen Beitrag von 2009 zum Verbergen des Administrator- oder Frontend - Layout - Templates:

JRequest::setVar('tmpl', 'component');

Laut Angabe soll diese Zeile im Controller eingebaut werden. Sie bewirkt, dass das Layout nur den Inhalt der View anzeigt, ohne von einem Template umrahmt bzw. gewrappt zu werden. Ich habe die Zeile direkt hinter die MIME-Anweisung in die View gepackt. Neuladen hat gezeigt, dass jetzt die Menüstruktur der gesamten Seite nicht mehr da war, sondern nur noch der Inhalt der View! ... und leider noch die html, head, title, meta- und body-Tags. Zu XML- oder JSON-Output hatte ich nun nichts brauchbares mehr gefunden außer viele Fragen, wie das denn nun geht, also hab ich mein Suchquery geändert und nach Verwendung mit AJAX gesucht, da man dabei meist auch nur einen bestimmten Datensatz abfragen will ohne das Layout oder anderen Quelltext. Ebenso kann die Antwort dort ja auch JSON sein und mit AJAX weiterverarbeitet werden. Und siehe da, ich wurde fündig bei stackoverflow (wo auch sonst) in einer Antwort mit 0 "likes":

//after $this->display($tpl);
global $mainframe;
$mainframe->close();

Dies war die Lösung. Nun nochmal im Gesamtzusammenhang der Code, der mir JSON als Ausgabe in einer View in der Joomla-Komponente ermöglicht hat:

< ?php
//-- No direct access
defined('_JEXEC') || die('=;)');
jimport('joomla.application.component.view');
class KOMPONENTENNAMEViewKOMPONENTENNAME extends JView
{
    public function display($tpl = null)
    {
		// Get the document object.
		$document =& JFactory::getDocument(); 
		// Set the MIME type for JSON output.
		$document->setMimeEncoding('application/json');
		//Deaktiviert das Template und nutzt nur das Template 
		//der Komponente
		JRequest::setVar('tmpl', 'component');   	
 
		/* Datenverarbeitung aller Daten, beispielsweise ein  
		* Datensatz aus der Datenbank, welcher als Array 
		* zurückgegeben wird. Beispielcode:
		* $model = &$this->getModel();
		* $data = $model->getData();
		* echo json_encode( $data ); 
	    */
 
        parent::display($tpl);
		//Deaktivierung der gesamten Layout-Komponente, 
		//die für html, head, meta und body-Tags zuständig ist
		global $mainframe;
		$mainframe->close();
    }//function
}//class
?>

Der auskommentierte Teil in der Mitte steht für den Part, in welchem die Daten geladen werden, welche später JSON-encoded ausgegeben werden sollen.

Ich hoffe, der Code hilft noch vielen weiteren, die wie ich ewig danach gesucht haben!
Ich bin kein Joomla-Experte und freue mich daher sehr über Verbesserungsvorschläge und Anmerkungen! Die Lösung funktioniert zwar, aber ist sie auch sauber?

PHP-Support für Projekte, die mit Eclipse und SVN ausgecheckt wurden

13. April 2011

Checkt man ein Projekt via SVN mit Eclipse aus, hat man das nette Syntax-Highlighting, die Auto-Vervollständigung und das Anzeigen der Dokumentation bei Mouseover über einer Funktion leider nicht mehr.

Das Problem ist jedoch einfach gelöst:
Rechten Mausklick auf das Projekt in der PHP-Ansicht, "Configure --> Add PHP Support" und schon ist alles wieder wie gewohnt! 598MZJK8US6B

Youtube- und Google-Konten voneinander trennen

08. März 2010

Update 14.03.2011

Es hat sich etwas getan: Man kann Youtube nicht mehr ohne Google-Konto benutzen. Beim letzten Versuch mit meinem Youtube-Konto kam folgende Meldung:

Google zwingt YouTube-Konto Nutzer zu Google-Konto Wie man sieht, muss man nun sein Konto mit einem bereits vorhandenen Google-Konto verknüpfen oder sich ein eigenes Google-Konto anlegen.

Google zwingt YouTube-Konto-Nutzer zu Google-Konto

Schön ists nicht wirklich für alle, die bisher kein Google-Konto hatten.

Der Link im alten Teil des Artikels funktioniert dennoch ;) . Man muss danach "nur" ein neues Google-Konto angeben, mit welchem der YouTube-Account verlinkt werden soll.

Alter Artikel

Weil ich es gerade gesucht hab und nicht sofort gefunden hab, merk ich mir das mal über meinen Blog :-) .

Wer sein YouTube-Konto von seinem Google-Konto trennen will, der gehe in sein Profil und suche oder klicke (man muss vorher angemeldet sein) auf diesen Link: http://www.youtube.com/my_account_unlink. Dort gibts dann die gesuchte Option: "Verknüpfung meiner Konten aufheben". Klick und fertig. Und keine Sorge, beide Konten bleiben aktiv, man kann sich danach nur nicht mehr mit seinem Google-Konto bei YouTube anmelden, sondern muss sich an sein damals festgelegtes Passwort für YouTube erinnern!

Das wars auch schon!

Überprüfen, ob ein Knoten einer XML existiert mit XSL und xsl:if oder xsl:when

14. Juni 2009

 

Bevor ichs wieder vergesse, muss ich es kurz festhalten: Wer testen möchte, ob in seinem XML - Dokument ein Knoten existiert, braucht keine komplizierte Anweisung (so wie ich es grad ewig versucht habe ... mit string-length() oder count() - Anweisungen ...). Es geht ganz einfach so: 

<xsl:choose>
<!-- gibt TRUE zurück, wenn Knoten vorhanden -->
 	<xsl:when test="knoten"> 
 <!-- liefert Inhalt des Knoten -->
 		<xsl:value -of select="knoten"> 
	</xsl:value></xsl:when>
	<!-- wenn FALSE, ist kein Knoten vorhanden -->
<xsl:otherwise>Knoten nicht vorhanden</xsl:otherwise> 
</xsl:choose>

oder aber so:

<xsl:if test="knoten">Knoten ist vorhanden, mach etwas ... </xsl:if>

Wer hätte das gedacht, dass das so einfach ist?! :-) Hoffe, es hilft auch anderen!

Online-Formeleditor zur grafischen Darstellung von Formeln + Download der Formeln als Bild

14. Mai 2009

Wer schnell und einfach Formeln aus verschiedensten Bereichen wie Algebra, Matrizenrechnung, Trigonometrie, Geometrie, Chemie oder Physik in ein Dokument, eine Hausarbeit oder eine Präsentation einarbeiten möchte, kann dies ganz einfach online tun. Gerade beim Stöbern auf Pantox' Blog stieß ich auf eine Möglichkeit. Der LaTeX Gleichungseditor erledigt dies einfach durch ein paar simple Mausklicks. So lässt sich eine Matrix mal eben so darstellen:

 

 

Die Formeln lassen sich auch mit Farbe unterlegen oder / und einfärben:

 

Die automatisch generierten Grafiken lassen sich von 50 - 300dpi einstellen und in verschiedenen Formaten wie PNG, GIF, PDF oder SWF herunterladen oder in eine Webseite einbetten. Ebenfalls lässt sich auch der Code für einen anderen LaTeX - Editor oder für das phpBB-Board z.B. anzeigen oder auf die Gleichung linken. Alles in allem ein sehr komfortabler Editor und alles gratis! Fast schon unglaublich.

« Vorherige Einträge   
all-inkl.com webhosting