Oxid: Kategorie in Produktliste anzeigen

Wenn man die Kategorie bzw. den Kategorienamen in der der Produktliste wie „Schon gesehen“ oder „Zubehör“ anzeigen möchte, muss man in der foreach-Schleife die Kategorie des Produktes ermitteln und dann ausgeben.

/* das Objekt heißt _oBoxProduct */
[{foreach from=$_oBoxProducts item=_oBoxProduct name=_sProdList}]
/* Kategorie ermitteln */
[{ assign var="oCategory" value=$_oBoxProduct->getCategory()}]
/* Kategorie ausgeben */
[{$oCategory->oxcategories__oxtitle}]

Geschrieben in oxid | Kommentare deaktiviert für Oxid: Kategorie in Produktliste anzeigen

Oxid: diverse Feineinstellungen

Anzahl der Artikel hinter Kategorienamen ausblenden

Im Adminbereich unter Stammdaten > Grundeinstellungen > Performance Haken bei „Anzahl enthaltener Artikel hinter den Kategorienamen anzeigen“ entfernen.

Anzahl der Kategorien im Hauptmenü einstellen

Im Adminbereich unter Erweiterungen > Themes > [Themename]* > Anzeige den Wert im Feld „Anzahl der Kategorien, die oben angezeigt werden“ ändern.
* Falls es ein von Azure abgeleitetes Theme ist, dann bei Azure die Einstellung vornehmen.

Geschrieben in oxid | Kommentare deaktiviert für Oxid: diverse Feineinstellungen

Rhabarbertarte

Zutaten:

  • 150g Mehl
  • 100g Butter
  • 2 EL Zucker
  • 1 Prise Salz
  • 3-4 Stangen Rhabarber
  • 1 Becher Creme fraiche 200g
  • Zucker
  • 2 Eier
  • Erbsen zum Blindbacken

Zubereitung:
Mehl, kalte Butter, Zucker und Salz zu einem Teig verkneten und im Kühlschrank ruhen lassen. Danach den Teig zu einem Kreis ausrollen, eine Tarteform einfetten und mit Backpapier auslegen. Den Teig in die Form legen, Backpapier darauf geben und mit Erbsen bedecken. Den Teig bei 200 Grad ca. 20 Minuten vorbacken.

Den Rhabarber schälen und in Stücke schneiden. In einem Topf mit einem Löffel Wasser und Zucker (nach Belieben mehrere Esslöffel) kurz kochen. Abkühlen lassen, Creme fraiche, Eier und Vanillemark dazugeben, alles verrühren.

Die Erbsen entfernen (diese kann man zwar nicht mehr zum kochen verwenden, aber aufbewahren und das nächste Mal zum Blindbacken verwenden). Den Belag auf den Boden verteilen und ca. 20 Minuten backen.

Geschrieben in cooking | Kommentare deaktiviert für Rhabarbertarte

Oxid: Hauptmenü im Warenkorb anzeigen

Den Haken im Admin-Bereich unter Stammdaten > Grundeinstellungen > System > Bestellungen „Einige Navigationselemente während des Bestellprozesses ausblenden“ entfernen.

Geschrieben in oxid | Kommentare deaktiviert für Oxid: Hauptmenü im Warenkorb anzeigen

Keine Kopien in Uploads-Order

Für ein Projekt war es wichtig, dass die Bilder aus dem fileadmin referenziert werden und nicht kopiert werden. Ich schätze den TYPO3-Kopiermechanismus, da er sinnvoll ist, da Redakteure „aus Versehen“ Dateien löschen können, aber manchmal kann es auch sehr lästig sein. Gerade wenn man den fileadmin-Ordner versioniert mit SVN zum Beispiel, kann es so einfach sein: Datei austauschen, Checkout einspielen, fertig.

Es gibt eine Extension im TER – em_references. Leider ist die schon alt und die nutzt XCLASSES, um das Rendering von TCAFORMS im Backend zu ändern. XCLASS heißt, dass der Code zu einem Zeitpunkt rauskopiert und angepasst wurde. Das heißt, das alle Änderungen, die seitdem im Core an der Stelle stattgefunden haben, dort nicht zu finden sind. Daher fand ich die Variante nicht gut.

Man kann aber tatsächlich auch ohne Extension auskommen. Man braucht eine kleine eigene Extension, die im TCA den Uploads-Pfad anpasst. Dazu schreibt man in ext_tables.php der Extension folgendes:

t3lib_div::loadTCA('tt_content');
$TCA['tt_content']['columns']['image']['config']['uploadfolder'] = '';
// das ist optional
 
t3lib_div::loadTCA('fe_users');
$TCA['fe_users']['columns']['image']['config']['uploadfolder'] = '';

Dann muss man noch den Pfad über TypoScript anpassen, dazu brauch man folgende Zeile im TypoScript Template Setup:

tt_content.image.20.imgPath =

Der Nachteil dieser Methode gegenüber einer Extension ist, dass es nicht abwärts-kompatibel ist. d.h. hat man einmal diesen Weg gewählt, kann man nur dann wieder zurück, wenn man alle Bilder nach dem ändern dieses Pfades anfassen und neu zuweisen.

Für alle, die wie ich lange gesucht haben:

  • Bilder nicht in uploads-Ordner kopieren
  • uploads-Ordner für Bilder aus TYPO3 anpassen
  • do not copy images in upload folder (without extension)

TCA oder Flexform – Link Wizard konfigurieren

In diesem Artikel bin ich kurz auf die Feldkonfiguration im TCA eingegangen. Den zuletzt erwähnten Link-Wizard kann man konfigurieren und zwar so, dass nur bestimmte Dateitypen ausgewählt werden können. In meinem Beispiel brauche ich ihn, um auf mp3-Dateien zu verlinken. Der Nachteil, wenn man ein Feld als ‚group‘ deklariert ist, dass das referenzierte File in den Uploads-Ordner kopiert wird. Beim Verlinken passiert es nicht.

Diese Konfiguration ermöglicht es, nur auf mp3-Dateien zu verlinken. Zu beachten ist, dass man die blindLinkOptions nur dann verwenden kann, wenn der Browse-Links-Mode auf wizard gestellt ist.

'file' => array(
	'exclude' => 0,
	'label' => 'LLL:EXT:myextension/locallang_db.xml:file',
	'config' => array(
		'type' => 'input',
		'size' => '48',
		'wizards' => Array(
			'_PADDING' => 2,
			'link' => Array(
				'type' => 'popup',
				'title' => 'Link',
				'icon' => 'link_popup.gif',
				'script' => 'browse_links.php?mode=wizard',
				'JSopenParams' => 'height=300,width=500,status=0,menubar=0,scrollbars=1',
				'params' => Array(
					'blindLinkOptions' => 'page,url,mail,spec,folder',
					'allowedExtensions' => 'mp3,ogg',
				)
			),
		),
		'eval' => 'required,nospace',
		'softref' => 'typolink'
	),
),

Will man auf eine beliebige Datei verlinken, ohne die Dateiendung zu bestimmen, kann man den Mode direkt auf ‚file‘ stellen, weiter Konfiguration ist dann nicht möglich.

'link' => Array(
	'type' => 'popup',
	'title' => 'Link',
	'icon' => 'link_popup.gif',
	'script' => 'browse_links.php?mode=file',
	'JSopenParams' => 'height=300,width=500,status=0,menubar=0,scrollbars=1',
),

Alles, was man im TCA als PHP angeben kann, kann man auch in XML-Form angeben, dann kann man es im Flexform oder in Data Structures von TemplaVoila verwenden.

<link type="array">
	<type>popup</type>
	<title>Link</title>
	<icon>link_popup.gif</icon>
	<script>browse_links.php?mode=wizard</script>
	<JSopenParams>height=300,width=500,status=0,menubar=0,scrollbars=1</JSopenParams>
	<params>
		<blindLinkOptions>page,url,mail,spec,folder</blindLinkOptions>
		<allowedExtensions>mp3</allowedExtensions>
	</params>
</link>

Geschrieben in TYPO3 | Kommentare deaktiviert für TCA oder Flexform – Link Wizard konfigurieren

TCA oder Flexform – Konfiguration der Eingabefelder

Wenn man eine Extension schreibt und dort Felder angibt, oder das bestehende TCA anpasst oder in einem Flexform Felder erstellt, mit der richtigen Konfiguration im TCA kann man sich das Leben einfach machen. Die Konfiguration, die man im TCA (also als PHP Array) angeben kann, kann man genauso in einem Flexform angeben, dann allerdings im Format XML. Diese Aufstellung ist nur ein kleiner Auszug aus der Liste aller Möglichkeiten.

Einfachstes Textfeld, da kann man fast alles eingeben, was man möchte, Hilfen gibt es keine.

'myfield' => array (		
	'exclude' => 1,		
	'label' => 'LLL:EXT:my_extension/locallang_db.xml:myfield',		
	'config' => array (
		'type' => 'input',	
		'size' => '30',
	)
)

Auswahlfeld (Select), aus einer Reihe von Optionen kann in diesem Fall eine gewählt werden. Unter ‚items‘ gibt man die auswählbaren Optionen an. An erster Stelle jeder Option steht das Label (kann aus Locallang kommen, muss aber nicht), an zweiter Stelle steht der Wert, der in die Datenbank geschrieben wird.

'myfield' => array (		
	'exclude' => 1,		
	'label' => 'LLL:EXT:myextension/locallang_db.xml:myfield',		
	'config' => array (
		'type' => 'select',
		'items' => array (
			array('', ''),
			array('LLL:EXT:myextension/locallang_db.xml:myfield.option1', 'option1'),
			array('LLL:EXT:myextension/locallang_db.xml:myfield.option2', 'option2'),
			array('LLL:EXT:myextension/locallang_db.xml:myfield.option3', 'option3'),
		),
		'size' => 1,	
		'maxitems' => 1,
	)
),

Wenn man ein Feld vom Typ group verwendet in Kombination mit internal_type ‚file‘ kann der Benutzer in dem Feld ein z.B. ein Bild auswählen. Von diesem Bild wird, falls show_thumbs gesetzt ist, eine Vorschau angezeigt. Problem ist – das Bild (oder die Datei anderen Typs) wird in den Ordner uploads kopiert. Wenn man also nachträglich das Bild erneut in fileadmin hochlädt, wirkt sich diese Änderung nicht aus, da ja die Kopie in uploads referenziert wird. Der Vorteil ist, dass die Redakteure nicht aus Versehen das Bild löschen können, um sich dann zu wundern, warum es denn weg ist.

'myfield' => array (		
	'exclude' => 1,		
	'label' => 'LLL:EXT:myextension/locallang_db.xml:myfield',		
	'config' => array (
		'type' => 'group',
		'internal_type' => 'file',
		'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],	
		'max_size' => $GLOBALS['TYPO3_CONF_VARS']['BE']['maxFileSize'],	
		'uploadfolder' => 'uploads/myextension',
		'show_thumbs' => 1,	
		'size' => 1,	
		'minitems' => 0,
		'maxitems' => 1,
	)
),

Was tun, wenn man diesen Kopiermechanismus umgehen möchte. Vielleicht möchte man ein Bild (oder eine andere Datei) auswählbar machen, sie soll aber tatsächlich nur referenziert werden (und nicht kopiert). Mein Trick ist, statt ‚group‘ ein Input-Feld in Kombination mit dem Link-Wizard zu verwenden.

'myfield' => array (
	'exclude' => 1,        
	'label' => 'LLL:EXT:myextension/locallang_db.xml:myfield',        
	'config' => array (
		'type'     => 'input',
		'size'     => '15',
		'max'      => '255',
		'checkbox' => '',
		'eval'     => 'trim',
		'wizards'  => array(
			'_PADDING' => 2,
			'link'     => array(
				'type'         => 'popup',
				'title'        => 'Link',
				'icon'         => 'link_popup.gif',
				'script'       => 'browse_links.php?mode=wizard',
				'JSopenParams' => 'height=300,width=500,status=0,menubar=0,scrollbars=1',
			)
		)
	)
)

Geschrieben in TYPO3 | Kommentare deaktiviert für TCA oder Flexform – Konfiguration der Eingabefelder

Navigation mit Bild und einem Datawrap

TYPO3 ist geil und beängstigend zugleich:

Es wird eine Navigation erzeugt, bei der jedes Element mit einem li umgeben ist. Das div darin hat eine Klasse, die über die Seiteneingenschaften zugewiesen werden kann. Darin ist ein Bild, das ebenfalls über die Seiteneingenschaften gesetzt werden kann. Darunter wird der Locallang-Wert ausgegeben, der aus einem Feld aus Seiteneingenschaften stammt. Und zum Schluss dann der Titel der Seite.

1 = TMENU
1 {
	expAll = 1
	wrap = <ul>|</ul>
	NO = 1
	NO {
		field = title
		wrapItemAndSub = <li>|</li>
		stdWrap.dataWrap = <div class="{field:myclass}">|</div>
		stdWrap.cObject = COA
		stdWrap.cObject {
			10 = IMAGE
			10.file.import.dataWrap = uploads/myextension/{field:myimage}
			10.wrap = <div class="image">|</div>
			20 = TEXT
			20.dataWrap = LLL:EXT:myextension/locallang_db.xml:pages.mytype.{field:mytype}
			20.wrap3 = {|}
			20.insertData = 1
			30 = TEXT
			30.field = title
			30.wrap = <span class="text">|</span>
		}
	}
}

Geschrieben in TYPO3 | Kommentare deaktiviert für Navigation mit Bild und einem Datawrap

News Latest wird von Archive Menu beeinflusst

Ich habe auf einer Seite gleichzeitig die tt_news-Plugins List, Archive Menu (AMENU) und Latest eingebaut und dabei festgestellt, dass die Latest-Darstellung ebenfalls von der Auswahl im AMENU beeinflusst wird. Natürlich liegt es daran, dass im Code von tt_news keine große Unterscheidung gemacht wird zwischen List und Latest. Dieses Verhalten ist natürlich nicht immer gewüscht, so habe ich im Forum auf typo3.net einen Beitrag von 2006 gefunden, auf dem jemand genau das gleiche Problem hat, wie ich jetzt.
Die Funktion getSelectConf in der tt_news-Hauptklasse bastelt einfach die Where-Bedingungen für die Abfrage zusammen. Es wird gleich für List und Latest zusammengebaut. Eine Möglichkeit ist in der Klasse rumzupfuschen, was ich aber nicht gerne mache. Wer es doch machen möchte, braucht vor allen Ergänzungen des $selectConf[‚where‘], die archivedate oder datetime enthalten einfach die folgende If-Abfrage zu ergänzen:

if($this->theCode != 'LATEST') {

Eine elegantere Möglichkeit ist der selectConfHook, allerdings wird dieser erst aufgerufen, wenn alles zusammengebaut wurde. Um einen Hook zu nutzen, schreibt man erstmal eine eigene kleine Extension, Name ist egal. Dann registriert man den Hook in der ext_localconf.php:

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_news']['selectConfHook'][] = 
	'EXT:my_extension/class.myextension.php:user_myextension_hook';

Dann legt man eine Datei mit dem Namen class.myextension.php im Extension-Ordner an und darin die Klasse user_myextension_hook mit einer einzigen Funktion. Dieser Funktion wird das übergeordnete Objekt übergeben und die selectConf, die man dann manipulieren kann. Der einzige Weg, der mir einfallen ist, ist mit preg_replace. Mit diesem Code werden für Latest alle Zeitabhängigen Abfragen aus der selectConf rausgefiltert.

function processSelectConfHook($pObject, $selectConf) {
	if($pObject->theCode == 'LATEST') {
		$selectConf['where'] = preg_replace('/tt_news.archivedate.*?AND/i', '', $selectConf['where']);
		$selectConf['where'] = preg_replace('/tt_news.datetime.*?AND/i', '', $selectConf['where']);
		$selectConf['where'] = str_replace('((', '', $selectConf['where']);
	} 
	return $selectConf;
}

Tags: ,

Geschrieben in TYPO3 | Kommentare deaktiviert für News Latest wird von Archive Menu beeinflusst

Step Choreo

Aufbau nach SPLIT
1.Block bilateral
8 – Leg Curl im L, Chacha diagonal auf die Nordseite vom Step (Blick Nord)
8 – 2 Marches zum Step drehen, Stomp L kreuzen, Kick Ball Change
Aufbau: Repeater + 2 Basic =< Leg Curl L + Chacha + 2 March + Sixpoint => Drehung dazu

2.Block unilateral
7 – V-Step Elvis (1 und 2 im V-Step aufs Step, auf 3 Knee von ersten Bein eindrehen), 4 March zur Seite ab
9 – Mambo Chacha auf dem Boden, Double Stomp
Aufbau: 2 Repeater => 1.Repeater zu V-Step Elvis, seit ab => dann Mambo Chacha auf 8 (d.h. offbeat) => Double Stomp dazu

3.Block
4 – Kick, Fuß auf dem Step absetzen, Drehung auf 4
12 – Sixpoint von oben herunter (Blick Süd), 2 Marches ab (dabei drehen, dass Blick wieder Nord), Flieger
Aufbau: 3 Basic + Knee => 1 Basic + Sixpoint + 2 Marches + Knee => statt Basic oben auf dem Step marschieren, Sixpoint von oben, ab und Flieger => Basic durch Kick mit Absetzen und halten ersetzen

4.Block
8 – Knee, Pivot Turn, am Ende aufs Step
8 – Chacha seit vom Step, Box
Aufbau: 3 Knee + Basic => 2 Knee + Chacha + Basic => Knee + Halten + March auf Step + Chacha seit ab + Box

Block 5 und 6 waren etwas einfacher, daher lass ich die aus.

Geschrieben in choreos | Kommentare deaktiviert für Step Choreo