Webentwicklung bequem mit Chrome und dem Netbeans-Connector

Klassisches Webdevelopment bedeutete früher ständiges wechseln zwischen IDE/Editor. Änderungen im Code schreiben, in den Browser wechseln, Seite neu laden und Änderungen prüfen.

Später kam dann die Möglichkeit hinzu mit Firebug im Firefox oder dann später auch in Chrome mit den Chrome Developer Tools den DOM direkt zu manipulieren und wenn die Änderungen gut waren, diese heraus zu kopieren und händisch in das ursprüngliche Dokument einzupflegen und dann persistent zu speichern.

Mit den Netbeans Connector wurde nun die Möglichkeit geschaffen Änderungen in den Chrome Developer Tools von Netbeans übernehmen zu lassen und direkt nach Änderung persistent über Netbeans als IDE zu speichern. Eine sehr große Erleichterung, welche sehr viel Zeit in der Frontend-Entwicklung einsparen kann.

Bildschirmfoto 2015-01-16 um 16.06.25

Nach der Installation der Chrome-Extension Netbeans Connector kann dieser über Netbeans gestartet werden, in dem man die entsprechende Browser-Einstellung in Netbeans wählt

Bildschirmfoto 2015-01-16 um 16.16.47

und das Projekt startet. In diesem Fall habe ich ein leeres HTML5-Projekt angelegt und dieses dann gestartet.

Bildschirmfoto 2015-01-16 um 16.22.41

Neben der Möglichkeit die Änderungen in Netbeans die Änderungen vorzunehmen und beim speichern die Änderungen direkt durch ein von Netbeans ausgelöstes Neuladen der Seite zu begutachten gibt es noch die Möglichkeit nun die Chrome Developer Tools zu starten, dort die Änderungen vorzunehmen und Netbeans wird die Änderungen registrieren und für uns wegschreiben.

Bildschirmfoto 2015-01-16 um 16.28.22

Google+

Title und Meta-Description in Extbase setzen

Gerade kürzlich stand ich vor dem Problem, dass ich in einem Extbase-Plugin, welches non-cacheable sein musste, den Title-Tag und die Meta-Description dynanisch aus der Extension setzen musste.
Der häufig genutzter Ansatz den Title und die Description im GLOBALS-Array zu überschreiben

$GLOBALS['TSFE']->page['title'] = $newTitle;
$GLOBALS['TSFE']->indexedDocTitle = $newTitle;
$GLOBALS['TSFE']->page['description'] = $newDescription;

was in dem Fall eines nicht-cachebaren Plugins leider nicht funktioniert. Daher habe ich dann einen eher einfachen aber effektiven Ansatz verfolgt. In den Projekt wird die seo_basics-Extension genutzt, also deaktivieren wir alle Head-Tags der seo_basics-Extensin im Typoscript-Template der entsprechenden Seite:

plugin.tx_seobasics >

Nun werden kein Title und keine Meta-Description mehr in den Head gerendert und wir können diese in unserer Extension „händisch“ mittels der addAddtionalHeaderData-Methode in unserem Controller neu setzen:

$title = '<title>' . $myNewTitle . '</title>';
$metaDescription = '<meta name="description" content="' .  $myNewMetaDescription . '">';
$this->response->addAdditionalHeaderData($title . PHP_EOL . $metaDescription);
Google+

TYPO3 6.2 – Environment Variable TYPO3_CONTEXT nutzen

Seit der Version 6.2 gibt es in TYPO3 die Möglichkeit eine vordefinierte Environment-Variable TYPO3_CONTEXT zur Unterscheidung zwischen der Development-, Testing- und Production-Umgebung zu nutzen. Diese kann für eigene Zwecke in PHP aufgefangen werden, z.B. für Unterscheidungen in der Konfiguration, oder kann auch im Typoscript genutzt werden um Einstellungen festzulegen.

[applicationContext = Development*]
config.no_cache=1
[global]

Im TYPO3-Backend gibt es in der Development-Umgebung über den wohlbekannten Blitz zusätzlich die System-Caches zu leeren.
System-Caches über den "Blitz" leeren
Gesetzt wird Environment-Variable im Apache in der VirtualHost-Section mit

SetEnv TYPO3_CONTEXT "Development"

und in einer NGINX-PHP5-FPM-Umgebung am Besten über die fastcgi_params in location-Section für die PHP-Verarbeitung mit

        
location ~ \.php$ {
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param TYPO3_CONTEXT Development;
}
Google+

Caches deaktivieren in der Entwicklung TYPO3

Um die Caches bei der Entwicklung von TYPO3-Extensions zu deaktivieren reicht ein einfaches

config.no_cache = 1

im Typoscript-Template zumeist nicht aus. Es empfiehlt sich zusätzlich noch das Caching für die inkludierten Typoscript-Templates in der User-TS-Config des eingeloggten Backend-Users zu deaktivieren:

admPanel.override.tsdebug.forceTemplateParsing = 1 

als auch die Cache-Backend des Caching-Framework auf das NullBackend zu setzen:

$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pages'] = array(
    'frontend' => 't3lib_cache_frontend_VariableFrontend',
    'backend' => 't3lib_cache_backend_NullBackend',
    'options' => array(
        )
    );
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pagesection'] = array(
    'frontend' => 't3lib_cache_frontend_VariableFrontend',
    'backend' => 't3lib_cache_backend_NullBackend',
    'options' => array(
        )
    );
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_hash'] = array(
    'frontend' => 't3lib_cache_frontend_StringFrontend',
    'backend' => 't3lib_cache_backend_NullBackend',
    'options' => array(
        )
    );
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['extbase_object'] = array(
    'frontend' => 't3lib_cache_frontend_VariableFrontend',
    'backend' => 't3lib_cache_backend_NullBackend',
    'options' => array(
        )
    );
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['extbase_reflection'] = array(
    'frontend' => 't3lib_cache_frontend_VariableFrontend',
    'backend' => 't3lib_cache_backend_NullBackend',
    'options' => array(
        )
    );

Ergänzung:

Seit TYPO3 6.2 wird die Namespace-Notation verwendet:

$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pages']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\NullBackend';
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pagesection']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\NullBackend';
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_hash']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\NullBackend';
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['extbase_object']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\NullBackend';
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['extbase_reflection']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\NullBackend';
Google+