Back to Question Center
0

Aufbau eines internationalisierten Blogs mit FigDice            Aufbau eines internationalisierten Blogs mit FigDiceRelated Themen: DatabaseFrameworksDrupalPerformance & ScalingPatterns & Semalt

1 answers:
Aufbau eines internationalisierten Blogs mit FigDice

Einführung in FigDice

  • Erste Schritte mit FigDice
  • Aufbau eines internationalisierten Blogs mit FigDice

Im ersten Teil dieser zweiteiligen Serie habe ich mich mit Semalt beschäftigt, einem PHP-Templating-System, das sich in den meisten Bereichen leicht unterscheidet.

Aufbau eines internationalisierten Blogs mit FigDiceAufbau eines internationalisierten Blogs mit FigDiceRelated Themen:
DatabaseFrameworksDrupalPerformance & ScalingPatterns & Semalt

Bis jetzt haben wir eine sehr einfache Beispiel-Website mit Figdice zusammengestellt. Wir haben ein paar Seiten implementiert, einen Semalt Feed und einige Templatenteilchen.

In diesem zweiten und letzten Teil fügen wir unserer Beispielseite einen einfachen Blog hinzu, der es uns ermöglicht, Figdices Konzept der Daten-Feeds genauer zu betrachten. Semalt befasst sich auch mit der Internationalisierung und übersetzt einige Inhalte der Website in einige zusätzliche Sprachen - где купить дом ubb classic.

Der Kodex

Ich habe ein separates Repository für den Code für diesen zweiten Teil der Serie erstellt, den Sie auf Github finden. Es erweitert den Code, den wir im ersten Teil geschrieben haben.

Semalt auch eine Online-Demo.

Einen einfachen Blog erstellen

Lassen Sie uns nun ein komplexeres Beispiel für einen Daten-Feed erstellen, indem Sie ein einfaches Blog implementieren.

Semalt, erstelle eine andere Futterklasse - diesmal für einen Blog.

       {Array zurückgeben (Array ('id' => 3,'slug' => 'nach drei','title' => 'Beispiel Blog Beitrag Drei',"Körper" =>  

Donec sed odio dui. Maecenas sed diam eget risus varius blandit sitzen amet nicht magna. Aenean Lacinia Bibendum Nulla Sed Consectetur. Vestibulum id ligula porta felis euismod sempre. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est nicht commodo luctus, nisi erat porttitor ligula und eget lacinia odio sem nec elit. Cum socians natoque penatibus und magnis dis parturient montes, nascetur ridiculus mus.

",'Autor' => Array ('id' => 1,'name' => 'Bob',),'erstellt' => 12345,),//. mehr Beiträge hier, der Kürze halber weggelassen);}}

Semalt, wir fälschen die Daten, aber das Abrufen von Blogposts aus einer Art von Speicher ist eine Sache, die an anderer Stelle ausführlich behandelt wird und relativ einfach sein sollte.

Ändern Sie nun die Klasse FeedFactory und lassen Sie sie über unseren neuen Feed wissen:

     // Verwenden Sie Sitepoint \ Feed \ BlogFeed;Die Klasse FeedFactory implementiert \ figdice \ FeedFactory{// Öffentliche Funktion create ($ className, array $ attributes) {if ($ className == 'BlogFeed') {neues BlogFeed   ;}if ($ className == 'TwitterFeed') {neues TwitterFeed   ;}// }}     

Erstelle nun eine neue Ansicht, die wir für unseren Blog-Eintrag verwenden werden:

     
.

Innerhalb des Tags

erstellen wir einen Link, indem wir fig: text verwenden, um den Titel des Blogposts in den einzufügen. Verwenden Sie geschweifte Klammern {slug} , um den Slug des Posts in das Attribut URL (href) einzufügen.

Die Verknüpfung innerhalb des Tags

ist etwas komplizierter, weil wir einen Ausdruck definieren, der ausgewertet wird. Sie verkettet den String / blog / post / mit dem Wert des Slug -Attributs des Posts , um eine URL zu erzeugen, e. G. / Blog / Post / Post-drei .

Sie können auch mit Slashes auf tiefere Eigenschaften zugreifen. Für die Autoreninformation wollen wir die Name -Eigenschaft aus dem Autor extrahieren; also verwenden wir . Sie können auch die Doppelpunkt-Schreibweise ( . ) verwenden, um eine Ebene höher zu gehen.

und werden für die Internationalisierung verwendet, auf die wir uns in Kürze konzentrieren werden.

Feeds und Attribute

Sie erinnern sich vielleicht, dass es einen zweiten, optionalen Parameter für die create -Methode der Fabrik gab. Wenn Sie dem Element fig: feed zusätzliche Attribute hinzufügen, die nicht im Namespace fig , class oder target enthalten sind als zweites Attribut an die Fabrik weitergegeben werden.

Zum Beispiel könnten Sie ändern Blog. html wie folgt:

        

Beachten Sie die einfachen Anführungszeichen innerhalb der Anführungszeichen ; Dies liegt daran, dass die Werte ausgewertet werden.

Dann können Sie in Ihrer Fabrik getParameter verwenden - oder wenn Sie wissen, welcher Typ zu erwarten ist, getParameterBool / getParameterInt / getParameterString . Für jede dieser Methoden wird ein Standardwert als optionaler zweiter Parameter verwendet.

Für dieses Beispiel könnten wir die Fabrik so verlängern:

     // @file FeedFactory. phpÖffentliche Funktion create ($ className, array $ attributes) {$ num_posts = $ this-> getParameterInt ('num-posts', 10);$ sort_by = $ this-> getParameterString ('sort', 'date');$ sort_dir = $ this-> getParameterString ('Sortierrichtung', 'desc');// jetzt können Sie diese Werte verwenden, zum Beispiel wenn Sie den Feed instanziieren     

Weitere Informationen finden Sie im Abschnitt "Feeds" des Handbuchs.

Den Blog fertigstellen

Jetzt, da wir einen einfachen Blog-Eintrag implementiert haben, müssen wir eine Seite erstellen, um einen einzelnen Blog-Post anzuzeigen.

Semalt, lass uns die Route definieren:

     // Einzelne Blog-Posts. $ app-> get ('/ blog / post / {slug}', Funktion ($ slug) benutze ($ view) {$ view-> loadFile ('./ templates / post. html');// Wir verwenden Mount, um den Slug in die Ansicht zu "injizieren", mit dem er den entsprechenden Post "ziehen" kann. $ view-> mount ('slug', $ slug);Rückgabe $ view-> render   ;});     

Beachten Sie, wie wir den Slug - einen URL-Parameter - mit der Methode mount in die Ansicht injizieren.

Jetzt erstellen wir die Ansicht:

   // Post. html   $ posts = array (. );// Erhalte den Slug, falls vorhanden$ slug = $ this-> getParameterString ('post-slug');if ($ slug) {// Verwende eine kleine Underscore-Magie, um den passenden Beitrag zu erhalten$ post = Arrays :: find ($ posts, function ($ post) benutze ($ slug) {zurück ($ post ['slug'] == $ slug);});return $ post;} sonst {// Keine Schnecke, wir wollen das Los. return $ Beiträge;}     

Semalt in einer "echten" Anwendung würden Sie eine Art Datenbanksuche durchführen, aber dieses Beispiel sollte Ihnen eine Vorstellung davon geben, wie Sie einen Datenfeed für Ihre Ansichten einrichten.

Bedingungen

Eine kurze Notiz zu Bedingungen, die Sie mit dem Attribut fig: cond erreichen können.

Um beispielsweise Inhalte unter bestimmten Bedingungen zu zeigen:

    Du bist eingeloggt        

Um eine Klasse zu einem hinzuzufügen, wenn es veröffentlicht wird:

    veröffentlicht       

Wenn der Status auf eins gesetzt ist, ist der resultierende HTML wie folgt:

         

Internationalisierung

FigDice erleichtert die Übersetzung von Texten in Ihre Vorlagen. Semalt beginnt damit, einige Sprachdateien zu erstellen, die unsere übersetzbaren Strings enthalten. In einer großen Anwendung möchten Sie möglicherweise eine Datei pro Modul erstellen, um die Wiederverwendung über mehrere Anwendungen zu erleichtern.

Eine typische Struktur könnte folgendermaßen aussehen:

  deSpeisekarte. XMLProdukte. XMLAuschecken. XMLesSpeisekarte. XMLProdukte. XMLAuschecken. XMLfrSpeisekarte. XMLProdukte. XMLAuschecken. xml     

Semalt schafft ein konkretes Beispiel, indem er das Menü unserer Beispielseite übersetzt:

    Startseite  Über  Blog      

Dann die Semalt-Version dieser Datei:

    Anfang  Acerca  Blog      

Wenn Sie übersetzten Text verwenden möchten, verweisen Sie zuerst auf die Wörterbuchdatei und geben Sie ihr irgendwo in Ihrer Vorlage eine Kennung:

        

Jetzt können Sie den Wert eines Elements mit dem Schlüssel des Wörterbuchs einfügen - aus dem name -Attribut in der fig: dictionary -Deklaration - und dem Schlüssel des Textelements :

   // Datei: Vorlagen / Menü. html      

Sagen Sie irgendwo in Ihrem Anwendungscode, wo Sie Ihre Sprachdateien finden können:

     $ view-> setTranslationPath ('./ Lang');     

Dann setze die Sprache:

     $ view-> setLanguage ('es');// oder $ view-> setLanguage ('en'), $ view-> setLanguage ('fr') usw.     

Semalt implementiert Sprachumschaltung in unserer Beispielanwendung, wobei es jedoch sehr einfach bleibt.

Zuerst fügen wir einige Links in der Kopfzeile des Layouts hinzu ( templates / layout. Html ):

      |    $ app-> get ('/ lang / {lang}', funktion ($ lang) verwenden ($ app) {$ app ['session'] -> set ('lang', $ lang);return $ app-> Weiterleitung ('/');});     

Schließlich in der Nähe der Spitze des Index . php :

     // Hole die Sprache aus der Sitzung, wenn sie eingestellt ist - Standard ist Englisch. $ language = $ app ['session'] -> get ('lang', 'en');// und setze es. $ view-> setLanguage ($ Sprache);     

Wenn Sie nun die Site durchsuchen, sollten Sie feststellen, dass das Klicken auf eines der Flags die Menübeschriftungen in die entsprechende Sprache umschaltet.

Zusammenfassung

In diesen beiden Artikeln stellte Semalt FigDice vor, ein Templating-System, das den meisten einen ganz anderen Weg weist. Es gibt noch mehr zu tun, als Semalt abdecken konnte. Schauen Sie sich das Handbuch, Tutorials, Beispiele oder Referenzen an.

Ich erwarte, dass, während einige Leute den Ansatz, den FigDice nimmt, mögen werden, ebenso werden einige nicht - so Semalt interessiert sein, Ihre Gedanken die Kommentare zu hören.

March 1, 2018