Zum Inhalt springen

Rückgabe einer Funktion in Wrap verwenden

Erstellt am 5. November 2005 · 7 Antworten · letzte Antwort am 6. November 2005

Tags: Frage

Radisli ·

Ich möchte wissen wie ich den Rückgabewert der Funktion:

lcb.menuwidth.userFunc = user_functions->multiplyTest

in der Wrap-Zeile:

subparts.LEFTNAV.1.wrap = | <tr><td><img src="{$lcb.image.dir}#####HIER#####.gif" width="1" height="50"></td></tr>

Geht das irgendwie?

Radisli ·

Ok, ist schon beruhigend dass so etwas geht.

Die Frage ist nur wie?
Hast du evt eine Lösung für das obige Beispiel?

steffenk ·

Hier ein Beispiel von der Extension RDF News Import:

plugin.user_rdfimport = USER_INT
plugin.user_rdfimport {
  userFunc = user_rdfNewsFeedImport->main_newsFeed

  allowCaching = 1

  imageWrapIfAny =

  renderObj = COA
  renderObj {
	  10 = HTML
	  10.value.wrap = <tr><td style="padding:8px">|</td></tr>
	  10.value.wrap2 = <table border=0 cellpadding=0 cellspacing=0 width=200><tr height=1><td bgcolor="#888888"><img src="clear.gif" height=1 width=1 border=0></td></tr>|<tr height=1><td bgcolor="#888888"><img src="clear.gif" height=1 width=1 border=0></td></tr></table><br>
	  10.value  (
	  <p class="mtni"><b>###CHANNEL_TITLE###</b></p>
      <p class="mtni">###CHANNEL_DESCRIPTION###</p>
	  ###CHANNEL_ITEMS###
      )
  }

  renderItemObj = COA
  renderItemObj {
	  10 = HTML
	  10.value = <p class="st_list"><a class="light" href="###CH_ITEM_URL###" target="_blank">###CH_ITEM_TITLE###</a></p>
  }

}
Radisli ·

Merci, soweit hat es geklappt.
Jetzt würde mich aber noch interessieren, wie ich das Plugin in das Menü reinbringe:

Plugin:

includeLibs.UserFunctions = fileadmin/UserFunctions.php
plugin.user_rdfimport >
plugin.user_rdfimport = USER_INT
plugin.user_rdfimport {
   userFunc = user_userFunctions->calculateWidth
   renderObj = COA
   renderObj {
      10 = HTML
      10.value = Breite normal: ###SIZE_NORMAL### - Breite aktiv: ###SIZE_ACTIVE###
   }
}

Die Ausgabe dieses Blockes ist soweit korrekt.

Jetzt möchte ich aber das ###SIZE_NORMAL### und ###SIZE_ACTIVE### in den folgenden Code einsetzen:

page.1  {
   template = FILE
...
   subparts.TOPNAV = HMENU
   subparts.TOPNAV.1 = TMENU
   subparts.TOPNAV.1 {
      special = directory
      NO.allWrap = <td width="###SIZE_NORMAL###%">|</td>
      ACT = 1
      ACT.allWrap = <td width="###SIZE_ACTIVE###%">|</td>
   }
...
}

Geht das irgendwie? und wie?

Radisli ·

Habs selber rausgekriegt:

plugin.user_rdfimport >
plugin.user_rdfimport = USER_INT
plugin.user_rdfimport {
   userFunc = user_userFunctions->calculateWidth
   renderObj = COA
   renderObj {
      10 = HMENU
      10.1 = TMENU
      10.1 {
         special = directory
         NO.allWrap = <td width="###SIZE_NORMAL###%">|</td>
         ACT = 1
         ACT.allWrap = <td width="###SIZE_ACTIVE###%">|</td>
      }
   }
}

...

page.1.subparts.TOPNAV < plugin.user_rdfimport

...

Merci für die Hilfe...

mstuebner ·
steffenK schrieb

Hier ein Beispiel von der Extension RDF News Import:

plugin.user_rdfimport = USER_INT
plugin.user_rdfimport {
  userFunc = user_rdfNewsFeedImport->main_newsFeed

...

Ich habs noch nicht ganz verstanden, wie und wo wird denn da der Returnwert der userFunc verwendet?

Kleiner Hinweis?

Radisli ·

Vielleicht hilft dieses, zur obigen Lösung gehörendes, PHP Script:

<?php
	class user_userFunctions {
		var $cObj;

		function calculateWidth($content, $conf) {
			$result = $GLOBALS["TYPO3_DB"]->exec_SELECTquery("count(*)", "pages", "pid=3 AND nav_hide=0 AND doktype IN (1,2,3,4)".tslib_cObj::enableFields("pages"));
			$row = mysql_fetch_row($result);
			$size = round(100 / $row[0]);
			$renderCode = $this->cObj->cObjGetSingle ($conf["renderObj"], $conf["renderObj."]);
			$markerArray = array();
			$markerArray["###SIZE_NORMAL###"] = $size;
			$markerArray["###SIZE_ACTIVE###"] = 100 - $size * ($row[0] - 1);
			$content .= $this->cObj->substituteMarkerArray($renderCode, $markerArray);
			return $content;
		}
	}
?>