+ Antworten
Ergebnis 1 bis 3 von 3

Thema: JoomlaVarsInContent

  1. #1
    Verbringt hier viel Zeit
    Registriert seit
    29.11.2005
    Ort
    Berlin
    Beiträge
    962
    Bedankte sich
    8
    Erhielt 200 Danksagungen
    in 196 Beiträgen

    Standard JoomlaVarsInContent

    Hallo,

    ich möchte der Joomla-Gemeinde auf diesem Wege ein Plugin vorstellen, das Language-Definitionen und Joomla-Variablen im Content ausgeben kann und bin noch an ein paar Fragen und Ideen interessiert, bevor ich es veröffentliche.

    1. Ich möchte gerne Wünsche hören, falls vorhanden, welche Variablen in den Joomla-Content hinein könnten / sollten.

    2. Gerne nehme ich Ideen zur Code-Optimierung entgegen, da ich nicht so richtig fit mir regulären Ausdrücken bin, gerade in diesem Bereich, vielleicht möchte da jemand noch was beisteuern und dann werde ich den Zeit-Unterschied testen.

    3. Ich möchte gerne die Frage klären, ob man in Joomla ob und wenn wie Plugins nur für bestimmte Artikel bzw. bestimmten Content ausführen lassen kann. Im Moment stelle ich mir das so vor, dass im Content-Bereich ein zusätzlicher Parameter eingesetzt wird, bin mir aber darüber im klaren, dass man dazu das Core-System patchen müsste. Welche anderen Ideen gibt es dazu?

    4. Ich möchte das gerne, dass nach 2 Wochen dieses Thema hier als gelöst/erledigt angesehen wird.

    Und hier der Quellcode:

    Code:
    <?php
    /**
     * JoomlaVarsInContent plugin for Joomla! 1.5
     * Version: 1.0
     * @license http://www.gnu.org/licenses/gpl.html GNU/GPL v2.0.
     * @by addi
     * @Copyright (C) 2008 - 2009
     */
    defined( '_JEXEC' ) or die( 'Restricted access' );
    
    class  plgContentJoomlaVarsInContent extends JPlugin
    {
    	function plgContentJoomlaVarsInContent (& $subject) {
    		parent::__construct($subject);
    	}
    }
    
    $mainframe->registerEvent( 'onPrepareContent', 'JoomlaVarsInContent' );
    	
    function JoomlaVarsInContent(&$row, &$params) {
    	$user = &JFactory::getUser();
    	
    	if ($user->id == 0)
    	{
    		$username = JText::_( 'Guest' );
    		$realname = JText::_( 'Guest' );
    		$date_registered = JText::_( 'Never' );
    		$date_lastvisit = JText::_( 'Never' );
    	}
    	else
    	{
    		$username = $user->username;
    		$realname = $user->name;
    		$date_registered = $user->registerDate;
    		$date_lastvisit = $user->lastvisitDate;
    	}
    	$var_array = array (
    		"user_username" => $username,
    		"user_realname" => $realname,
    		"user_userid" => $user->id,
    		"user_registerdate" => $date_registered,
    		"user_lastvisitdate" => $date_lastvisit,
    		"content_title" => $row->title,
    		"content_alias" => $row->title_alias,
    		"date_created" => $row->created,
    		"date_modified" => $row->modified
    		
    	);	
    	/*
    	*	Put Joomla API Variables in Your Content. Sample {user_realname}
    	*/
    	foreach ($var_array as $key => $value) {
    		$row->text = str_replace('{' . $key . '}', $value, $row->text);
    	}
    	/*
    	*   Put Joomla Language Items in Your Content. Sample {LANG:home page}
    	*/
    	$pos = 0;
    	while ($i = strpos(substr($row->text, $pos, strlen($row->text)), '{LANG:'))
    	{
    	$j = strpos(substr($row->text, $pos+$i, strlen($row->text)), '}');
    		$jtext_item = substr($row->text, $pos+$i+6, $j-6);
    		$row->text = substr($row->text, 0, $pos+$i)
    				   . JText::_( $jtext_item )
    				   . substr($row->text, $pos+$i+$j+1, strlen($row->text));
    		$pos = $i + strlen(JText::_( $jtext_item ))-1;
    	}
    	return true;
    }
    ?>
    Mein "Kunde" möchte mit Joomla zum Mond fliegen.

    Bin Anfänger... geht das irgendwie?

  2. #2
    Verbringt hier viel Zeit
    Registriert seit
    29.11.2005
    Ort
    Berlin
    Beiträge
    962
    Bedankte sich
    8
    Erhielt 200 Danksagungen
    in 196 Beiträgen

    Standard

    Da es für dieses Plugin bisher leider wenig Interesse gibt, hier meine neuesten Ideen, vielleicht wird es ja doch mal sehr nützlich sein, wenn es nicht sowas in ähnlicher Form schon gibt!

    1. Idee zur Programmierung: Man sollte die Zeichenketten-Verarbeitung auf Joomla-UTF8-kompatbile Funktionen umstellen, also z.B. JString::substr(usw) anstelle von substr(usw) verwenden, wenn man denn keine regulären Ausdrücke verwendet.

    2. Es wäre schön, Event Table Edit als Plugin einzubinden, sodass etwa Werte wie {TABLE:dinosaurier:1} die erste Zeile einer Tabelle im Content zeigen. So könnte man schnell Unternehmensdaten via CSV (und in der Regel Zahlen) in Seiten einbinden.

    3. Ich suche eine Möglichkeit - oder programmiere sie selbst? - Hash-Variablen benutzerfreundlich einzugeben, am besten im Frontend wie bei Event Table Edit geregelt, dann könnte man diese etwas im Sinne von {VAR:zeitzone} anzeigen. Vorteil: Content-übergreifend können Werte in allen Artikeln und sonstigen Content-Items abgeglichen und dabei zentral im Frontend bearbeitet werden.
    Mein "Kunde" möchte mit Joomla zum Mond fliegen.

    Bin Anfänger... geht das irgendwie?

  3. #3
    Verbringt hier viel Zeit
    Registriert seit
    29.11.2005
    Ort
    Berlin
    Beiträge
    962
    Bedankte sich
    8
    Erhielt 200 Danksagungen
    in 196 Beiträgen

    Standard

    Jetzt werde ich dieses Thema für mich beenden - ohne mein Vorhaben schon ganz umgesetzt zu haben. Noch einmal zusammen gefasst meine bisherigen Ideen, die für Event Table Edit im professionellen Einsatz sprechen und warum man Template-Variablen per Plugin damit verknüpfen sollte:

    - Wichtige Daten können von Kundenseite im Frontend zentral und übersichtlich in Tabellen gepflegt werden

    - Daten können aus anderen Datenbanken und Exel übernommen werden

    - Bei sich ändernden Daten (Anzahl, Stückzahl, neuer Ansprechpartner für Projekt X), werden via Plugin eingebundene Daten automatisch in allen Dokumenten aktualisiert

    - Ein weiterer nächster Schritt könnte sein, ein Plugin für den TinyMCE (JCE ist nur in Clone davon) zu schreiben, um die Tabellen-Daten noch bequemer im Editor auszuwählen

    Für ähnliche, aber nicht gleiche Funktionalität benötigt man ansonsten eine CCK wie z.B. jSeblod, die wesentlich aufwendiger zu bedienen ist und weniger benutzerfreundlich erscheint.
    Mein "Kunde" möchte mit Joomla zum Mond fliegen.

    Bin Anfänger... geht das irgendwie?

+ Antworten

Lesezeichen

Berechtigungen

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