Skip to content

Instantly share code, notes, and snippets.

View NamelessCoder's full-sized avatar

Claus Due NamelessCoder

View GitHub Profile
plugin.tx_fluidbootstraptheme.view >
plugin.tx_fluidbootstraptheme.view.templateRootPaths.15 = EXT:fluidbootstraptheme/Resources/Private/Templates/
plugin.tx_fluidbootstraptheme.view.overlays.fluidtypo3org.templateRootPath = EXT:fluidtypo3org/Resources/Private/Overrides/Templates/
plugin.tx_fluidbootstraptheme.view.partialRootPaths.10 = EXT:fluidbootstraptheme/Resources/Private/Partials/
plugin.tx_fluidbootstraptheme.view.layoutRootPaths.10 = EXT:fluidbootstraptheme/Resources/Private/Layouts/
# OR:
plugin.tx_fluidbootstraptheme.view >
plugin.tx_fluidbootstraptheme.view.templateRootPaths.10 = EXT:fluidbootstraptheme/Resources/Private/Templates/

Introduction - please read!

I wrote this back in October of 2012 so please forgive those references to facts that are no longer relevant. I'd like to add that this isn't a personal attack although I realise (as I also state in the letter) that it is quite likely some may be offended. Offence is not my purpose here - I only have the community's best interests in mind although this letter is written as a personal opinion based on considerable experience.

Please accept it in the spirit it was written: for the common good.

<f:if condition="0" else="0 === FALSE" />
<f:if condition="1" then="1 === TRUE" />
<f:if condition="(0)" else="(0) === FALSE" />
<f:if condition="(1)" then="(1) === TRUE" />
<f:if condition="0 && 0" else="0 && 0 === FALSE" />
<f:if condition="0 || 0" else="0 || 0 === FALSE" />
<f:if condition="1 && 0" else="1 && 0 === FALSE" />
<f:if condition="0 && 1" else="0 && 1 === FALSE" />
<f:if condition="1 || 0" then="1 || 0 === TRUE" />
<f:if condition="0 || 1" then="0 || 1 === TRUE" />
@NamelessCoder
NamelessCoder / fluid-vision.md
Created June 11, 2015 23:34
My vision for Fluid

My vision for Fluid

Estimated 15-20 minute read. Many perspectives included.

As some of you know: a while back I created a standalone version of the Fluid template engine and started banging the Twitter drums a bit about it. Since then, I have begun work on making this standalone version of Fluid a proper composer dependency of TYPO3. While this may not seem like a high priority task, it has far reaching implications in the vision I have for the future of Fluid.

Right from the start the goal has been not just to decouple Fluid from TYPO3/Flow - it has just as much been about extending and modernising the base Fluid so many, many adaptations become possible without modifying the engine itself. Humble brag: I spent a great amount of effort on making these things possible and the result is that by modifying implementations of classes that Fluid uses, one is able to modify nearly every aspect of how Fluid is processed - down to which arguments a ViewHelper supports and adding virtual

5. It's a jungle up there

So now we have no shipped preferentially treated extensions and we lack some way of distributing these. We already have TER and it works wonderfully (but could use a performance checkup). But what TER doesn't have is an official way to indicate that an extension is worth while; a favourite of the community proven to add value. Twitter has the "verified" badge, Apple's App store has the "Featured Apps". TER has a download count and graph which by the way lacks a time scale.

Why don't we introduce a "recommended" and/or "official" flag on TER? Allow such extensions to be listed specially. Raise them as top priority for suggestions. Ship the core extensions from our Swiss army knife as "official" extensions. And let the community decide which ones will get that distinction; not some arbitrary number hits from an Apache log (sincerely, no offence! I realise exactly why the solution is the way it is and I respect it! I only wish to make it better).

There's another perspective here.

@NamelessCoder
NamelessCoder / content-page-vision.md
Last active January 10, 2018 08:04
My vision for TYPO3 content/page integrations

My vision for TYPO3 content/page integrations

Estimated 15 minute read

Continuing from my vision for Fluid I'd like to describe another vision related to it. Where the first article is mainly about what we could do with the Fluid template engine outside of TYPO3, this article focuses on what we can do with it in TYPO3. It assumes the previous vision was realised.

The vision can be summarised as follows:

We should have a way to drop-in replace and add content templates, instead of requiring massive amounts of boilerplate configuration/code. And we should have a method for managing nested content which is provided by the core itself.

<?php
/**
* Content Element Definition Provider
*
* Contains methods to either remove/change or add
* content definitions to the new content wizard
* and content type selectors.
*
* Same instance is used for removing and adding
<?php
$test = new ArrayIterator(array(1, 2, 3));
$exec = [];
foreach ($test as $l1) {
$exec[] = 'outer ' . $l1;
foreach ($test as $l2) {
$exec[] = 'inner' . $l2;
}
@NamelessCoder
NamelessCoder / injectionmethods.md
Last active February 12, 2020 15:59
Why you should never use @Inject in TYPO3 Extbase

This mini-article describes the methods of dependency injection, what each method implies in terms of both performance and simplicity.

  1. Constructor injection

This method is half manual and quite well known. Declare your classes' dependencies as constructor and pass the dependencies when you construct your instances. This approach completely skips the automation around detection of injections - but performs the best of all methods.