=
18.234.88.196

Daschmi's Notizblog

Logo des Etikators - Tool um online drucken von Etiketten für selbst angefertigte Tinkturen

PHP_SCRIPT nach Update auf TYPO6

Erstellt in TYPO3 am 16. November 2013

In der aktuellen TYPO3 Version (6.1.5) ist es nicht mehr möglich PHP Scripte z.B. über:

lib.langmenu = PHP_SCRIPT_INT
lib.langmenu.file = typo3conf/sprachen.php

einzubinden. Man kann es aber einfach in eine User Klasse packen und wie folgt einbinden:

includeLibs.lang = typo3conf/sprachen.php
lib.langmenu = USER
lib.langmenu.userFunc = user_sprachen->main

Die Klasse sieht dabei wie folgt aus:

<?php

class user_sprachen
 {

function main($content, $conf)
{

…

}

}

?>

TYPO3 – Content Elemente lassen sich nach Update auf TYPO3 6 nicht anlegen.

Erstellt in Sonstiges, TYPO3 am 14. November 2013

Sollte man eine weiße (oder graue) Seite nach dem Anlegen eines neuen Content Elementes erhalten, so lohnt meist ein Blick in die error.log des Servers. Hier steht vermutlich so etwas drin wie:

[Thu Nov 14 16:29:53 2013] [error] [client 217.92.137.74] PHP Fatal error:  Call to undefined method TYPO3\\CMS\\Core\\Utility\\GeneralUtility::readLLXMLfile() in /local/domains/domainx/html/typo3conf/ext/gallery2/pi1/class.tx_gallery2_pi1_wizicon.php on line 62, referer: http://www.wohnstaetten-wolfenbuettel.de/typo3conf/ext/templavoila/mod1/index.php?id=43&amp;

Um diesen Fehler zu beheben muss man in die Datei (Im Beispiel ist es /local/domains/domainx/html/typo3conf/ext/gallery2/pi1/class.tx_gallery2_pi1_wizicon.php) gehen und folgendes:

$LOCAL_LANG = t3lib_div::readLLXMLfile($llFile, $GLOBALS['LANG']->lang)

durch

$LOCAL_LANG = t3lib_div::readLLfile($llFile, $GLOBALS['LANG']->lang)

ersetzen.

Anderes Template für Extbase Action verwenden

Erstellt in Extension Entwicklung, TS Schnipsel, TYPO3 am 29. August 2013

Möchte man ein anderes Template als für die action vorgesehen verwenden, so kann man folgenden Aufruf verwenden:

$this->view->setTemplatePathAndFilename(\TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName(
  ‚typo3conf/ext/‘.
  $this->request->getControllerExtensionKey().
  ‚/Resources/Private/Templates/Frage/login_user.html‘
));

Möchte man diesen Aufruf in der loginAction() des FrageControllers verwenden, so musste in TYPO3 6.1.3 ein leeres Template login.html existieren. Sonst kam ein Fehler auch wenn man das Template login.html gar nicht verwendet.

Formhandler verwenden mit simplem SPAM Schutz

Erstellt in TS Schnipsel, TYPO3 am 13. Juli 2013

Formular mit dem Formhandler einbinden

Um den Formhandler einzusetzen muss die Extension aus dem TER installiert werden. Anschließend muss es auf einer Seite eingebunden werden. Im TS der Seite genügt dann folgender Code:

plugin.Tx_Formhandler.settings {
  debug = 0
  templateFile = fileadmin/templates/kontakt.html
  langFile = fileadmin/templates/kontakt.xml
  formValuesPrefix = fh
  additionalIncludePaths.1 = fileadmin/templates/
  validators {
    1 {
      class = Tx_Formhandler_Validator_Default
      config {
        fieldConf {
          homepage.errorCheck.1 = simpleantispam
          text.errorCheck.1 = simpleantispam
          name.errorCheck.1 = simpleantispam
          NameS.errorCheck.1 = required
          TextS.errorCheck.1 = required
        }
      }
    }
  }
  finishers {
    1 {
      class = Tx_Formhandler_Finisher_Mail
    }
    24 {
      class = Tx_Formhandler_Finisher_Redirect
    }
  }
  singleErrorTemplate {
    totalWrap = |
    singleWrap = |
  }
  errorListTemplate {
    totalWrap = <p class="error">Folgende Fehler sind aufgetreten</p><ul class="error">|</ul><br />
    singleWrap = <li>|</li>
  }
}

Im Beispiel sind die Felder NameS und TestS als Pflichtfelder definiert und müssen angegeben werden. Die Felder homepage, text und name sind mit dem ErrorCheck „simpleantispam“ definiert.

Einfacher SPAM Schutz

Der einfache SPAM Schutz basiert auf der Tatsache das Bots die Formulare meist komplett ausfüllen. Wir prüfen also einfach ob Felder die für den User nicht sichtbar sind ausgefüllt wurden. Wenn ja, kann davon ausgegangen werden das es sich um einen automatischen Eintrag handelt. Damit das ganze funktioniert müssen die Felder homepage, text und name im Formular verbaut werden aber dürfen nicht angezeigt werden.

Hier ein Muster Template:

fileadmin/templates/kontakt.html6

<!– ###TEMPLATE_FORM1### begin –>

###ERROR###

<form id="mailform" name="mailform" method="post" action="#" enctype="multipart/form-data" style="padding-left:20px;">

	###HIDDEN_FIELDS###

		<div class="form-row">
			<div class="field-label">Name:</div>
			<div class="field-widget"><input type="text" name="fh[NameS]" class="required" value="###value_NameS###" title="Bitte einen Namen angeben !" onblur="pkon(1)" /></div>
		</div>
		<div class="form-row">
			<div class="field-label">eMail:</div>
			<div class="field-widget"><input name="fh[EMail_Adresse]" class="required validate-email" value = "###value_EMail_Adresse###" title="Bitte E-Mail Addresse eingeben !" onblur="pkon(2)" /></div>
		</div>
		<div class="form-row">
			<div class="field-label">Ort:</div>
			<div class="field-widget"><input name="fh[Ort]" class="normal" value = "###value_Ort###" title="Bitte Wohnort eingeben !" onblur="pkon(3)" /></div>
		</div>
		<div class="form-row">
			<div class="field-label">Straße:</div>
			<div class="field-widget"><input name="fh[Strasse]" class="normal" value = "###value_Strasse###" title="Bitte die Straße eingeben !" onblur="pkon(3)" /></div>
		</div>
		<div class="form-row">
			<div class="field-label">Telefon:</div>
			<div class="field-widget"><input name="fh[Telefon]" class="normal" value = "###value_Telefon###" title="Bitte eine Telefonnummer eingeben !" onblur="pkon(3)" /></div>
		</div>
		<div class="form-row">
			<div class="field-label">Frage:</div>
			<div class="field-widget"><textarea name="fh[TextS]" class="required" cols="40" rows="10">###value_SText###</textarea></div>
		</div>

		<div style="position:absolute; left:-1000px; top:-1000px;">
			<input type="text" name="fh[homepage]" value="" tabindex="50" class="formulartext"/>
			<input type="text" name="fh[text]" value="" tabindex="50" class="formulartext"/>
			<input type="text" name="fh[name]" value="" tabindex="50" class="formulartext"/>
		</div>

		<div style = "clear:both;"></div>
		<br/>
		<div style="margin:0px; padding:0px;">
			<div style = "clear:both;"></div>
			<br/>
			<input type="submit" value="Anfrage senden" ###submit_nextStep### />
		</div>
	<br/>

</form>
<!– ###TEMPLATE_FORM1### end –>

Damit der errorChecvk „simpleantispam“ auch funktioniert muss das folgende Script geladen sein. Es funktioniert im Prinzip umgekehrt wie der required Error Check:

fileadmin/templates/Tx_Formhandler_ErrorCheck_Simpleantispam.php

<?php

	class Tx_Formhandler_ErrorCheck_Simpleantispam extends Tx_Formhandler_AbstractErrorCheck
	{

		public function check() {

			$checkFailed = “;

			if (!empty($this->gp[$this->formFieldName]))
			{

				$checkFailed = $this->getCheckFailed();

			}

			return $checkFailed;

		} // public function check()

	} // class Tx_Formhandler_ErrorCheck_Simpleantispam extends Tx_Formhandler_AbstractErrorCheck

?>

Damit die Fehler noch korrekt angezeigt werden muss die Sprachdatei noch hinterlegt werden.

fileadmin/templates/kontakt.xml

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3locallang>
  <meta type="array">
    <description>Language labels for my form</description>
  </meta>
  <data type="array">
    <languageKey index="default" type="array">
			<label index="error_homepage_simpleantispam"></label>
			<label index="error_text_simpleantispam"></label>
			<label index="error_name_simpleantispam"></label>
			<label index="error_NameS_required">Bitte einen Namen angeben</label>
			<label index="error_TextS_required">Bitte einen Text angeben</label>
    </languageKey>
  </data>
</T3locallang>

Die Empfänger der Kunden- und Admin Mail lassen sich einfach im Flexform einstellen. Die Inhalte der Mail müssen dann im Template noch definiert werden:

fileadmin/templates/kontakt.html

<!– ###TEMPLATE_SUBMITTEDOK### begin
  OPTIONAL – will be shown if form was submitted and all required fields were filled out
–>
	<p>Vielen Dank f&uuml;r ihre Anfrage, wir werden sie so schnell wie m&ouml;glich bearbeiten</p>
<!– ###TEMPLATE_SUBMITTEDOK### end –>

<!– ###TEMPLATE_EMAIL_USER_PLAIN### begin
    OPTIONAL – this will be the email text that is sent to the user (plaintext!)
–>
Hallo ###value_NameS###,
Wir werden ihre Anfrage so schnell wie möglich bearbeiten

M.f.G.
<!– ###TEMPLATE_EMAIL_USER_PLAIN### end –>

<!– ###TEMPLATE_EMAIL_ADMIN_PLAIN### begin
    OPTIONAL – this will be the email text that is sent to the admin (plaintext!)
    (admin-email = the email you can specify in the mailformplus plugin)
–>
Hallo, ein Nutzer schrieb folgendes :

Name: ###value_NameS###
Email: ###value_EMail_Adresse###
Text: 

###value_TextS###

<!– ###TEMPLATE_EMAIL_ADMIN_PLAIN### end –>

border=“0″ aus TYPO3 Bildelementen entfernen

Erstellt in TS Schnipsel, TYPO3 am 3. Mai 2013

TYPO3 fügt den Bilder standardmäßig border=“0″ hinzu, was bei neueren Doctypes im Validator zu Warnungen führt.

Die Fehlermeldung im Validator lautet:

[text]… there is no attribute <code>"border" …</code>[/text]

Um das Border Attribute zu entfernen, genügt es im TypoScript der Seite folgenden Code einzubinden:


config.disableImgBorderAttr = 1



Bitte genehmigen Sie die Verwendung von Cookies dieser Website! Mehr Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen