Hallo,
ich wende mich ja nicht sooo oft mit einem Problem ans Forum, nun ist es aber mal wieder nötig
Schon für 4.3.xx hatte ich mir ein kleines Plugin gebastelt, mit dem ich mir zusätzliche Tabs in die Detail-Ansicht bei Bedarf einblende - Inhalt über Freitext gesteuert.
Bis gefühlt 5.2.24 hatte ich damit keine Probleme - jetzt mit 5.2.26 fehlen mir immer wieder diese Tabs. Lösche ich den Cache und lade die Seite neu oder baue den Cache neu auf, sind die Tabs wieder da, ich kann das „Verschwinden“ nicht reproduzieren. Und dann am nächsten Tag sind manchmal wieder in allen betroffenen Artikeln die Tabs weg. Einzig nachts wird per Cron der http-cache geleert. Aus irgend einen Grund wird entweder unter bestimmen Bedingungen das Plugin nicht geladen, das Template nicht eingebunden oder dem Plugin die Freitextfelder nicht übergeben.
Hat sich irgend etwas um 5.2.26 ausser Smarty noch etwas geändert, was Plugin - Theme oder Freitext-Attribute betrifft?
Keine Error-Logs - nix dergleichen - habe zum ersten Mal richtig große ??? bei SW - hat es doch 2 1/2 Jahre funktioniert
Fragemente bootstrap
public function install()
{
$this->createConfiguration();
$this->subscribeEvent(
'Enlight_Controller_Action_PostDispatch_Frontend_Detail',
'onPostDispatchDetail'
);
.....
}
.....
public function onPostDispatchDetail(Enlight_Event_EventArgs $arguments)
{
/**@var $controller Shopware_Controllers_Frontend_Detail*/
$controller = $arguments->getSubject();
$view = $controller->View();
$config = $this->Config()->toArray();
$sArticle = $view->getAssign('sArticle');
$dataseta = array();
$datasetb = array();
$datasetemotion = array();
$mflag = false;
for($i = 1; $i < 4; $i++) {
$key = 'tab' . $i;
$atrvalue=trim($sArticle[$config[$key]]);
if (isset($tabcontent)) unset($tabcontent);
switch ($config[$key . '-type']) {
case "content" : $tabcontent=$this->collectSiteContent($atrvalue);
break;
case "text" : $tabcontent=$atrvalue != "" ? $atrvalue : false;
break;
case "video" : $tabcontent=$this->getVideoLink($atrvalue);
break;
default: break;
}
if ($tabcontent) {
$mflag=true;
$tmpdataset = array( 'type' => $config[$key . '-type']=="video"?"video":"content",
'poster' => $config[$key . '-poster'],
'headline' => $config[$key . '-headline'],
'content' => $tabcontent);
$datasetemotion[$key] = $tmpdataset; //altes Emotion-Template
switch ($config[$key . '-position']) {
case 'a' : $dataseta[$key] = $tmpdataset; break;
case 'b' : $datasetb[$key] = $tmpdataset; break;
default : break;
}
}
}
if ($mflag === true) {
//Add our plugin template directory
if (Shopware()->Shop()->getTemplate()->getVersion() >= 3) {
$view->addTemplateDir($this->Path() . 'Views/responsive/');
$view->wawugInfoTabA=$dataseta;
$view->wawugInfoTabB=$datasetb;
} else {
$view->addTemplateDir($this->Path() . 'Views/emotion/');
$view->extendsTemplate('frontend/plugins/wawug_info_tabs/detail/index.tpl');
$view->wawugInfoTab=$datasetemotion;
}
}
}
Da das alte Emotion 100% nicht mehr verwendet wird, werde ich den Teil noch rausschmeissen.
In der Plugin-Config gibt es drei Gruppen, in einem Feld wird der Name vom Freitext eingegeben.
(Basiert noch aus der Zeit vor dem neuen Freitext-System)
Mein Bauchgefühl sagt mir, es könnte folgender Zeile liegen:
$sArticle = $view->getAssign('sArticle');
Eine Template-Datei:
{extends file="parent:frontend/detail/tabs.tpl"}
{* Position 1 *}
{* New tab *}
{block name="frontend_detail_tabs_description"}
{$smarty.block.parent}
{if $wawugInfoTabA}
{foreach from=$wawugInfoTabA key=key item=tab}
{$tab.headline}
{/foreach}
{/if}
{/block}
{* New Tab container *}
{block name="frontend_detail_tabs_content_description"}
{$smarty.block.parent}
{if $wawugInfoTabA}
{foreach from=$wawugInfoTabA key=key item=tab}
{include file="frontend/detail/tabs/wawugtabs.tpl"}
{/foreach}
{/if}
{/block}
{* Position 2 *}
{* New tab *}
{block name="frontend_detail_tabs_rating"}
{$smarty.block.parent}
{if $wawugInfoTabB}
{foreach from=$wawugInfoTabB key=key item=tab}
{$tab.headline}
{/foreach}
{/if}
{/block}
{* New Tab container *}
{block name="frontend_detail_tabs_content_rating"}
{$smarty.block.parent}
{if $wawugInfoTabB}
{foreach from=$wawugInfoTabB key=key item=tab}
{include file="frontend/detail/tabs/wawugtabs.tpl"}
{/foreach}
{/if}
{/block}
Bin für jeden Rat dankbar