Umbraco 7 Grundkurs

Ausfiltern navigierbarer Seitentypen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Für die Navigation muss eine Erweiterung geschrieben werden, mit der aus dem Dokumentbaum ausschließlich die navigierbaren Dokumenttypen ausgefiltert werden können.

Transkript

Diese Klasse wird jetzt in meine DLL kompiliert, eine rekursive Navigation, die uns außer der Homepage den gesamten Dokumentbaum anzeigt. Das ist schon ein guter erster Schritt, aber eigentlich wollen wir hier nur Dinge sehen, die navigierbare Dokumenttypen sind. Das heißt also, die Aufgabe ist, in dieser Navigation die angezeigten Dokumente so auszufiltern, dass wir praktisch nur die erhalten, deren Elterndokumenttyp dieser navigierbare Dokumenttyp ist. Wenn wir jetzt zurückkehren in unser Visual Studio, legen wir zu diesem Zweck eine neue Klasse an, die uns die navigierbaren Kinder von so einem Dokument liefert. So, diese Klasse lege ich jetzt hier an, die will ich "ContentExtensions" nennen. Es ist eine rein statische Klasse, das heißt, sie kann nur statische Methoden enthalten. Dann schreibe ich eine statische Methode, nämlich letztendlich soll sie mir ein "IEnumerable" zurückliefern, auf "IPublishedContent". Das ist jetzt hier noch nicht bekannt, deshalb lege ich gerade den NameSpace an. Die Methode können wir nennen: "NavigableChildren" und es solle eine Methode vom Typ "IPublishedContent" werden. Also nehme ich diesen "this"-Operator hier und gebe ein Parameter an. Im Grunde genommen muss ich also von diesem Dokument die Kinder zurückgeben, und zwar eben um bestimmte Dinge gefiltert. Diese Filterung wäre im Prinzip so etwas, wie eine Methode "IsNavigable()". Das will heißen, dass ich hier gleich eine erneute Methode schreibe, auch eine statische Methode, aber die gibt mir jetzt kein "IEnumerable" zurück, sondern einen "bool"-Wert. Die Methode heißt "Is Navigable" und sie nimmt ein "IPublishedContent" als Parameter. Wunderbar. So, jetzt haben wir also sozusagen von "NavigableChildren" die Problematik verschoben auf "IsNavigable". Gut, jetzt brauchen wir den Dokumenttyp von unserem "IPublishedContent". Wenn ich jetzt hier einmal hineinschaue, stelle ich fest, alles, was ich bekomme, ist entweder der Alias des Dokumenttyps oder die ID. Damit kann ich im Augenblick nicht so viel anfangen und ich brauche jetzt irgendetwas im Umbraco-System, das mir eben einen tatsächlichen Dokumenttyp zurückgibt. An der Stelle kommen die "UmbracoServices" ins Spiel. Das ist sehr wichtig, da Sie viel mit den Services zu tun haben, wenn Sie mit Umbraco programmieren. Der Grund ist, weil diese Services praktisch jedes Objekt das es in Umbraco gibt, manipulieren können.. Abfragen und manipulieren. So, jetzt müssen wir uns erst einmal so einen Service beschaffen, der Dokumenttypen abfragen kann. So, die Services bekommen wir aus dem "UmbracoContext". Da brauchen wir hier den NameSpace, der liegt in "umbraco.web". Da hole ich mir jetzt den "UmbracoContext.Current" und davon die "Umbraco.Application". Die hat die Services. In diesen Services bekommen wir das Objekt unserer Begierde, nämlich den "ContentTypeService". So, unser "ContentTypeService" ist jetzt da, jetzt können wir mit IntelliSense schauen, was der so alles kann. Ich tippe hier mal gleich die Buchstaben "ge" ein, weil ich schauen will, ob es "Get"-Methoden gibt. Da sehe ich schon etwas, was wir ganz gut gebrauchen können. Wir haben dieses "GetContentType", in dem man einen "GUID"-, "Integer"- oder "Alias"-String" übergeben kann. Und wir wissen ja, wir haben hier diese "DocumentTypeId", die wir schon abgefragt haben und können sie hier als Parameter übergeben. Jetzt können wir sagen, unser "DocumentType" ist also das, was hier zurückkommt. Im übrigen kommt da ein "IContentType". So und jetzt brauchen wir ja noch den anderen Dokumenttyp. Das ist der, den wir hier sehen, nämlich "navigierbare Dokumenttypen". Den brauchen wir und dann müssen wir irgendwie abfragen, ob der gegenwärtige Dokumenttyp in dieser Hierarchie von Dokumenttypen darunter liegt. Also holen wir uns erst einmal diesen Dokumenttyp "navDocTypes". Das können wir sehr leicht mit dem Alias machen. Das ist der Alias – ah Moment, der Alias ist ohne Leerzeichen. So und dann haben wir das. Okay und jetzt hat jeder ein Dokumenttyp, der in einen Baum eingebettet ist und auch einen "Path" hat. Also genau wie Dokumente, haben auch Dokumenttypen einen "Path" und das ist eine String-Repräsentation der IDs, die sozusagen den Weg im Baum nach ganz oben bis zur Wurzel kennzeichnet. In diesem Path muss jetzt irgendwo die ID von diesem "navigierbare Dokumenttypen" liegen. Jetzt splitte ich diesen String in ein Array und kann dann sagen, wenn dieses Array diese ID enthält, und zwar eben auch in einen String konvertiert, wenn sie also hier in diesem Array ist, dann ist mein Dokumenttyp "navigable". Super, das ist alles, ich reiche ein Dokument ein und erhalte am Schluss die Information, ob der Dokumenttyp ein navigierbarer Dokumenttyp ist oder nicht Diese generische Art und Weise, wie ich das programmiert habe, erlaubt es mir, nachträglich weitere Dokumenttypen einzufügen, die dann alle automatisch navigierbar sind. Alles, was jetzt zu tun bleibt ist, dass ich in meiner Navigation statt "Children" "NavigableChildren" schreibe. Dazu brauche ich natürlich den NameSpace, in dem das Ganze definiert worden ist, den kopiere ich mir in die Zwischenablage, "using", diesen NameSpace, und dann sollte der Compiler aufhören zu meckern und dann können wir an das Testen schreiten. Kehren wir zurück zu unserer "Training"-Seite. Okay, was ich vergessen habe, ist zu kompilieren. Also kompiliere ich noch schnell. Ist ja klar, ich habe eine neue Klasse angelegt, diese Klasse wird in meine DLL hineinkompiliert und wenn ich jetzt die ganze Sache neu starte, dann sollte unsere Navigation erscheinen. Voilà, hier sind wir. So können wir also unsere Navigation filtern und bei der Gelegenheit habe ich einfach mal gezeigt, wie man in Umbraco mit den Services arbeitet und Objekte in diesen Services abfragt.

Umbraco 7 Grundkurs

Lernen Sie das mächtige Content Management System zu bedienen und steigen Sie in die Entwicklung dafür ein.

3 Std. 16 min (32 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Umbraco Umbraco 7
.NET .NET 4.6
Exklusiv für Abo-Kunden
Erscheinungsdatum:07.09.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!