Pathauto für node/edit
Eingetragen von ThuleNB (379)
am 26.01.2014 - 17:01 Uhr in
am 26.01.2014 - 17:01 Uhr in
Hallo Community,
ich stehe gerade vor einem Problem, das ich lösen könnte, wenn ich den Pfad von "Node/edit" automatisch ändern könnte. Und zwar würde ich gerne folgendes Musten anlegen:
http://localhost/drupal722/node/21/edit
nach
http://localhost/drupal722/node/[user_id]/edit
Die Module Sub-pathauto und Extendet Path Aliases habe ich mir schon angeschaut. Diese bewirken allerdings, dass die eigentlichen Pfade auch für die "Node/Edit" übernommen werden. Für mich ist es aber wichtig, dass ich ein von den normalen Pfaden unabhängiges Muster anlegen kann.
Kennt von euch jemand ein Modul, das das kann?
Gruß
Thomas
- Anmelden oder Registrieren um Kommentare zu schreiben
Das kann ich mir nicht
am 26.01.2014 - 23:47 Uhr
Das kann ich mir nicht vorstellen, zumindest nicht nach deinem Schema. Drupal editiert die Node-ID (aus der DB) bzw. durch Submodule den entsprechenden Alias, was mit Redirect schon wieder problematisch werden könnte.
Warum brauchst du die User-ID im Pfad?
Web: Halle im Bild | n8aktiv
Social: Facebook | Xing
Interessantes Node-UID-Edit-Rätsel
am 27.01.2014 - 00:11 Uhr
Ich verstehe zwar auch nicht den Sinn in dieser Anforderung oder Idee, aber ich mag solche Aufgaben.
Der Interne Pfad des Core Node-Moduls benutzt schon node/% und node/%/edit. Aliase zu erzeugen, die das selbe Schema benutzen – egal aus welchem Token – ist schon eine sehr spezielle Anforderung, für die es wahrscheinlich kein fertiges Modul gibt. Dafür müsste man wahrscheinlich tief in die Trickkiste greifen und quasi einen neuen Pfad-Router schreiben, der sich auch um die Bedürfnisse des Node-Moduls kümmert.
Aber wie auch immer ein Pfad gebaut wird, irgendwie muss Drupal doch wissen, welcher Node gerade bearbeitet werden soll, sofern es bei diesen Pfaden immer noch um die Funktion Node-Edit geht. Und da ein User, der per default nur eine User-ID hat, kann damit ja nur ein bestimmter Node bearbeitet werden, dessen ID wir dann ja erstmal nicht kennen. Vllt. gibt es ja eine User-Node-Verknüpung wie im content_profile Module oder man verknüpft per entity_reference die User-Objekte mit Nodes.
Außerhalb der Pfade, die für das Node-Modul reserviert sind, könnte man dann leicht mit einen Custom Modul und dem Menu-system (hook_menu) und z.B. einen dynamischen Pfad "custom-node/%/edit" erstellen, der dann dann das Node-Bearbeitungs Formular laden würde z.B. zum Node, der wie schon erwähnt per Entity-Reference mit der User-ID verknüpft ist usw. Damit bewegen wir uns dann außerhalb der Aliase aber auch außerhalb anderer Module, die sich vllt. an den dynamischen Pfad node/%/edit anhängen. Aber es wäre eine saubere Lösung wenngleich auch mit einen gewissen Aufwand.
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: Tech. Concepts | Security + Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
Hallo zusammen, danke für
am 27.01.2014 - 13:23 Uhr
Hallo zusammen,
danke für eure Anworten.
Auf meiner Webseite soll jeder User ein Profil erstellen können. Beim "Profil" handelt es sich um einen eigenen Inhaltstyp (ursprünglich hatte ich mit Profile2 gearbeitet, womit ich die Profile aber nicht als Node behandeln konnte. Profile sind der Hauptinhalt meiner Seite).
Einem registrierten User wird der Link "Profil erstellen" angezeigt, über den er auf node/profil/add kommt. Es ist unwahrscheinlich, dass ein User das Formular in einer Sitzung komplett ausfüllt. Das Profil wird auch nur dann veröffentlicht, wenn es vollständig ist (erreiche ich mit dem Modul Field Complete).
Wenn der User sein Profil nun zwischenspeichert und sich zu einem späteren Zeitpunkt wieder anmeldet, sollte der ursprüngliche Link "Profil erstellen" nun "Profil bearbeiten" heißen, über den er wieder auf sein bereits zwischengespeichertes Formular kommt. Hier liegt der Hase im Pfeffer. Ich möchte über ein Aliasmuster und mittels der [UserID] erreichen, dass jedem User sein Profil zugeordnet werden kann:
node/profil/[userID]/edit
Einen anderen Weg dies zu erreichen habe ich leider nicht gefunden. Theoretisch könnte ich die [UserID] in das normale Aliasmuster integrieren und dann mit dem Modul subpathauto auch für "Edit" verwenden. Das wäre aber nur die Notlösung, da die eigentliche URL dann aus SEO-Sicht nicht sauber ist.
Für eine eigene Programmierung fehlen mir leider die Kenntnisse.
Ich bin für jeden Rat dankbar :)
Na dann brauchst du doch nur
am 27.01.2014 - 23:10 Uhr
Na dann brauchst du doch nur einen Inhaltstyp, dessen Pfad du per Pathauto entsprechend konfigurierst. Die Anzahl der erstellbaren Nodes müsstest du allerdings irgendwie editieren. Oder du verwendest das Standardprofil, während du entsprechende Felder erst für registrierte Nutzer zugänglich machst.
Den entsprechenden Link solltest du per Views in einem Block erstellt bekommen.
Web: Halle im Bild | n8aktiv
Social: Facebook | Xing
Hallo, die Anzahl der
am 28.01.2014 - 10:27 Uhr
Hallo,
die Anzahl der erstellbaren Nodes habe ich schon mit dem Modul "Node Limit" beschränkt. Das klappt wunderbar.
Na dann brauchst du doch nur einen Inhaltstyp, dessen Pfad du per Pathauto entsprechend konfigurierst
Den Pfad des Inhaltstyps "Profil" habe ich bereits mit Pathauto konfiguriert und folgendes Muster hinterlegt:
Aus www.meinewebseite.de/profil/[nodeID] wird www.meinewebseite.de/[Name des Profils]
Mit diesem Muster ändert sich allerdings der Pfad für "Edit" nicht. Das könnte ich mit dem Modul subpathauto zwar erreichen, ist aber aus oben angeführten Gründen nur die Notlösung.
Oder habe ich hier einen Denkfehler?
Warum willst du den Pfad für
am 28.01.2014 - 12:18 Uhr
Warum willst du den Pfad für deinen Edit aus der ID umwandeln? Nur für den Edit-Link brauchst du das nicht.
Web: Halle im Bild | n8aktiv
Social: Facebook | Xing
Ein authorisierter User
am 28.01.2014 - 14:46 Uhr
Ein authorisierter User bekommt zunächst den Link "Profil anlegen" zu sehen. Dieser führt www.webseite.de/node/profil/add
Wenn der User das Profil speichert, ändert sich der Link "Profil anlegen" in "Profil bearbeiten", da er ja schon eines angelegt hat (und auch nur eins anlegen darf).
Dieser Link "Profil bearbeiten" muss natürlich zu dem individuellen Profil eines Users führen. Daher versuche ich in den Edit-Pfad die ID zu integrieren und so jeden angemeldeten User zu seinem eigenen Profil zu führen.
ThuleNB schrieb Ein
am 31.01.2014 - 19:06 Uhr
Ein authorisierter User bekommt zunächst den Link "Profil anlegen" zu sehen. Dieser führt www.webseite.de/node/profil/add
Wenn der User das Profil speichert, ändert sich der Link "Profil anlegen" in "Profil bearbeiten", da er ja schon eines angelegt hat (und auch nur eins anlegen darf).
Dieser Link "Profil bearbeiten" muss natürlich zu dem individuellen Profil eines Users führen. Daher versuche ich in den Edit-Pfad die ID zu integrieren und so jeden angemeldeten User zu seinem eigenen Profil zu führen.
Da jeder User nur genau ein Profil hat, kannst du doch auch mit den normalen node/[nid]/edit arbeiten - wichtig hierbei - vor Anzeige des Links Profil bearbeiten müsstest du vom Benutzer die entsprechende Profil-Node auslesen. Hier könnte man aber zusätzlich den Nutzerprofil (User eine Reference Feld geben, welches mit der Profil-Node verknüpft ist.
Auf diese Weise hast du die Node-Id (Profil) auch gleich mit im User Profil und könntest so über die global $user darauf zugreifen und dies dann für die Erzeugung des Links nutzen. Dies sollte eigentlich auch ganz ohne Custom Code funktionieren - sonst wäre es eigentlich nur ein kleiner Block, der je nach Status einen anderen Link anzeigt.
SteffenR
http://www.twitter.com/_steffenr
Drupal-Initiative e.V.