[TYPO3-german] TemplaVoila - Inhaltselement unter bestimmten Bedingungen nicht anzeigen

Kay Strobach typo3 at kay-strobach.de
Wed Jun 13 15:01:09 CEST 2012


Hi Laxander,

ich denke das geht.

Variante 1: Hook in TV finden und dort das rendering ändern.
Variante 2: postUserFunc des page objectes nutzen und mit einem
preg_replace das fce entfernen ;)

includeLibs.EXT = EXT:EXT/Classes/Hook/StdWrap.php

stdWrap.postUserFunc  = tx_EXT_Hook_StdWrap->processReplacement

<?php

class tx_EXT_Hook_StdWrap {
	/**
	 * Processes ordered replacements on content data.
	 *
	 * @param	string		$content: The content to be processed
	 * @param	array		$configuration: The TypoScript configuration for
stdWrap.replacement
	 * @return	string		The processed content data
	 */
	public function processReplacement($content) {
		$configuration = array(
			'10.' => array(
				'search' => '<div class="right"><input type="submit"',
				'replace' => '</fieldset><div class="submit"><input type="submit"',
			)
		);

		foreach ($configuration as $index => $action) {
				// Checks whether we have an valid action and a numeric key ending
with a dot ("10."):
			if (is_array($action) && substr($index, -1) === '.' &&
t3lib_div::testInt(substr($index, 0, -1))) {
				$content = $this->processReplacementAction($content, $action);
			}
		}
		return $content;
	}

	/**
	 * Processes a single search/replace on content data.
	 *
	 * @author Markus Günther:
http://azubi-medienblog.de/2011/12/06/typo3-4-5-um-stdwrap-replacement-erweitern/
	 *
	 * @param	string		$content: The content to be processed
	 * @param	array		$configuration: The TypoScript of the search/replace
action to be processed
	 * @return	string		The processed content data
	 */
	protected function processReplacementAction($content, array
$configuration) {
		if ((isset($configuration['search']) || isset($configuration['search.']))
		&& (isset($configuration['replace']) ||
isset($configuration['replace.']))) {

			// Gets the search needle:
			$search = tslib_cObj::stdWrap($configuration['search'],
$configuration['search.']);
			// Determines whether regular expression shall be used:
			if (isset($configuration['useRegExp']) || $configuration['useRegExp.']) {
				$useRegularExpression =
tslib_cObj::stdWrap($configuration['useRegExp'],
$configuration['useRegExp.']);
			}
			// Performs a replacement by preg_replace():
			if ($useRegularExpression) {
				$replace = tslib_cObj::stdWrap($configuration['replace'],
$configuration['replace.']);
				$content = preg_replace($search, $replace, $content);
				// Checks whether the search needle is part of the content:
			} elseif (strpos($content, $search) !== false) {
				$replace = tslib_cObj::stdWrap($configuration['replace'],
$configuration['replace.']);
				$content = str_replace($search, $replace, $content);
			}
		}
		return $content;
	}
}

Grüße
Kay

Am 13.06.2012 14:11, schrieb JCL - Johannes C. Laxander:
> 
> Hi Kay,
> 
> ok jetzt seh' ich klarer! Ich glaube da hab' ich mich bei meiner Problemschilderung ungenau ausgedrückt.
> Es geht mir nicht darum, diese im Backend auszublenden, sondern im Frontend nicht anzuzeigen!
> 
> Es handelt sich um angelegte und anzeigbare Inhaltselemente, die unter bestimmten Bedingungen eben (doch) nicht im FE angezeigt werden sollen. Ich müsste die Ausgabe dieser CEs also per TypoScript unterbinden!
> 
> Dazu eine Idee?
> 
> Gruß, Johannes. 
> 
>> -----Ursprüngliche Nachricht-----
>> Von: typo3-german-bounces at lists.typo3.org 
>> [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von 
>> Kay Strobach
>> Gesendet: Mittwoch, 13. Juni 2012 13:57
>> An: typo3-german at lists.typo3.org
>> Betreff: Re: [TYPO3-german] TemplaVoila - Inhaltselement 
>> unter bestimmten Bedingungen nicht anzeigen
>>
>> Hi Johannes,
>>
>> TCEFORM.tt_content.tx_templavoila_ds {
>>      removeItems = uid list (comma)
>> }
>>
>> TCEFORM.tt_content.tx_templavoila_to {
>>      removeItems = uid list (comma)
>> }
>>
>> Das geht auch für die Tabelle "pages".
>> Der obige Code ist nicht getestet, klappt aber sonst bei 
>> nahezu allen Feldern.
>>
>> Grüße
>> Kay
>>
>> Am 13.06.2012 13:50, schrieb JCL - Johannes C. Laxander:
>>> Hallo Kay,
>>>
>>> bei mir scheint heute wirklich einer auf der Leitung zu 
>> stehen - ich 
>>> versteh' nämlich nicht was du meinst? Sorry - aber erstmal 
>> danke dafür 
>>> ;-)
>>>
>>> Johannes
>>>  
>>>> Kay Strobach
>>>> Gesendet: Mittwoch, 13. Juni 2012 13:41
>>>>
>>>> Hi,
>>>>
>>>> du könntest im Pagets die option für das jeweilige template 
>>>> ausblenden.
>>>>
>>>> Grüße
>>>> Kay
>>>>
>>>>
>>>> Am 13.06.2012 13:35, schrieb JCL - Johannes C. Laxander:
>>>>> Hallo,
>>>>>  
>>>>> ich habe unter TemplaVoila in einer Seite mehrere
>>>> Inhaltselemente (Text / Text m Bild).
>>>>>  
>>>>> Unter bestimmten Bedingungen sollen einige dieser
>>>> Inhaltselemente nicht angezeigt werden. im müsste also das 
>>>> entsprechende Object löschen. Nur habe ich im Moment n'Brett vorm 
>>>> Kopf, weil mir nicht einfallen will, wie ich Zugriff auf ein 
>>>> bestimmtes Inhaltselement bekomme.
>>>>>  
>>>>> Wer kann mir bitte weiterhelfen?
>>>>>  
>>>>> Gruß Johannes.
>>>
>>
>>
>> --
>> http://www.kay-strobach.de - Open Source Rocks
>>
>> TYPO3 .... inspiring people to share!
>> Get involved: http://typo3.org
>>
>> Answer was useful - feel free to donate:
>>   -
>> https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_but
> ton_id=KPM9NAV73VDF2
>>   - https://flattr.com/profile/kaystrobach
>>
>>
>>
>> _______________________________________________
>> TYPO3-german mailing list
>> TYPO3-german at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>
> 


-- 
http://www.kay-strobach.de - Open Source Rocks

TYPO3 .... inspiring people to share!
Get involved: http://typo3.org

Answer was useful - feel free to donate:
  -
https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=KPM9NAV73VDF2
  - https://flattr.com/profile/kaystrobach





More information about the TYPO3-german mailing list