Node erstellen, wenn vorhanden, editieren
am 20.03.2012 - 19:37 Uhr in
Hallo!
Wieder eine Frage für die Drupal-Profis. :)
Ich habe einen Inhaltstypen "Inhaltstyp1", der pro Benutzer nur einmal angelegt werden darf / soll.
Diese Einschränkung lässt sich m.E. über das Modul Node Limit erreichen.
Nun habe ich in meinem Benutzermenü einen Eintrag "Inhaltstyp1 erstellen", der auf die Seite zum Erstellen verweist. Am liebsten wäre mir nun, dass sich der Link verändert in "Inhaltstyp1 ändern", sobald der Benutzer einen Inhaltstyp1 angelegt hat. Dieser Link sollte idealerweise auch gleich auf die Bearbeitenseite des angelegten Nodes verweisen. Die Nodes sind alle von der URL her gleich aufgebaut: Inhaltstyp1/[user_id]
Kann man das irgendwie bewerkstelligen?
Alternativlösung wäre folgendermaßen:
Beim Registrieren wird automatisch ein Inhaltstyp1 für den Nutzer angelegt. Das Menü verweit dann dynamisch auf den Inhaltstypen des jeweiligen Benutzers. Geht das umzusetzen?
Vielen Dank schonmal!
Viele Grüße
Heiko
- Anmelden oder Registrieren um Kommentare zu schreiben
Rules oder Profile2
am 21.03.2012 - 08:36 Uhr
Hi,
mir scheint, die beste Lösung dafür wäre Profile2
http://drupal.org/project/profile2
Falls dir das nicht zusagt, was mit Rules bauen.
Viel Erfolg!
Achim
Zitat:Beim Registrieren wird
am 21.03.2012 - 09:00 Uhr
Beim Registrieren wird automatisch ein Inhaltstyp1 für den Nutzer angelegt. Das Menü verweit dann dynamisch auf den Inhaltstypen des jeweiligen Benutzers. Geht das umzusetzen?
Ja, das geht z. B. mit Content Profile und Me Aliases.
Ansonsten könntest du auch über Theme-Funktionen den Link überschreiben, wenn bereits ein Node von dem Typ + User erstellt wurde.
Edit:
@Achim
Profile2 in Drupal 6 wird erstmal ziemlich schwierig ;-) Das gibt's nur für D7
subpath_alias und
am 21.03.2012 - 15:37 Uhr
subpath_alias und url_alter
Damit kann man wunderbar den edit Link auf den entsprechenden Alias setzen. Dazu haben wir dann auch noch menu_token mit eingebunden, womit man dann dynamische Links in den Menüs verwenden kann. Sehr vorteilhaft, wenn man direkt zur Bearbeitenseite eines ganz bestimmten Nodes spingen will und dabei /node/%/edit nicht in der URL anzeigen lassen möchte.
Damit haben wir das gelöst und sind super zufrieden.
Edit: Dein Node kannst du mit Rules erstellen lassen. Wir haben es bei uns so, dass unsere User automatisch bei Login eine Galerie bekommen, sofern keine vorhanden ist. Den Link "Galerie erstellen" haben wir entfernt und wenn keiner weiß, wie man der Link aufgebaut ist, gibt es auch keine weiteren Galerien oder eben andere Inhalte. Mittels der oberen Module kannst du dir dann auch einen dynamischen Link basteln, welcher im Menü erscheint (sofern erwünscht) und direkt auf die Bearbeiten-Seite des Nodes verweist.
Gruß,
Kirreth
Hallo! Danke für die vielen
am 21.03.2012 - 19:54 Uhr
Hallo!
Danke für die vielen Antworten.
Die Lösung mit ContentProfile ging doch nicht, da er dann ja standardmäßig den Inhaltstypen für jeden Benutzer erstellt und wir doch nur gerne Inhaltstypen mit Inhalt haben würden.
Daher habe ich es jetzt folgendermaßen gelöst:
<?php
$items['myedit/Inhaltstyp1'] = array(
'title' => 'Inhaltstyp1 ändern',
'page callback' => 'mymodule_page_editInhaltstyp1',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK
);
function mymodule_page_editInhaltstyp1() {
global $user;
$query = "SELECT n.nid AS nid FROM {node} n WHERE n.type = 'Inhaltstyp1' AND n.uid = %d ";
//if (module_exists('translation') && translation_supported_type($node->type))
//{
//$query .= "AND n.language = '%s'";
//}
$row = db_fetch_object(db_result(db_query($query, $user->uid)));
if($result != NULL)
{
drupal_goto('node/' . $result . '/edit');
}
else drupal_goto('node/add/Inhaltstyp1');
}
?>
Gruß
Heiko