To assign default permissions to pages in Typo3, the following TSConfig snippet is helpful:

This code should be placed at Edit Page > Resources > TypoScript Configuration.

After saving the configuration, any new page below the edited page receives the configured default permissions.

In Git, every line of the file .gitignore is a regular expression that describes files that should be ignored. However, one can also add lines that state which files not to ignore.

Example:

The following example shows a configuration that ignores everything in a particular directory (./tmp) but explicitly states that PDF files in ./tmp should not be ignored:

 

Umlauts (and other special characters) sometimes do not work out of the box when applying the listing package.

Here is a code snippet for mapping umlauts to their “raw” encodings:

I found this snippet alongside many more for other languages in a stackoverflow post.

Working with UTF-8-encoded PHP files in web applications, a common, hard-to-track-down error is the following: “Headers already sent” or “Cannot modify header information“. This usually happens during a call to the function header(), which manipulates the HTTP header.

One reason for this is that the UTF-8 file starts with an invisible(!) byte order mark (BOM) consisting of the three bytes 0xEF,0xBB,0xBF. The BOM can be removed by opening the file in a suitbale text editor and unticking the Add Byte Order Mark (BOM) .option (or similar).

A more convenient way using sed is the following:

(-i enables in-place operation of sed; 1 denotes that one replacement should happen; ^ denotes the start of a line)

Example

Let’s consider a file consisting of two lines (‘A’, ‘B’) stored with the BOM:

Investigating this file with the hex tool od, :

we obtain the following output:

The three BOM bytes are clearly visible.

After running

The output looks as follows, proving that the BOM is gone:

References

Dieser Artikel beschreibt, wie Styles in der ECommerce-Software Gambio2 auch ohne EyeCandy verwendet werden können. Leider war es mir nicht möglich, beim Umzug von Gambio nach Gambio GX2 die Styles einfach zu übernehmen. Daher wechselte ich das Template von EyeCandy zu gambio und führte die unten beschriebenen Änderungen durch.

Die ursprüngliche Datei, die sich zunächst ergeben hat, war ca. 208 KByte groß und enthielt viele Redundanzen (z.B. gleichen Definitionen in unterschiedlichen Hierarchiestufen). Ich habe die Datei auf eine Größe von ca. 110 KByte gebracht, ohne dass die Funktionalität gelitten hat.

Das Ergebnis ist im ConeleK-Shop zu betrachten.

Statisches .css File einlesen

Zunächst muss eine kleine Änderung in der Datei includes/header.php durchgeführt werden, damit die Gambio-Shop-SW die statische .css Datei einliest.

original

ersetzt durch:

Nun wird nicht mehr die Programmdatei gm_dynamic.css.php sondern die Datei /templates/gambio/stylesheet.css aufgerufen.

Eine kleine Version dieser Datei ist schon im System vorhanden, diese reicht jedoch nicht aus, um ein vernünftiges Design zu erstellen.

.css File erstellen

Nun wird ein statisches .css File erstellt. Dieses Stylesheet setzt sich aus dem ursprünglichen Datei templates/gambio/stylesheet.css
und einer selbst erstellten .css Datei zusammen. Diese neue Datei wird an Stelle der ursprünglichen stylesheet.css Datei verwendet. Wir haben hierzu unser altes Stylesheet aus der der alten Gambio Installation benutzt. Diese Datei befindet sich unter:

/cache/__dynamics.css

Sie ist leider für den Menschen nicht gut lesbar, da sie nicht formatiert ist. Wir haben sie mit einem Texteditor (Kate / Kubuntu Linux) und regulären Ausdrücken so bearbeitet, dass sie ein lesbares Format hat. In diese Datei haben wir die Datei templates/gambio/stylesheet.css integriert.

Nun haben wir ein funktionierendes Stylesheet für unseren GX2-Shop, das im wesentlichen auf Styles des alten GX-Shops beruht.

Styles bearbeiten

Wie findet man nun die Bezeichungen der Klassen (class) und IDs (id). Hier hilft ein Addon für den Firefox, der Firebug. Wenn dieser in Firefox installiert ist, kann man jedes Element einer Internet-Seite inzpizieren, Indem man man mit der Maus über das Element fährt und die rechte Maustaste klickt, Im Kontext-Menü, welches dann erscheint, wählt man dann “Inspect Element” und erhält so den Namen der Klasse oder ID. In der Datei lokalen stylesheet.css kann man nun mit Hilfe der Suchfunktion die entsprechende Klasse bzw. ID suchen und die Eigenschaften bearbeiten. Die Datei kann dann nach der Bearbeitung mit Hilfe eines ftp-Programms hoch geladen werden. Wir verwenden hierzu Filezilla stylesheet.css vom Server auf den lokalen Computer heruntergeladen und öffnet sie mit Filezilla mit dem Menüpunkt Maus -> rechts -> edit mit seinem Texteditor, so erscheint bei jeder Änderung / Abspeichern ein Dialog, der fragt, ob man die geänderte Datei hoch laden möchte. Klickt man auf “Yes” geschieht dies an die richtige Stelle.

Man kann nun das Ergebnis der Änderung mit dem Browser anschauen. Nicht vergessen beim Firefox Strg + R zu drücken, um den Cache zu leeren und die Seite neu aufzurufen.

Noch schneller geht es übrigens mit Webdav (Web-based Distributed Authoring and Versioning). Viele lokale Filesystem-Browser beherrschen Webdav. Hat man ein Webdav zu deinem Server und dem Ordner in dem sich das Shopsystem befindet eingerichtet, erscheint dessen Dateisystem im lokalen Filesystem-Browser wie auf dem eigenen Computer. Man kann nun mit einer entfernten Datei, wie z.B. der stylesheet.css arbeiten, wie mit einer Datei auf dem lokalen Computer. Nach Editieren der Datei klickt man auf “Speichern” und die Datei wird direkt auf dem Server geändert und gespeichert.

Download

Unter folgendem Link können Sie das Stylesheet herunterladen. Wir bitten Sie allerdings für Ihren eigenen Style anzupassen und nicht das ConeleK Design zu verwenden. Benennen Sie die Datei in stylesheet.css um: stylesheet_gambio_template_120903.css.zip

Siehe auch

Gambio GX2: Boxen ohne Styleedit platzieren

Dieser Artikel beschreibt, wie die Boxen in Gambio GX2 ohne Styledit platziert werden können.
Leider war es mir nicht möglich, die Platzierung der Boxen einfach aus Gambio in Gambio GX2 zu übernehmen.

Der Vorteil des Templatese gambio und gegenüber des neuen Templates EyeCandy ist, dass Boxen auf beiden Seiten platziert werden können: Links, wo der potentielle Kunde zuerst hin schaut, sollen nur wirklich relevante Informationen stehen. Diese sind das Feld für die Schnellsuche, der Produktkatalog und Links zu diesem Wiki (in dem sich die technischen Informationen für unsere CEK Module befinden) und die Sitemap. Rechts erscheinen Informationen, die nur für Besucher, die in Erwägung ziehen etwas zu kaufen, oder mehr allgemeine Informationen benötigen. Nur das Template gambio bietet die Möglichkeiten von beidseitigen Boxen.

Das Ergebnis kann man sich im Shop von ConeleK ansehen.

Platzierung der Boxen

Die Reihenfolge der Boxen kann in der Datei

/templates/gambio/template_settings.php

verändert werden. Die Information über die Positionierung und den Status der jeweiligen Box finden wir im Array  $t_menubox_array .

Im Folgenden ist das Array so wiedergegeben, wie es für unseren Shop definiert wurde:

Die Kommentare (//) geben den Titel an, unter welchem der Inhalt in der Seite erscheint.

Die Position der jeweiligen Box wird jeweils durch die Konstante 'POSITION' definiert.

Der Status der Box, also ob sie sichtbar oder unsichtbar ist, wird durch die Konstante 'Status' festgelegt.

Beispiel:

In diesem Beispiel handelt es sich um die Box Kategorien. Sie ist eingeschaltet

und befindet sich auf der linken Seite des Shops an Position 2.

Die Boxen für die rechte Seite haben für die Werte ≥ 100.

Die Box Kundenlogin

befindet sich auf der rechten Seite des Shops in der ersten Position 2, da

und ist eingeschaltet, da

Siehe auch

The e-shop software Gambio 2 may display so-called special offers (that is price-reduced articles or such) on its startpage. Whether specials are displayed or not is configured with the option GM_SPECIALS_STARTPAGE (ID=1111):

  • If its value is an integer and greater 0, special offers are displayed.
  • Otherwise, special offers are hidden.

To display special offers. open the Gambio database and run the following SQL query:

To hide special offers, run the following SQL query:

Details (optional)

The following information are technical details, which may change as time passes.

The rendering of the “specials box” is done in the following PHP file: includes/modules/specials_main.php .

The embedding in the center of the page happens in the following PHP file: includes/center_modules.php .

Allgemeine Konfiguration

Generischer Befehl:

Git speichert Einstellungen auf drei Ebenen:

  • –file (default): für das aktuelle Repository
  • –global: für den aktuellen Benutzer
  • –system: für das gesamte System

Die wichtigsten Funktionalitäten sind:

  • Einstellung abfragen:
  • Einstellung setzen (–replace-all, da sonst ein weiterer und kein neuer Wert für gespeichert wird):
  • Einstellungen abfragen:

     

Nützliche Optionen sind dabei (Git macht auch Vorschläge, wenn man TAB betätigt):

  • user.name: Benutzername für Commit-Nachrichten
  • user.e-mail: Mailadresse für Commit-Nachrichten
  • core.editor: Editor für Nachrichten oder längere Texte (bspw. nano oder [Vim])
  • alias: Setzt mal beispielsweise alias.co auf checkout, dann kann man einen Checkout von nun an auch neben dem ursprünglichen langen git checkout mit dem Kurzbefehl git co durchführen.

Repository initialisieren

  • Repository im aktuellen Verzeichnis neu erstellen:
  • Ein existierendes Repository ins aktuelle Verzeichnis klonen (–shared: auch andere Benutzer des Systems können darauf zugreifen):
  • Diese Seite wird von nun an den Namen origin tragen.

Hinzufügen, Entfernen und Anzeigen von Dateien

  • Datei file.txt zum Repository hinzufügen
  • Dies funktioniert auch für Verzeichnisse.
  • Git fügt keine leeren Verzeichnisse hinzu!
  • Der Befehl git add file.txt hat noch zwei weitere Funktionen:
  • # Stage: Falls die Datei file.txt in den nächsten Commit aufgenommen werden soll.
  • # Resolved: Falls die Datei file.txt einen Konflikt hatte und jetzt als gelöst (resolved) markiert werden soll.
  • Datei file.txt aus dem Repository löschen:
  • Datei file.txt auch vom Dateisystem löschen:
  • Datei file.txt nicht vom Dateisystem löschen:
  • Alle aktuelle versionierten Dateien anzeigen:
  • Aktuellen Status anzeigen (Was wird committed? Was wurde verändert?):
  • Mit der Option -v bekommt man die Differenz zum Original angezeigt.

Änderungen rückgängig machen

Das Äquivalent eines Reverts (svn revert file.txt) bei Subversion lautet:

Entferntes Repository

  • Änderungen holen (Äquivalent eines Updatesvn update– bei Subversion):
  • Falls man nur eine entfernte Seite hat, dann ist der Aufruf einfach:
  • Ansonsten muss man die entfernte Seite mit Namen (origin) (und ggfs. sogar Branch – master – nennen):
  • Änderungen schreiben (Äquivalent eines Commitsvn commit– bei Subversion)
  • Falls man nur eine entfernte Seite hat, dann ist der Aufruf einfach:
  • Ansonsten muss man die entfernte Seite mit Namen (origin) (und ggfs. sogar Branch – master – nennen):

Informationen über entfernte Repositories

  • Ausführliche Informationen über remote comp5lx mittels git remote show :
  • Option -n verhindert, dass der Remote angesprochen wird, ansonsten funktioniert die Anfrage nur, wenn man gerade online ist.

Nachträglich entfernte Repositories tracken

Es kann unter Umständen passieren, dass der aktuelle lokale Branch einen entfernten Branch origin/b_remote nicht trackt und man dies nachholen möchte. In diesem Fall kann man mit der Option -u beim Pushen den Upstream Branch aktualisieren:

Siehe auch: hier

Gespeicherte Zwischenstände (Tags)

Git bietet anders als Subversion eine integrierte Verwaltung von Tags:

  • Alle Tags auflisten:
  • Tag erstellen (-f erzwingt Überschreiben):
  • Tag löschen:

Zweige (Branches)

  • Alle Branches auflisten:
  • Branch neuer_branch erstellen
  • Branch löschen:
  • Änderungen aus dem Branch neuer_branch in den Branch master übernehmen:

 

GitHub mit einem anderen Identity File verwenden

Normalerweise nimmt der SSH-Befehl an, dass der öffentliche Schlüssel unter ~/.ssh/id_rsa.pub zu finden ist.
Möchte man nun einen anderen Schlüssel verwenden, dann sind die folgenden Schritte nötig:

    • Füge eine Hostdefinition in die Datei ~/.ssh/config ein:
    • Hinzufügen/Klonen der remote site:

Diverses

  • Passwort temporär speichern (default: 900 Sekunden):
  • Fast Forward deaktivieren für Merges in den Master:
  • Lokale Kopien von entfernten Branches löschen, falls diese nicht mehr existieren:
  • Übersicht über den Zustand des Repositories:
  • Grafisch mit Git arbeiten:
  • Branches löschen, dir zwar als remote/… gekennzeichnet sind, aber in Wirklichkeit nicht mehr auf dem jeweiligen Remote-Server existieren:
  • Hübsche Bash-Prompt:

git.config (Beispiel)

Nutzerspezifische Einstellungen werden in der Datei ‘~/.gitconfig’ gespeichert:

Links

 

Diese Seite enthält eine Aufstellung nützlicher Befehle für den vi/vim.
Der Befehl vimtutor führt einen sanft in die Bedienung des Vim ein.

= Modi des vim =

Meistbenutzte Modi des vim:

Normal-/Befehlsmodus

  • Anfangszustand des vim: Von ihm aus erreicht man alle anderen Modi.
  • Durch 2 x ESC von überall erreichbar.

Einfügemodus

  • Vom Normalmodus aus durch Eingabe des Zeichens i (insert).
  • Zum Normalmodus hin durch Drücken von ESC oder CTRL+C
  • Fast jedes eingegebene Zeichen wird in die Datei geschrieben (bis auf bspw. ESC)

Kommandozeilenmodus

  • Vom Normalmodus aus durch Eingabe von : (Doppelpunkt)
  • Zum Normalmodus hin durch Drücken von ESC.

Visueller Modus

Vom Normalmodus aus durch Eingabe von

  • v (normales Markieren),
  • V (zeilenweise markieren) oder
  • CTRL+V (blockweise).

= Basisbefehle =

Durch wiederholtes Drücken von ESC erreicht man immer wieder den Anfangs-/Befehlsmodus.

Bewegungsbefehle

Bewegen kann man den Cursor über die Pfeiltasten oder über hjkl, was etwas schneller, aber auch gewöhnungsbedürftig ist, da man in der Zehnfingerstellung verbleiben kann.

Den Zeilenanfang erreicht man mit ^ oder der Null 0, das Zeilenende mit $.

Die aktuelle Zeilenummer erhält man mit CTRL+G.
Den Dokumentenanfang erreicht man mit gg, das Dokumentenende mit G.
An eine beliebige Zeile, sagen wir 1023, kann man sich durch den folgende Befehl bewegen:

Das nächste Wort erreicht man mittels w (word), das vorige Wort mit b(back), zum Wortende” des aktuellen Wortes kommt man mittels e

Jedem dieser Bewegungsbefehle kann man einen Faktor voranstellen, der angibt, wie häufig die Operation ausgeführt werden soll: Bei der Eingabe von 3w bewegt man sich 3 Wörter vorwärts.

Einfügen

Ausgangspunkt ist der Normalmodus. Die folgenden Befehle wechseln in den Einfügemodus:

  • Befehl i (insert): Einfügen vor dem markierten Zeichen
  • Befehl a (append): Einfügen nach dem markierten Zeichen
  • Befehl O: Einfügen einer leeren Zeile vor der aktuellen Zeile
  • Befehl o: Einfügen einer leeren Zeile nach der aktuellen Zeile

Kopieren

Ausgangspunkt ist der Normalmodus.

  • Befehl yy (yank): Kopieren der aktuellen Zeile (danach mit p einfügen)

Löschen

Das Löschkommando setzt sich aus dem Löschoperator d und einer Bewegungsrichtung zusammen; man kann alle oben erwähnten Bewegungsbefehle (^,$,e,w,2w,b,3b,…) nutzen.

  • Befehl dw (delete word):
    • * innerhalb eines Wortes: aktuelles Wort löschen
    • * innerhalb von Leerzeichen: alle Leerzeichen bis zum nächsten Wort löschen
  • Befehl d$ (delete bis $) löscht alles bis zum Ende der Zeile (inkl. aktuelles Zeichen)

Etwas anders verhält es sich mit dem Löschoperator für ganze Zeilen: Um eine Zeile zu löschen, tippt man

Genau wie zuvor bei den Bewegungsrichtungen gibt es auch hier die Möglichkeit, eine Wiederholungszahl anzugeben.
Um bspw. 3 Zeilen (die aktuelle und die beiden folgenden) zu löschen, wählt man:

Ersetzen

Aus dem Normalmodus heraus kann man mit dem Befehl r (Replace) ganz bequem einzelne Zeichen ersetzen.
Möchte man das aktuell markierte Zeichen durch ein q ersetzen, dann tippt man:

Man kann auch größere Bereiche mit dem Befehl c (Change) ersetzen, dabei gelten die oben genannten Bewegungsrichtungen (0,$,e,b,…).
Nach dem Befehl ist man im Einfügemodus und gibt den Ersatztext ein.

Undo, Redo und Repeat

  • Mittels u (Undo) macht man den letzten Befehl rückgängig.
  • Mittels U (Undo) wird die aktuelle Zeile wiederhergestellt.
  • Der Befehl CTRL+R (Redo) wird der zuletzt mittels u zurückgenommenen Befehl wieder ausgeführt.

Dies ist nicht zu verwechseln mit einer Wiederholung des zuletzt durchgeführten Befehls: . (Punkt, Repeat).

Zwischenablage

Der Löschbefehl wirkt wie ein Ausschneiden in einem normalen Texteditor:
Die gelöschten Zeichen werden zwischengespeichert und man kann sie einfügen mittels p (Paste oder Put), dabei wird der Inhalt der Zwischenablage stets nach der aktuellen Cursorposition eingefügt, was bei ganzen Zeilen (dd,2dd,…) dazu führt, dass die neue Zeile unter der aktuellen eingefügt wird.

= Ansicht =

Zeilennummern anzeigen/verbergen

Im Befehlsmodus kann man mittels

Zeilennummern anzeigen lassen und diese mit

wieder verbergen.

Die aktuelle Zeilennummer erhält man am unteren Bildschirmrand mit Ctrl+G.

Ansicht der aktuellen Datei aktualisieren (Refresh)

Aktuelle Datei neu laden:

Mehrere Dateien öffnen (Tabs)

Neue Datei öffnen:

Zum vorherigen Tab springen:

Zum nächsten Tab springen:

Datei des aktuellen Tabs schließen:

Alle Tabs schließen:

= Anwendungsfälle =

Man Page eines Befehls öffnen

Die zu einem Befehl gehörige Man Page kann man öffnen, indem man den Cursor im Namen des Befehls platziert und den Befehl K startet.
Verlassen kann man die Man Page wie gewohnt mit q.

Eine referenzierte Datei öffnen

Wenn man im Vim entwickelt, möchte man manchmal eine Datei öffnen, die bspw. bei C/C++ mit einem #include eingebunden wird.
Im Vim ist dies sehr einfach:
Man bewegt sich mit dem Cursor auf den Namen der referenzierten Datei und startet den Befehl (go file):

Leere Zeilen entfernen

Der Befehl :g/[regex]/[cmd] nimmt einen regulären Ausdruck [regex] (hier ^$^ ist der Zeilenanfang, $ das Zeilenende) und wendet das zuletzt stehende Kommando [cmd] (hier d) auf alle zutreffenden Zeilen an.

Suchen ohne Ersetzen

Im Befehlsmodus: Suche (case insensitive) nächstes Vorkommen von type:

Nächsten Treffer anzeigen: n drücken; vorherigen Treffer anzeigen N drücken.

Case Sensitive Search

Die Suche im vim ist standardmäßig case insensitive.
Um die Suche case sensitive zu machen, muss die Sequenz \C in die Suchanfrage aufgenommen werden:

…findet also nur den Term Type, nicht aber type, TYpe etc.

Suchen und Ersetzen

Alle Vorkommnisse (g) von foo innerhalb einer Zeile durch bar ersetzen:

Alle Vorkommnisse (g) von foo innerhalb einer Datei durch bar ersetzen:

Weitere/alternative Optionen zu g:

  • c (confirm) bestätige jede Ersetzung
  • i (ignore case) Groß-/Kleinschreibung ignorieren (d.h. im Beispiel würden auch Foo, fOo, etc. durch bar ersetzt)
  • kein g nur in der aktuellen Zeile ersetzen

Blockweise einkommentieren

Quelle: [http://notfaq.wordpress.com/2006/07/28/vim-comment-blocks-of-code/]

  • Erste Spalte des zu kommentierenden Textblocks markieren (Ctrl+v, kann mittels Ctrl+v auch wieder verlassen werden)
  • In den Einfügemodus wechseln mit I (großes i).
  • Zeilenkommentarzeichen eingeben (bspw. # bei der BASH oder // bei C)
  • ESC, um den Einfügemodus zu verlassen
  • (Manchmal erscheinen die Zeichen erst, wenn man eine weitere Taste drückt)

Blockweise auskommentieren

Haben alle Zeilen dengleichen Anfang (bspw. ###), dann kann man wie in vorigem Abschnitt vorgehen:

  • Die zu löschenden Kommentarzeichen als Textblock markieren (Ctrl+v, kann mittels Ctrl+v auch wieder verlassen werden)
  • Löschen mittels x.
  • Der Editor kehrt automatisch in den Anfangsmodus zurück.