Ergebnis 1 bis 8 von 8

Thema: Alias für alle Datensätze vergeben

  1. #1
    Contao-Nutzer
    Registriert seit
    07.09.2011.
    Beiträge
    8

    Standard Alias für alle Datensätze vergeben

    Hallo liebe Entwickler,

    für ein aktuelles Projekt und meine ersten Versuche mit Contao benötige ich mehrere Module. Grundprinzip ist dabei des Öfteren, dass jeder Datensatz auch ein entsprechendes Detail-View besitzt.

    Was muss ich alles beachten bzw. wo eintragen, um für jeden dieser Datensätze auch einen entsprechenden sauberen URL-Alias zu erhalten? Bei Typo3 war es mit realurl soweit ich mich entsinne recht einfach, in der config lediglich anzugeben, dass beim Detailview die ?id=123 dann entsprechend durch einen Spaltennamen ersetzt wird - so einfach ist es hier leider nicht, oder?

    Gibt es eine einfachere Variante, als:
    - für alle Tabellen im DCA ein Feld für den alias anlegen
    - irgendwie Callbacks schreiben, damit der alias automatisch aus einer (oder mehreren) Spalte erzeugt wird
    - alle bereits bestehenden Datensätze aufzurufen und wieder zu speichern, um letztlich den Callback anzuwenden

    Vielen Dank

  2. #2
    Contao-Nutzer Avatar von Tholke
    Registriert seit
    25.06.2009.
    Ort
    Schweiz
    Beiträge
    26

    Standard

    Hmm möglich das ich mich irre, aber grundsätzlich bezieht sich die URL ja immer auf eine Seite.

    Ich denke, du willst das ganz ähnlich machen wie es das Nachrichtenmodul bietet?
    Eine Seite mit einem FE Modul "Nachrichtenliste" (Übersicht über die Datensätze) und auf der zweiten Seite das FE Modul "Nachrichtenleser" (Detailansicht).

    Dabei wird der entsprechende Nachrichtenalias in der URL angezeigt. Dementsprechend würde ich mal im Modul "news" (./system/modules/news) die Tabellenkonfiguration und die entsprechenden DCA's anschauen. Mit etwas suchen solltest du alles finden

    Hoffe es hat etwas geholfen

    Grüsse Tholke

  3. #3
    Buchautor 'Websites erstellen mit Contao' Avatar von pmmueller
    Registriert seit
    19.06.2009.
    Ort
    Groningen (NL)
    Beiträge
    1.523

    Standard

    Zitat Zitat von hts Beitrag anzeigen
    Grundprinzip ist dabei des Öfteren, dass jeder Datensatz auch ein entsprechendes Detail-View besitzt.
    Ich habe selbst noch nicht damit gearbeitet, aber es klingt irgendwie nach [catalog].

    Contao selbst ist ja vom Prinzip her eher seitenbasiert. Du könntest auf einer Seite die Teaser sammeln und der Artikel selbst wäre dann der Detailview. Aber ohne etwas konkretere Angaben was du da an Inhalten in deinen "Datensätzen" hast, ist das schwer zu sagen

  4. #4
    Contao-Nutzer
    Registriert seit
    07.09.2011.
    Beiträge
    8

    Standard

    Zitat Zitat von Tholke Beitrag anzeigen
    Ich denke, du willst das ganz ähnlich machen wie es das Nachrichtenmodul bietet?
    Eine Seite mit einem FE Modul "Nachrichtenliste" (Übersicht über die Datensätze) und auf der zweiten Seite das FE Modul "Nachrichtenleser" (Detailansicht).

    Dabei wird der entsprechende Nachrichtenalias in der URL angezeigt. Dementsprechend würde ich mal im Modul "news" (./system/modules/news) die Tabellenkonfiguration und die entsprechenden DCA's anschauen. Mit etwas suchen solltest du alles finden
    Ja, in die Richtung geht das. Hatte nur gehofft, dass jemand da die entsprechenden Schnipsel im Kopf hat, die ich benötige.

    Um das hier auch gleich für eventuell andere Suchende mitzunehmen hätte ich für das DCA dementsprechend:
    PHP-Code:
    'eval' => array('rgxp'=>'alnum''unique'=>true'spaceToUnderscore'=>true'maxlength'=>128'tl_class'=>'w50'),
    'save_callback' => array ( array('tl_news''generateAlias') ), 
    Die generateAlias() wäre dann aus den News zu übernehmen.

    Für den Link finde ich gerade folgenden Aufruf:
    PHP-Code:
    ampersand($this->generateFrontendUrl($objPage->row(), '/items/' . ((!$GLOBALS['TL_CONFIG']['disableAlias'] && strlen($objArticle->alias)) ? $objArticle->alias $objArticle->id))); 
    Da muss ich dann wohl auch in jedes Modul eine entsprechende Methode schreiben ...


    Zur anderen Variante:
    Zitat Zitat von pmmueller Beitrag anzeigen
    Ich habe selbst noch nicht damit gearbeitet, aber es klingt irgendwie nach [catalog].

    [...] Aber ohne etwas konkretere Angaben was du da an Inhalten in deinen "Datensätzen" hast, ist das schwer zu sagen
    Über catalog bin ich auch schon gestolpert und hatte den Eindruck, dass es bei den Frontendausgaben dann nicht ganz das liefert, was ich benötige. Vielleicht meldet sich ja ein catalog-erfahrener Entwickler zu meinen Datensätzen zu Wort:

    Ergebnisverwaltung für Volksläufe:
    Tabellen:
    - result (entsprechendes Ergebnis)
    - runner (Name, Geschlecht, Geburtsjahr)
    - event (Name, Ort)
    Views:
    - Ergebnisliste nach Datum
    - DetailView: runner
    - DetailView: event
    - Bestenliste

    Gerade bei der Bestenliste hätte ich so nicht gewusst, wie das mit catalog umzusetzen wäre. Da bräuchte ich dann nach Altersklasse/Geschlecht gruppiert die besten 10 Ergebnisse für eine Liste von vorgegebenen Distanzen.


    Danke für eure Mühen bisher

  5. #5
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    Ich denke dass dir das hier weiterhelfen wird:

    http://de.contaowiki.org/Kategorie:T...on-Entwicklung

    Insbesondere das folgende Kapitel:
    http://de.contaowiki.org/TEE-10_Frontend_Feinschliff

  6. #6
    Contao-Nutzer
    Registriert seit
    07.09.2011.
    Beiträge
    8

    Standard

    Danke für die Links. Bei dem Tagebuch war ich auch - der DCA-Konfiguration kann ich davon schön nehmen. Mit den Links hadere ich aber ein wenig - mit
    Code:
    {{env::page_alias}}
    kann ich den urlcleaner ja erst recht nicht nutzen.

    Habt ihr ein einfaches Code-Beispiel, um in der Frontend-Modul-Klasse einen Link zur eigenen Seite mit Parametern zu erstellen? Bei addToUrl() schlägt der urlcleaner leider auch fehl, sodass ich also generateFrontendUrl() benötige. Bisher komme ich in der Klasse aber nicht an den Alias der aktuellen Seite.

  7. #7
    Contao-Nutzer Avatar von Tholke
    Registriert seit
    25.06.2009.
    Ort
    Schweiz
    Beiträge
    26

    Standard

    Hi hts

    Ich bin mir jetzt nicht ganz sicher, ob ich die Frage richtig verstanden habe, aber ein Ansatz wäre, dass du beim einfügen des Links den Alias aus der DB ausliest. Die benötigte ID solltest du zur Verfügung haben. Danach einfach kurz die URL drum basteln.

    Wie gesagt bin mir nicht sicher, ob ich die Frage richtig verstanden habe. Weiter denke ich das es sichelrich einen eleganteren Weg gibt, den ich jedoch nicht kenne.

    Lg Tholke

  8. #8
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.622
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich verwende oft ein "gefälschtes" Alias zusammengesetzt aus der ID und dem Titel.

    Ausgabe:
    PHP-Code:
    $strAlias $objRecord->id '-' standardize($objRecord->title); 
    Erkennung:
    PHP-Code:
    list($intId) = explode('-'$this->Input->get('items'), 2); 
    Wobei "items" natürlich deinem URL-Parameter entspricht, und $objRecord halt deinen Datensatz haben muss.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •