Eigene Suchbox mit Typoscript für Indexed Search (tx_indexedsearch)

Bei vielen Seiten vorallem neuen Responsive-Seiten, wünscht man sich eine Suchbox die man komplett selber gestalten kann. Die Plugins die man findet, sind leider nicht immer passend und selber schreiben geht, aber wie….

Hier im Artikel, zeige ich euch wie es mit kurzen TypoScript anweisungen dies zu realisieren ist.

“Eigene Suchbox mit Typoscript für Indexed Search (tx_indexedsearch)” weiterlesen

Form-Session-Data per Typoscript überprüfen mit If-Else

Hallo zusammen, aus einem gegeben Anlass wieder ein kleines Tutorial diesmal zum Thema:
IF-Else und Typo3-Session in einer Typoscript verarbeitung.

Wenn man in Typo3 einen bestimmten Content zeigen muss bevor man gewisse AGB’s akzeptiert hat, kann man das am besten über die Session und einem kleinen Formular lösen. Dazu muss man im Folgeschritt etwas am Typoscript arbeiten um dies zu Händeln.

Mein aktuelles Projekt ist sehr alt und daher wird der „Template Auto-parser“ noch verwendet, wodrauf das Beispiel beruht. Ich denke, aber das es auch eben so mit TemplaVoila läuft.

An diesem Beispiel zeige ich, wie man mit ein paar Tricks, eine kleine Content-Weiche
schaltet und dem User dazu bringen muss, etwas zu akzeptieren oder darauf zu verzichten was nach der Weiche steht.

Das Typoscript:

# Display a tt_content record
###################################
lib.agbtext = RECORDS
lib.agbtext {
      tables = tt_content
      source = 911,939
      dontCheckPid = 1
}

# check the session-data
###################################
tmp.check = COA
tmp.check {
  10 = COA
  10 {
       if {
           value.data = TSFE:fe_user|sesData|recs|ts|akz
           equals = Akzeptieren
           negate=1
       }
       10 < lib.agbtext
  }
  20 = COA
  20 {
       if {
           value.data = TSFE:fe_user|sesData|recs|ts|akz
           equals = Akzeptieren
       }
       10 < temp.content
  }
}

# override the template-parsing
###################################
temp.mainTemplate.subparts.content < tmp.check
page.10 < temp.mainTemplate
&#91;/code&#93;
<p>&nbsp;</p>
<p><strong>Das Formular:</strong></p>

<div class="absatzDisclaimer">
  <form method="post">
    <table cellspacing="0" cellpadding="0" border="0"><tbody>
      <tr>
        <td style="width: 150px;">
        <input type="submit" name="recs&#91;ts&#93;&#91;akz&#93;" value="Nicht akzeptieren"></td>
        <td style="width: 150px;">
        <input type="submit" name="recs&#91;ts&#93;&#91;akz&#93;" value="Akzeptieren"></td>
      </tr></tbody>
    </table>
  </form>
</div>

 

Erklärung:

Das „lib.agbtext“ speichert 2 Datensätze von der Webseite die in einem nicht sichtbaren Bereich abgelegt werden, am besten so dass die Suchmaschine es auch nicht finden kann (SEO Hintergrund).

Das „tmp.check“ checkt die Session und zeigt je nach Zustand entweder den „lib.agbtext“ oder wenn es erfolgreich / zutreffend ist wird der aktuelle Content dargestellt.

Am Schluss wir durch das Schreiben in den Subpart wie Weiche vervollständigt. „temp.mainTemplate.subparts.content < tmp.check“

 

Viel Spaß damit 🙂
Marc

Image aus Templavoila mit Fallback-Bild (ifEmpty, isFalse)

Hallo Freunde,
ich hatte das Problem, wenn ich ein Bild in TemplaVoila als “Image-Field” setze, wird mir nie ein Fallback Bild angezeigt. Nach langem Suchen, Testen & Probieren habe ich folgende Lösung entwickelt.

Wie wo was warum:
Was: field_backimg wird als Image-Field festgelegt.
Wo: In den Seiten-Eigenschaften.
Was: Man kann pro Seite ein Bild auswählen und definiert somit das Hintergrundbild.
Warum: Der Kunde soll ein Hintergrundbild selber bestimmen können, aber auch ein Fallback-Bild bekommen, wenn er keins wählt.

Das Problem:
Im normalem Fall wird durch TemplaVoila Folgendes geschrieben:

10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
10.file.maxW = 200

Damit kann man aber dann kein Default-Fallback-Bild definieren, da das “current = 1” alles überschreibt. Auch die ifTrue, ifFalse & ifEmpty fassen hier bei nicht.

Die Lösung:
Man bindet das Bild nicht mit “current = 1” ein, sondern holt sich die Daten über “import.data” aus dem Feld. Somit macht man das gleiche wie “current = 1” nur das man dann ein Fallback-Bild setzen kann.

10 = IMAGE
10 {
	file = fileadmin/user_upload/backgrounds/default.jpg
	file {
		import = uploads/tx_templavoila/
		import.data = field:field_backimg
		import.listNum = 0
	}
	# optional Pagetitle als alt/titletag
	altText.data= levelfield :-1, title, slide
	#titleText.data= levelfield :-1, title, slide
}

Viel Spaß damit,
Marc

SEO Titel mit tt_news

Hallo zusammen,
für alle die ihren eigenen PageTitle verwenden und das auch mit tt_news machen wollen, hier die Lösung 😉
Viel Spaß damit Red lion design – SEO Cardiff

# **
# * Seitennamen von tt_News Name // Konstanten
# ********************
page_news_detail = xx

# **
# * Seitennamen von tt_News Name // setup
# ********************
[globalVar = TSFE:id = {$page_news_detail}]
config.noPageTitle = 2
temp.headertitle = COA
temp.headertitle {
wrap = |
10=RECORDS
10 {
# id des template-records
# < typo3 4.7 # source = {GPvar:tx_ttnews|tt_news} # > typo3 4.7
source = {GP:tx_ttnews|tt_news}
source.insertData = 1
tables = tt_news
conf.tt_news >
conf.tt_news = TEXT
conf.tt_news.field=title
}
15 = TEXT
15.value =
15.noTrimWrap= || – |
20 = TEXT
20.field = subtitle
20.if.isTrue.field = subtitle
20.noTrimWrap= || – |
30 = TEXT
# read pagetitle from template
30.data = TSFE : tmpl | setup | sitetitle
30.ifEmpty = FIRMENNAME
stdWrap.noTrimWrap = | |||
}
[end]
page.headerData.10 < temp.headertitle [/code]

SocialMediaBar mit TypoScript

Wer wollte nicht schon immer mal für seine eigene Seite eine SocialMediaBar haben und auf jeder Seite Like’n / Google’n oder Twittern können…
hier mit dem kleinen TypoScript kann man das locker umsetzen.

Konstanten:
baseURL = http://www.domain.ltd/

Setup:
# **
# * socialmediabox
# ********************
lib.field_smb = COA
lib.field_smb {
  10 = TEXT
  10 {
    typolink.parameter.data = getIndpEnv:REQUEST_URI
    typolink.returnLast = url
    wrap (
    <li class="google">
    <div class="g-plusone" data-size="medium" data-href="{$baseURL}|"></div>
    <script type="text/javascript">
      (function() {
        var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
        po.src = 'https://apis.google.com/js/plusone.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
      })();
    </script>
    </li>
    )
  }
  20 = TEXT
  20 {
    typolink.parameter.data = getIndpEnv:REQUEST_URI
    typolink.returnLast = url
    wrap (
    <li class="twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="{$baseURL}|" data-size="medium">Tweet</a>
    <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
    </li>
  )
  }
  30 = TEXT
  30 {
    typolink.parameter.data = getIndpEnv:REQUEST_URI
    typolink.returnLast = url
    wrap (
    <li class="facebook"><div class="fb-like" data-href="{$baseURL}|" data-send="false" data-layout="button_count" data-width="450" data-show-faces="false"></div>
    <div id="fb-root"></div>
    <script>(function(d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0];
      if (d.getElementById(id)) return;
      js = d.createElement(s); js.id = id;
      js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1&appId=459667507386498";
      fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));</script>
    </li>
    )
  }
 wrap = <ul class="smb">|</ul> 
}

Viel Spaß damit 😉

Typo3 mit Flashbanner + vererbung | Unterseiten aber nur Bild (tt_content)

Hallo liebe Freunde,
wenn man in Typo3 doch mal Flash verwenden will, gibt es eine tolle EXT: Flash Player Integration (SWF Object)

Wenn man nun den Banner auch noch auf die Unterseiten vererben möchte (beispielhafte Einstellung im TS von TemplaVoila-Mapping):

20 = CONTENT
20 {
source.current = 1

## by marc
table = tt_content
select {
select.pidInList.if.isTrue.field=tt_content
selectFields = tt_content.*
where = tt_content.colPos=3
groupBy = tt_content.uid
leftjoin = pages ON(pages.uid = tt_content.pid) AND INSTR(pages.tx_templavoila_flex, CONCAT(‘index=”vDEF”>’, tt_content.uid))>0
}
## by marc – end

stdWrap.required = 1
stdWrap.dataWrap =

|

 


slide = -1
}

 

[…] Sollte man das Plugin nicht direkt einbinden, sondern per Typoscript.
Damit hat man direkt auch die Möglichkeit alle Paramater übergeben und wenn der Kunde doch mal auf den Unterseiten doch nur noch ein Bild zu sehen ist statt immer die gleiche Animation, ist es durch ein paar Teilen mehr (siehe PIDinRootline) das auch alles kein Thema mehr 😉

flash.produkt < plugin.tx_yejjswfobject_pi1 flash.produkt { flash_record { flashmovie = fileadmin//user_upload/xxxx/xxxx/banner.swf width = 980 height = 320 requiredversion = 8 alternativecontent = 3700 } ts_content { flashParams ( wmode|transparent loop|false ) } } [PIDinRootline = 215,250,238,435,240,241] flash.produkt = RECORDS flash.produkt.tables = tt_content flash.produkt.source = 3700 [end] [/code]

 

Fazit: Die Art etwas mit Typoscript einzubinden ist zwar im ersten Moment nervig und etwas aufwändig, aber kann bei einer großen Webseite das Leben echt leicht machen. Bei mir würde es in dem Fall von 8 Flashbanner und 500 Unterseiten ca. 2 Stunden Arbeit ersparen.

Ich wünsche euch viel Spaß damit und tolle Internseiten 😉
Grüße, euer Marc