Hallo,
angenommen ich habe ein Modul:
<tr><td>REX_VALUE[...]</td></tr>
und ich hätte gerne, dass wenn ich das erste Mal das Modul hinzufüge automatisch ein "<table>" davor und wenn ich das letzte Mal das Modul verwendet habe automatisch ein "</table>" dahinter geschrieben wird.
Wie mache ich das besten?
danke!
Hallo,
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
-
- Beiträge: 37
- Registriert: 10. Feb 2008, 16:19
Re: Anfangs- und End-Tag bei mehreren gleichen Modulen
Mögliche Ansätze: http://www.redaxo.org/de/forum/module-a ... 16015.htmlDon Michele hat geschrieben:hätte gerne, dass wenn ich das erste Mal das Modul hinzufüge automatisch ein "<table>" davor und wenn ich das letzte Mal das Modul verwendet habe automatisch ein "</table>" dahinter geschrieben wird.
hth,
Jan
vg, Jan
-
- Beiträge: 37
- Registriert: 10. Feb 2008, 16:19
Re: Anfangs- und End-Tag bei mehreren gleichen Modulen
So,
was ich dir schrob wg. Performance/Anzahl der SQL Queries: Hab ne bessere Variante.. die braucht jetzt "nur" noch Anzahl der Modul-Instanzen+1 queries.. die alte brauchte Anzahl der Modul-Instanzen x 3. Es bleibt dabei, daß andere Methode - wie z.b. Olis: Bezug von anderen Artikeln innerhlab des Wrappers - dahingehend nachwievor performanter sind, aber das muß man halt selbst abwägen - Autonomie des Moduls (ohne Bezug o.ä.) vs. zusätzliche SQL queries.
lg,
Jan
was ich dir schrob wg. Performance/Anzahl der SQL Queries: Hab ne bessere Variante.. die braucht jetzt "nur" noch Anzahl der Modul-Instanzen+1 queries.. die alte brauchte Anzahl der Modul-Instanzen x 3. Es bleibt dabei, daß andere Methode - wie z.b. Olis: Bezug von anderen Artikeln innerhlab des Wrappers - dahingehend nachwievor performanter sind, aber das muß man halt selbst abwägen - Autonomie des Moduls (ohne Bezug o.ä.) vs. zusätzliche SQL queries.
Code: Alles auswählen
// AUTO WRAPPER
////////////////////////////////////////////////////////////////////////////////
$mid = 'foo'; /* UNIQUE MODUL IDENTIFIER */
$wrapper = array('<ol class="liststyle">','</ol>');
$open = $close = '';
if(!isset($wrap_ctrl[$mid]))
{
$open = $wrapper[0];
$cur = OOArticleSlice::getArticleSliceById('REX_SLICE_ID','REX_CLANG_ID',0);
}
else
{
$cur = $wrap_ctrl[$mid];
}
$next = $cur->getNextSlice();
if(!is_object($next) || ($cur->getModuleId() != $next->getModuleId()))
{
$close = $wrapper[1];
unset($wrap_ctrl[$mid]);
}
else
{
$wrap_ctrl[$mid] = $next;
}
Jan
Zuletzt geändert von jdlx am 7. Apr 2014, 14:42, insgesamt 1-mal geändert.
vg, Jan
- Gregor.Harlan
- Entwickler
- Beiträge: 1130
- Registriert: 4. Jun 2007, 10:35
- Wohnort: Frankfurt am Main
Re: Anfangs- und End-Tag bei mehreren gleichen Modulen
Hallo,
ich habe gerade mal ein bisschen rumprobiert und bin auf eine Möglichkeit ohne SQL-Abfragen gekommen.
Das Prinzip: Bei jedem Slice wird die bis dahin vollständige Liste mit Start- und End-Tag in den Ausgabepuffer geschrieben und der vorherige Puffer gelöscht. Somit bleibt letztendlich die letzte, also vollständige Liste übrig.
Ist also ein bisschen Trickserei, auch nur mäßig schön, und ich kann auch noch nicht sagen, ob das eventuell in manchen Zusammenhängen zu Problemen führen könnte.
Andere Module zwischendrin machen aber keine Probleme.
Gruß, Gregor
ich habe gerade mal ein bisschen rumprobiert und bin auf eine Möglichkeit ohne SQL-Abfragen gekommen.
Das Prinzip: Bei jedem Slice wird die bis dahin vollständige Liste mit Start- und End-Tag in den Ausgabepuffer geschrieben und der vorherige Puffer gelöscht. Somit bleibt letztendlich die letzte, also vollständige Liste übrig.
Ist also ein bisschen Trickserei, auch nur mäßig schön, und ich kann auch noch nicht sagen, ob das eventuell in manchen Zusammenhängen zu Problemen führen könnte.
Andere Module zwischendrin machen aber keine Probleme.
Code: Alles auswählen
<?php
if($REX['REDAXO'])
{
echo 'item';
}
else
{
if(!function_exists('rex_module_content_REX_MODULE_ID'))
{
ob_start();
function rex_module_content_REX_MODULE_ID($slice)
{
static $content = '';
static $last = '';
$out = ob_get_clean();
if($last != $out)
{
echo $out;
$content = '';
}
ob_start();
$content .= $slice;
$last = '<ol>'.$content.'</ol>';
echo $last;
}
}
rex_module_content_REX_MODULE_ID('<li>item</li>');
}
?>
Friends Of REDAXO: Gemeinsame REDAXO-Entwicklung!
Re: Anfangs- und End-Tag bei mehreren gleichen Modulen
hehe.. ich wußte das du noch was ausm Ärmel ziehst ;) nice trick!Gregor.Harlan hat geschrieben:ich habe gerade mal ein bisschen rumprobiert
lg,
Jan
vg, Jan
Re: Anfangs- und End-Tag bei mehreren gleichen Modulen
Hallo,
sitze auch gerade vor einem Modul was mehrfach in einem Artikel angewendet wird. Es generiert 10 mal ein Bild + Text (für den NivoSlider). Dieses Modul soll beim 1. Einstaz ein "<div id="nivoslider">" ausspucken. Das letzte Modul dann das dazugehörige "</div>".
Mit dem Code von Gregor komme ich nicht klar?! Dieser generiert in jedem Moduleinsatz immer die gleiche Ausgabe?!
Wäre über einen Tipp sehr dankbar.
Viele Grüße
Daniel W.
sitze auch gerade vor einem Modul was mehrfach in einem Artikel angewendet wird. Es generiert 10 mal ein Bild + Text (für den NivoSlider). Dieses Modul soll beim 1. Einstaz ein "<div id="nivoslider">" ausspucken. Das letzte Modul dann das dazugehörige "</div>".
Mit dem Code von Gregor komme ich nicht klar?! Dieser generiert in jedem Moduleinsatz immer die gleiche Ausgabe?!
Wäre über einen Tipp sehr dankbar.
Viele Grüße
Daniel W.
Re: Anfangs- und End-Tag bei mehreren gleichen Modulen
genauso habe ich das auchmal eingesetzt bei einem galerie-modul.
siehe hier:
http://www.stadtwerke-hilden.de
Code: Alles auswählen
<?php
$file = "";
if ("REX_FILE[1]" != "") $file = '<img src="index.php?rex_img_type=slider-bild&rex_img_file=REX_FILE[1]" title="" alt="" />';
$text = '<div class="lof-main-item-desc"><p>REX_VALUE[1]</p>';
# $link = '<p class="readmore"><a href="REX_LINK[1]">mehr erfahren</a></p></div>';
$link = '<p class="readmore"></p></div>';
$val = $file.$text.$link;
if($REX['REDAXO'])
{
# echo $val;
}
else
{
if(!function_exists('rex_module_content_REX_MODULE_ID'))
{
ob_start();
function rex_module_content_REX_MODULE_ID($slice)
{
static $content = '';
static $last = '';
$out = ob_get_clean();
if($last != $out)
{
echo $out;
$content = '';
}
ob_start();
$content .= $slice;
$last = '<div id="lofslidecontent45" class="lof-slidecontent" style="width:710px; height:270px;"><div class="preload"><div></div></div>
<div class="lof-main-outer" style="width:710px; height:270px;">
<div onclick="return false" href="" class="lof-previous">Previous</div>
<ul class="lof-main-wapper">'.$content.'</ul>
<div onclick="return false" href="" class="lof-next">Next</div>
</div> </div>';
echo $last;
}
}
rex_module_content_REX_MODULE_ID('<li>'.$val.'</li>');
}
?>
http://www.stadtwerke-hilden.de