@timglabisch
works @anymotion
Documente   Assets   Objekte
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.
Was ist nicht so toll?

Zend_Navigation

Zend_Form

Testabdeckung
Demo,


Userinterface
ZF > MVC
PIMCORE > MVC
Website_Controller_Action



      Pimcore_Controller_Action



                Zend_Controller_Action
Pimcore_Mail


               Zend_Mail
Pimcore Manual



                 Zend Manual
                  Extjs Manual
M   V   C
VIEW
CONTROLLER
ORDNERSTRUKTUR




Änderungen „erlaubt“
/website/*
ORDNERSTRUKTUR




Config
/website/var/config/setting.xml
ORDNERSTRUKTUR




Schreibrechte
/website/var/*
ORDNERSTRUKTUR
Controller
/website/controllers/*Controller.php
ORDNERSTRUKTUR




Views
/website/views/scripts/[CONTROLLER]/[ACTION].php
ORDNERSTRUKTUR




     Statische Dateien
     /website/static/*
ORDNERSTRUKTUR




     Services
     /website/lib/Website/*

     Beispiele:
     /website/lib/Website/Form/Contact.php
     /website/lib/Apache/Solr/*
PSR-0
Website_Controller_Action
LIB/website/Controller/Action
TASK

  Ausgabe des Textes foo
  auf der Startseite
TASK

 Ausgabe des aktuellen Timestamps
 auf der Startseite
TASK
 Ausgabe des Textes foo im View
TASK
Ausgabe des aktuellen Timestamps
im View
TASK

Berechnung des aktuellen Timestamps im
  Controller und Übergabe an den View.
TASK

Pflegbarer Text auf der Startseite
DOCUMENT TAGS
<?=$this->image(“NAME“)?>
<?=$this->image(“NAME“)?>
<?=$this->image(“NAME“)?>
<?=$this->image(“NAME“)?>
<?=$this->image(“NAME“)?>
<?=$this->image(“NAME“)?>
<?=$this->image(..., ARGS)?>
$this->editmode
$this->template(filename)
Loops
Loops
Menu?

foreach(Document::getByPath(‘/‘)->getChilds() as $documents)
  ; // ….
Zend Navigation?

   Pimcore Navigation!
Objekte
Objekte auslesen
Properties
thx, fragen?


  @timglabisch
Areas
area.xml
view.php

    Html x)
edit.php
action.php
Website Config
Translations
          <?=$this->translate("imprint")?>
Statische Routen
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);
}

Pimcore

Hinweis der Redaktion

  • #8 Custom Navigation teilweise sehr umständlichSchreibt Ihr tests?testframework vorhanden - Pimunit
  • #12 Pimcore nutzt MVC überallPimcore = ModulWebsite = ModulProgrammierung gut vom Core kopierbar
  • #17 Default Controller -&gt; Default ActionAction = FunktionViele Controller besser als Gott Controller.Beispiel:FormControllerForumController...Thin Controllers!
  • #19 Bitte keine Änderungen im Pimcore Ordner machenEs gibt immer alternativen, beispielsweise kann durch den Include Path etwas überschrieben werden.Im Normalfall nicht nötig!
  • #20 Bitte keine Änderungen im Pimcore Ordner machenEs gibt immer alternativen, beispielsweise kann durch den Include Path etwas überschrieben werden.Im Normalfall nicht nötig!
  • #21 Bsp generierung Captcha.
  • #22 Alle Controller
  • #23 css, js, images, ....
  • #24 Haltet die Controller kleinBaut ServicesDurch Autoloading hier ablegen!
  • #34 View Helper -&gt; Zend View HelperImmer: $this-&gt;NAMEPimcore Tags.Formulare, ...Eigene, (etwas komplexer)Einfachste weg sowas einzubinden!?
  • #36 PHP, tu was du willst!
  • #37 Elementname, eindeutig!
  • #38 $this ist ein Pimcore_View (Zend_View)
  • #39 Gibt eine Instanz von Pimcore_Document_Tag zurück
  • #40 Instanz muss nicht ausgegeben werden.Aufruf von InstanzfunktionenBeispiel: getSrc
  • #41 Pimcore spezifischPimcore DokumentationOder Extjs spezifisch
  • #42 True oder False jenachdem man sich im editmode befindetStylesheets einbindenElemente umsortieren
  • #43 True oder False jenachdem man sich im editmode befindetStylesheets einbindenElemente umsortieren
  • #44 Controller und Action EinstellbarModul ignorierenTemplate ignorieren
  • #45 Predefined PagesÜbers Kontextmenu
  • #46 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;
  • #47 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;
  • #52 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(); }
  • #55 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;
  • #56 Liegt in website/var/areas Achtung Versionskontrolle
  • #57 Metadaten für jede AreaName wird in der Liste angezeigtVersion ist interessant für das UpdateBeispiele aus Pimcore DokumentationExample Package in der Dokumentation
  • #58 optionalAlternative für viewNur im editmodeKannte ich so nichtNutzt $this-&gt;editmode
  • #59 Optional„controller“Wenn logikAction ‚action‘ wird aufgerufenNamenkonvention MyBrickName ersetztenBrickname
  • #60 Facebook API Key
  • #61 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