Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Nächste SlideShare
node.js
node.js
Wird geladen in …3
×

Hier ansehen

1 von 64 Anzeige

Weitere Verwandte Inhalte

Andere mochten auch (19)

Anzeige

Ähnlich wie Pimcore (20)

Aktuellste (20)

Anzeige

Pimcore

  1. 1. @timglabisch works @anymotion
  2. 2. Documente Assets Objekte
  3. 3. WARUM NUTZT ANYMOTION PIMCORE? Ermöglicht Entwickler eine Oberfläche für Redakteure zu schaffen. Erfindet das Rad nicht neu. Aufsatz auf das Zend Framework. Extrem flexibel. Nutze was du möchtest, nicht mehr. System gibt nichts Vor. Viele Freiheiten. Man findet alles schnell. (Halbwegs) Saubere Struktur. Hohe Wiedervendbarkeit. Don‘t repeat yourself.
  4. 4. Was ist nicht so toll? Zend_Navigation Zend_Form Testabdeckung
  5. 5. Demo, Userinterface
  6. 6. ZF > MVC PIMCORE > MVC
  7. 7. Website_Controller_Action Pimcore_Controller_Action Zend_Controller_Action
  8. 8. Pimcore_Mail Zend_Mail
  9. 9. Pimcore Manual Zend Manual Extjs Manual
  10. 10. M V C
  11. 11. VIEW
  12. 12. CONTROLLER
  13. 13. ORDNERSTRUKTUR Änderungen „erlaubt“ /website/*
  14. 14. ORDNERSTRUKTUR Config /website/var/config/setting.xml
  15. 15. ORDNERSTRUKTUR Schreibrechte /website/var/*
  16. 16. ORDNERSTRUKTUR Controller /website/controllers/*Controller.php
  17. 17. ORDNERSTRUKTUR Views /website/views/scripts/[CONTROLLER]/[ACTION].php
  18. 18. ORDNERSTRUKTUR Statische Dateien /website/static/*
  19. 19. ORDNERSTRUKTUR Services /website/lib/Website/* Beispiele: /website/lib/Website/Form/Contact.php /website/lib/Apache/Solr/*
  20. 20. PSR-0
  21. 21. Website_Controller_Action LIB/website/Controller/Action
  22. 22. TASK Ausgabe des Textes foo auf der Startseite
  23. 23. TASK Ausgabe des aktuellen Timestamps auf der Startseite
  24. 24. TASK Ausgabe des Textes foo im View
  25. 25. TASK Ausgabe des aktuellen Timestamps im View
  26. 26. TASK Berechnung des aktuellen Timestamps im Controller und Übergabe an den View.
  27. 27. TASK Pflegbarer Text auf der Startseite
  28. 28. DOCUMENT TAGS
  29. 29. <?=$this->image(“NAME“)?>
  30. 30. <?=$this->image(“NAME“)?>
  31. 31. <?=$this->image(“NAME“)?>
  32. 32. <?=$this->image(“NAME“)?>
  33. 33. <?=$this->image(“NAME“)?>
  34. 34. <?=$this->image(“NAME“)?>
  35. 35. <?=$this->image(..., ARGS)?>
  36. 36. $this->editmode
  37. 37. $this->template(filename)
  38. 38. Loops
  39. 39. Loops
  40. 40. Menu? foreach(Document::getByPath(‘/‘)->getChilds() as $documents) ; // ….
  41. 41. Zend Navigation? Pimcore Navigation!
  42. 42. Objekte
  43. 43. Objekte auslesen
  44. 44. Properties
  45. 45. thx, fragen? @timglabisch
  46. 46. Areas
  47. 47. area.xml
  48. 48. view.php Html x)
  49. 49. edit.php
  50. 50. action.php
  51. 51. Website Config
  52. 52. Translations <?=$this->translate("imprint")?>
  53. 53. Statische Routen
  54. 54. Pimunit /** * @group db */ public function testSetUpDatabaseByDocument() { $this->assertEquals($this->countDocuments(), 1); $document = new Document_Page(); $document->setKey('test'); $document->setParentId(1); $document->setPublished(1); $document->save(); unset($document); $this->assertEquals($this->countDocuments(), 2); }

Hinweis der Redaktion

  • Custom Navigation teilweise sehr umständlichSchreibt Ihr tests?testframework vorhanden - Pimunit
  • Pimcore nutzt MVC überallPimcore = ModulWebsite = ModulProgrammierung gut vom Core kopierbar
  • Default Controller -&gt; Default ActionAction = FunktionViele Controller besser als Gott Controller.Beispiel:FormControllerForumController...Thin Controllers!
  • Bitte keine Änderungen im Pimcore Ordner machenEs gibt immer alternativen, beispielsweise kann durch den Include Path etwas überschrieben werden.Im Normalfall nicht nötig!
  • Bitte keine Änderungen im Pimcore Ordner machenEs gibt immer alternativen, beispielsweise kann durch den Include Path etwas überschrieben werden.Im Normalfall nicht nötig!
  • Bsp generierung Captcha.
  • Alle Controller
  • css, js, images, ....
  • Haltet die Controller kleinBaut ServicesDurch Autoloading hier ablegen!
  • View Helper -&gt; Zend View HelperImmer: $this-&gt;NAMEPimcore Tags.Formulare, ...Eigene, (etwas komplexer)Einfachste weg sowas einzubinden!?
  • PHP, tu was du willst!
  • Elementname, eindeutig!
  • $this ist ein Pimcore_View (Zend_View)
  • Gibt eine Instanz von Pimcore_Document_Tag zurück
  • Instanz muss nicht ausgegeben werden.Aufruf von InstanzfunktionenBeispiel: getSrc
  • Pimcore spezifischPimcore DokumentationOder Extjs spezifisch
  • True oder False jenachdem man sich im editmode befindetStylesheets einbindenElemente umsortieren
  • True oder False jenachdem man sich im editmode befindetStylesheets einbindenElemente umsortieren
  • Controller und Action EinstellbarModul ignorierenTemplate ignorieren
  • Predefined PagesÜbers Kontextmenu
  • Loop multiple element TagsZiffer an die ZahlBlock in die Datenbank&lt;?phpwhile($this-&gt;block(&quot;contentblock&quot;)-&gt;loop()) { ?&gt;     &lt;h2&gt;&lt;?php echo $this-&gt;input(&quot;subline&quot;); ?&gt;&lt;/h2&gt;     &lt;?php echo $this-&gt;wysiwyg(&quot;content&quot;); ?&gt; &lt;?php } ?&gt;
  • Alternative zu den SelectboxenSind quasi „Plugins“Müssen aktiviert werden über da backendFieses div zwischen den Einträgen&lt;?php echo $this-&gt;areablock(&apos;some_area_block&apos;,array( &quot;allowed&quot; =&gt; array( &quot;example&quot;, )));?&gt;
  • Object_XXXX();Parent_idsetKey()-&gt;save();$entries = newObject_Myclassname_List();$entries -&gt;setOffset($offset);$entries -&gt;setLimit($perPage);$entries -&gt;setOrderKey(&quot;date&quot;);$entries -&gt;setOrder(&quot;desc&quot;);$entries -&gt;setCondition(&quot;name LIKE &quot; . $entries-&gt;quote(&quot;%bernie%&quot;)); // makesurethatyouquote variables in conditions!foreach ($entriesas $entry) { $entry-&gt;getName(); }
  • Alternative zu den SelectboxenSind quasi „Plugins“Müssen aktiviert werden über da backendFieses div zwischen den Einträgen&lt;?php echo $this-&gt;areablock(&apos;some_area_block&apos;,array( &quot;allowed&quot; =&gt; array( &quot;example&quot;, )));?&gt;
  • Liegt in website/var/areas Achtung Versionskontrolle
  • Metadaten für jede AreaName wird in der Liste angezeigtVersion ist interessant für das UpdateBeispiele aus Pimcore DokumentationExample Package in der Dokumentation
  • optionalAlternative für viewNur im editmodeKannte ich so nichtNutzt $this-&gt;editmode
  • Optional„controller“Wenn logikAction ‚action‘ wird aufgerufenNamenkonvention MyBrickName ersetztenBrickname
  • Facebook API Key
  • http://www.pimcore.org/wiki/display/PIMCORE/Custom+Routes+%28Static+Routes%29/some-example/some~random~text_45/some-example/This+is+some+random+text_998_category_776Im View: &lt;?= $this-&gt;url(array(         &quot;text&quot; =&gt; &quot;This is some random text&quot;,         &quot;id&quot; =&gt; 998,         &quot;categoryId&quot; =&gt; 776,         &quot;getExample&quot; =&gt; &quot;some value&quot;     ),     &quot;example&quot; ) ?&gt;Warum statische Routen?Quizfrage:Wo findet man $this-&gt;Url?/var/www/atraveo/pimcore/lib/Pimcore/View/Helper

×