Eigener Fluid ViewHelper in TYPO3 7.6.x

Bis jetzt musste man in einem eigenen ViewHelper die
function render()
aufrufen und dort angeben welche arguments man im fluid übergeben hat.

function render($argument1, $argument2)

Wenn ich es richtig verstanden habe macht man das nun folgendermaßen:

Den ViewHelper ruft man im Fluid gleich auf nur im ViewHelper selbst gibt es eine Änderung.
Man ruft nun
public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, \TYPO3\CMS\Fluid\Core\Rendering\RenderingContextInterface $renderingContext)
auf.
In $arguments steckt nun alles drin was man dem ViewHelper im Fluid übergeben hat.
Nun kann man seine Ausgabe anpassen und mit return ans view zurück geben.

Formhandler – if conditions

I have a really big form which can called with or without params in url.
if there are params fields will be prefilled with this values and other fields will be hidden.
So i needed a solution to dont validate field x if field y appears and
With this snippet i deactivate the validation for field feedbackAppointment if field givenAppointment
appears.
if {
1 {
conditions.OR1.AND1 = givenAppointment
isTrue {
1.validators.1.config.disableErrorCheckFields = feedbackAppointment
}
}
}

Formhandler – Mail subject with COA

I tried to set up a mail subject with 2 parts.
Part one should be a normal Text, and part two should be an form field value.
In many blog posts i found a solution, but does not work for me.
The missing feature was the “sanitize = 2″.
Read about that in the Formhandler Blog here
My finished and working example:

1.class = Tx_Formhandler_Finisher_Mail
1.config {
admin {
subject = COA
subject {
10 = TEXT
10.sanitize = 1
10.insertData = 1
10.data = GP:feedbackBookingcode
20 = TEXT
20.value = Beurteilungsformular
20.noTrimWrap = | ||
}
}
}

linkTo_UnCryptMailto is not defined

Wenn diese Fehlermeldung in Verbindung mit TYPO3 als js-error auftaucht, hat man vermutlich das default-js von TYPO3 deaktiviert. So war es jedenfalls bei mir gerade.

Einfach in der config nach
removeDefaultJS
schauen.
Sollte das auf 1 stehen wird das TYPO3 interne JS nicht eingebunden. Dieses enthält unter anderem diese uncrypt function für die Emails.
Stellt das mal auf 0 oder nehmt diesen Eintrag komplett raus. Der default ist 0. Dann sollte der js-error wieder weg sein und beim verlinken der Mailadresse sollte auch das Mailprogramm öffnen.

Probleme beim Update von Extensions?

Ich musste gerade feststellen dass beim Update von einigen Extensions der Extensionmanager nur gerödelt hat, aber eigentlich nix gemacht hat.
Nach ein bisschen Recherche im Netz habe ich die Lösung gefunden.
Im Installtool gibt es die Einstellung
[SYS][curlUse]
Diese habe ich auf 1 gesetzt und somit war das Problem behoben.

 

ERR_EMPTY_RESPONSE

Bei einem meiner aktuellen Projekte habe ich die Aufgabe einen kleinen Shop in Magento umzusetzten.
Der Kunde sagte zum Beginn des Projekts:

“Sie können direkt auf unserem Server entwickeln, dann sparen wir uns den Schritt mit dem Umzug.”

Schön, dachte ich mir, nur leider hat da gar nix geplappt. Also begann ich auf meinem eigenen Server eine Stage einzurichten um dann alles nur rüber ziehen zu müssen. Leider gab es auch keinen Zugriff auf logs oder geschweige denn nen SSH Zugang. Also, alles schön per Hand über FTP.

Letzte Woche startete ich also den ersten Versuch. Magento Datenbank importiert, notwendige Änderungen an den config files und der Datenbank durchgeführt und gib ihm. Der erste Seitenaufruf klappte, aber dann ging gar nix mehr. Im Chrome bekam ich immer den Error ERR_EMPTY_RESPONSE.

Ich begann zu googlen, und fand eigentlich immer nur chrome-spezifische Dinge.
Nix was mir helfen würde.

Nun habe ich bei einem Serveranbieter nachgefragt. Der Fehler liegt daran dass auf dem Server der PHP-Cache APC installiert ist. Das kann bei einigen Installationen mit PHP zu Problemem führen. Die Lösung war dann eine ganz Simple Änderung in der .htaccess des shops.

php_flag apc.cache_by_default Off

Nun läuft der Shop und alle sind wieder glücklich :)

TypoScript condition für Extbase Extensions

Angenommen man hat eine Extension auf einer Seite eingebunden und möchte nun abhängig davon die Inhalte ändern, kann man das sehr leicht mit einer TypoScript condition lösen. In meinem Konkreten Fall ging es darum auf einer Detailseite die Breadcrumbs so anzupassen dass auch der Titel des Eintrags in den Breadcrumbs angezeigt wird. Hier also mein Code.

lib.navigation.breadcrumb = COA
lib.navigation.breadcrumb {
  10 = HMENU
  10 {
    special = rootline
    special.value = 1,–1
    includeNotInMenu = 1
    wrap = ‹ul class=”inline unstyled”›|‹/ul›
    1 = TMENU
    1 {
      noBlur = 1
      expAll = 0
      NO = 1
      NO {
        allWrap = ‹li›| ‹span›‹/span›‹/li›
      }
      CUR ‹ .NO
      CUR = 1
      CUR {
        allWrap = ‹li class=”current”›|‹/li›
        doNotLinkIt = 1
      }
    }
  }
}
[globalVar = GP:tx_vierundzwanzigglossary_vierundzwanzigglossary|glossar›0]
  lib.navigation.breadcrumb = COA
  lib.navigation.breadcrumb {
    10 = HMENU
    10 {
      special = rootline
      special.value = 1,–1
      includeNotInMenu = 1
      wrap = ‹ul class=”inline unstyled”›|
      1 = TMENU
      1 {
        noBlur = 1
        expAll = 0
        NO = 1
        NO {
          allWrap = ‹li›| ‹span›‹/span›‹/li›
        }
        CUR ‹ .NO
        CUR = 1
        CUR {
          allWrap = ‹li›|‹span›‹/span›‹/li›
          doNotLinkIt = 0
        }
      }
    }
    20 = RECORDS
    20 {
      dontCheckPid = 1
      tables = tx_vierundzwanzigglossary_domain_model_glossary
      source = {GP:tx_vierundzwanzigglossary_vierundzwanzigglossary|glossar}
      source.insertData = 1
      conf.tx_vierundzwanzigglossary_domain_model_glossary = TEXT
      conf.tx_vierundzwanzigglossary_domain_model_glossary.field = title
      wrap = ‹li class=”current”›|‹/li›‹/ul›
    }
  }
[global]

 

Hier ist also
[globalVar = GP:tx_vierundzwanzigglossary_vierundzwanzigglossary|glossar›0]
Der Ausruck für: “Wenn Get oder Post variable ist tx_extensionname_pluginname und id > 0 dann führe folgenden code aus.”