Kategorie: PHP

TYPO3 CMS 7+ Login Provider API und ’sorting‘

Mit der neuen Login Provider API von TYPO3 7+ ist es relativ einfach ein neues Backend Login Service (z.B. SSO) einzuführen.

Der Login Provider wird über ext_localconf.php registriert:

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['backend']['loginProviders'][] = array(
   'provider' => \Plan2net\ExampleAuth\LoginProvider\ExampleLoginProvider::class,
   'sorting' => 200,
   'icon-class' => 'fa-example',
   'label' => 'LLL:EXT:example_auth/…/locallang.xlf:login.link'
);

und hier kommt der Fallstrick auf den ich aufmerksam machen möchte:

sorting bezieht sich nicht auf die Sortierung, die ja allgemein bei 0 beginnen würde (als erster Eintrag), sondern ist eine Priorität. Es zählt hier also der höchste Wert, dann der zweithöchste, usw. Will man seinen eigenen Login Provider als Standard eingetragen haben (statt dem üblichen Benutzername und Passwort), setzt man sorting auf einen hohen Wert wie oben im Beispiel.

T3DD16 – plan2net sponsert die Coding Night

T3DD16 - TYPO3 Developer Days 2016
TYPO3 Developer Days 2016

Von 1.-4. September 2016 finden aktuell in Nürnberg (Deutschland) die als „T3DD“ bekannten TYPO3 Developer Days statt.

Es ist die grösste technische Veranstaltung der TYPO3 Community, die alle Aspekte des TYPO3 CMS behandelt: in intensiven Tutorials, Workshops und Sessions tauschen sich hier Developer über neue Entwicklungen aus, werden spannende Produktfeatures und Extension vorgestellt und Lösungsansätze diskutiert. Unter den mehr als 260 Teilnehmern befinden sich heuer auch wieder zwei plan2net ProgrammiererInnen.

Als Highlight gilt seit Jahren die sogenannte „Coding Night“, in der Entwickler aus allen Ländern gemeinsam am Produkt weiterarbeiten. plan2net freut sich sehr, diese heuer mitsponsern zu dürfen.

TCA-Konfiguration und der TYPO3-Cache

Wie man als TYPO3-Extension-Entwickler die Performanz eines Seitenaufrufs ganz leicht verbessern kann.

Seit der Version 6 LTS kann man in einer Extension verschiedene Konfigurationen des $TCA-Arrays, die traditionell in ext_tables.php abgelegt wurden, auslagern. Das sind zum einen Definitionen und Erweiterungen von SQL-Tabellen als auch Konfigurationen von Plugins.

Configuration/TCA/<tabelle>.php

TYPO3 erwartet in diesem Ordner Dateien mit PHP-Code, die ein komplettes $TCA-Array einer Tabelle mittels return zurückliefern. Der Dateiname ist hierbei der Name gleich wie jener der zu definierenden Tabelle.

Configuration/TCA/Overrides/<tabelle>.php

PHP-Dateien im Overrides-Ordner können verschiedene Manipulationen am $TCA-Array vornehmen. Der Name der Dateien ist für TYPO3 nicht von Bedeutung, allerdings ist es sinnvoll auch hier den Namen der Tabellen als Dateiname zu verwenden.

PHP The Right Way.

PHP: Der richtige Weg.

Kein religiöser Diskurs, welche Sprache besser ist – das überlassen wir gerne anderen. (Hinweis: Die Antwort ist: ‚Die beste für die jeweilige Aufgabe.‘)

Wir bleiben hier bei PHP und das aus einem wirklich guten Grund:
PHP wurde von 3.* bis 5.* massiv weiterentwickelt und ist damit zu einer richtigen objekt-orientierten und vielfach nutzbaren Programmiersprache gewachsen. (… und 7.* wird wirklich revolutionär)

Nun geht es aber darum, dass alle, die jemals ein .php (oder .php3/4/5) File gesehen / bearbeitet haben über viele historische Missverständnisse aufzuklären und bewusst zu machen wie PHP heute funktioniert – nämlich anders und besser.

Infiltration als Schlüssel zum Erfolg für TYPO3 Neos

Um dem jungen Content Management System TYPO3 Neos zu Relevanz zu verhelfen, muss Patrick Lobachers Strategie erweitert werden.

Im Oktober 2014 hat Patrick Lobacher auf der 10th International TYPO3 Conference in Berlin eine Liste von zehn möglichen Strategien präsentiert. Mit ihnen legt er dar, wie TYPO3 Neos zu einem relevanten Teil der Welt der Content Management Systems (CMS) werden kann.

TYPO3 CMS 6+: show only certain system categories (sys_category) in the wizard / zeige nur bestimmte Kategorien (sys_category) im System-Kategorien Wizard

Let’s say you want to use the new TYPO3 CMS 6.x+ system categories (sys_category) in your own extension.

As the name suggests these are system-wide categories, so the category tree can be very large and may show categories you don’t want to use/show for your special record type.

To limit the categories in the category wizard for your own records, take the following steps:

  • save your category records in different folders per type, e.g. in a folder with PID 135 (categories for type A) and another with PID 136 (categories for type B)
  • save your A records in a separate folder, e.g. in a folder with PID 142

To die() or not to die()

Dieser Kommentar von http://www.php.net/ triffts ganz gut.

It is poor design to rely on die() for error handling in a web site because it results in an ugly experience for site users: a broken page and – if they’re lucky – an error message that is no help to them at all. As far as they are concerned, when the page breaks, the whole site might as well be broken.

If you ever want the public to use your site, always design it to handle errors in a way that will allow them to continue using it if possible. If it’s not possible and the site really is broken, make sure that you find out so that you can fix it. die() by itself won’t do either.

Mails unter Windows mit PHP versenden

Manchmal hat man das Problem, dass man lokal unter Windows ein Mail mit PHP verschicken muss aber der Mailserver Authentfizierung erfordert. Die php.ini erlaubt aber nur den Host (Parameter „smtp“) und den Port (Parameter „smtp_port“) einzustellen, also was tun? Anstelle sich einen kompletten Mailserver zu installieren, installiert man sich einen einen Fake-Sendmail, der als Mail Transfer Agent (MTA) fungiert und die Mails an den Mailserver weiterleitet. Das kleine Programm findet sich hier:

http://glob.com.au/sendmail/

Einfach in einen Ordner stellen und konfigurieren (Parameter „sendmail_path“). Es ist nur darauf zu achten, dass der Pfad keine Leerzeichen enthält. Im File „sendmail.ini“ trägt man dann alle nötigen Einstellungen ein und schon können Mails problemlos verschickt werden. Üblicherweise sollten folgende Parameter gesetzt werden: „smpt_server“, „default_domain“, „hostname“ sowie „auth_username“ und „auth_password“.

Magento 1.5.1 / Customer erweitern / Admin Felder im Backend hinzufügen

Ich hatte Schwierigkeiten mit der aktuellen stable Version von Magento (1.5.1.0) zum Customer Formular im Backend (Admin) ein eigenes Feld meines eigenen Modules, das den Customer erweitert, zum Bearbeiten hinzuzufügen.

Mit Hilfe von Florian Graf aus Tirol (angeblich das schönste Land Österreichs ;-)) fand sich dann recht schnell eine Lösung im sql Installer/Setup Script des Modules:

$installer->addAttribute('customer', 'my_field', 
array('type' => 'varchar', 'required' => false,
'sort_order' => 3, 'label' => 'My Field'));

Mage::getSingleton('eav/config')
   ->getAttribute('customer', 'my_field')
   ->setData('used_in_forms', array('adminhtml_customer'))
   ->save();

Wichtig ist der zweite Teil, der offenbar erst ab 1.5.1 notwendig ist. Vorher hat es gereicht, das Attribut hinzuzufügen.

Original Quelle: http://www.schmengler-se.de/-magento-15-neue-kundenattribute-im-backend-fomular-sichtbar-machen

Magento: Block inkl. Caching in eigenem Modul (Magento Block Howto)

Magento bietet die Möglichkeit s.g. Blöcke zu definieren, die an bestimmten Stellen der Website angezeigt werden können.

Als Beispiel fügen wir einen Block in statische CMS Seiten ein.

Wir gehen wieder von einem eigenen Modul mit folgender Verzichnisstruktur aus:

app/code/local/Mycompany/Mymodule/
+ Block/
+ Helper/
+ Model/
+ ...
+ etc/

Zuerst legen wir ein neues Verzeichnis Cms/ in Block/ an.

In diesem Verzeichnis legen wir eine neue Datei Content.php an.
Hier eine recht simple Klasse:

Anfrage