Ergebnis 1 bis 27 von 27

Thema: .html an Alias anhängen

  1. #1
    Contao-Fan
    Registriert seit
    13.08.2010.
    Beiträge
    304

    Standard .html an Alias anhängen

    Hallo,

    ich nutze das Modul CatalogEdit hier, um Besuchern die Möglichkeit zu bieten, sich in ein Händlerverzeichnis einzutragen. Das Feld "Firmenname" wird zur Generierung des Alias verwendet. Nun würde ich gerne an das Alias automatisch ein .html anhängen. Ich vermute, dass ich die Änderung in der ModuleCatalogEdit.php im Bereich der Zeilen 140/150 vornehmen muss. Aber ich weiß leider nicht genau wo.

    Kann mir da jemand weiterhelfen? Besten Dank!
    Viele Grüße, TN

  2. #2
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Hi,
    besser wäre es diese Änderungen im Template bzw. per Hook vorzunehmen.
    Was soll denn am Ende genau bei rauskommen?

    Grüße Tim
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  3. #3
    Contao-Fan
    Registriert seit
    13.08.2010.
    Beiträge
    304

    Standard

    Hi Tim,

    die URL zu den Detailseiten lautet momentan (mit FolderURL und urlcleaner) http://www.domain.de/unterverzeichni...erbeartikel-ek. Ziel soll eine URL mit abschließendem .html sein, also http://www.domain.de/unterverzeichni...rtikel-ek.html
    Viele Grüße, TN

  4. #4
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Verstehe,
    das solltest du an 3 Stellen manipulieren können:
    1. Contao weit, über den generateFrontendUrl Hook. Dort nach generierten URLs suchen, die nicht mit .html enden. Sollte auch den Catalog beinflussen können.
    2. Catalog weit, über den catalogFrontendInsert Hook im CatalogEdit Modul. Dort den Anchor-hrefs das fehlende .html mitgeben. Die geänderten Daten werden an das Template weitergereicht
    3. Im Template selbst. Dort sämtliche fehlenden .html in den anchors ergänzen.

    Ich würde wohl bei 3. anfangen zu arbeiten (das Template ist variabler). Die Anpassungen sind zu gering um dafür einen inject zu setzen, aber das kann jeder für sich entscheiden

    Grüße Tim
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  5. #5
    Contao-Fan
    Registriert seit
    13.08.2010.
    Beiträge
    304

    Standard

    Hallo Tim,

    könntest du deinen 3. Lösungsvorschlag ein wenig erörtern (welche Datei du meinst und wie die Anpassung aussehen müsste)? Ich stehe da gerade ein wenig auf dem Schlauch und wüsste nicht, wie ich das über die catalog_edit.tpl beeinflussen könnte

    Danke!
    Viele Grüße, TN

  6. #6
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Ich hab mir mal ne kleine Testumgebung gebaut.
    Mal nur so am Rande gefragt, dein alias Feld ist auch als Alias-Feld in deinen Katalog-Einstellungen eingestellt, ja? Und das alias-Feld selbst ist mit dem Firmennamen Feld verknüpft. Weil eigentlich sollte es auch ohne Anpassungen out-of-the-box funktionieren.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  7. #7
    Contao-Fan
    Registriert seit
    13.08.2010.
    Beiträge
    304

    Standard

    Ja richtig:
    mKJWf.png
    Viele Grüße, TN

  8. #8
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von NoName26 Beitrag anzeigen
    Ja richtig:
    mKJWf.png
    Das ist gut so.

    In den Einstellungen vom Katalog selbst noch unter dem Punkt "Alias-Feld" dieses Feld auswählen. Dann ist das Setup richtig und eigentlich sollten dann auch die Alias richtig gesetz werden mit .html
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  9. #9
    Contao-Fan
    Registriert seit
    13.08.2010.
    Beiträge
    304

    Standard

    Ah, okay, da hatte ich noch "Alias" ausgewählt.

    Allerdings konnte ich den Fehler damit nicht beheben.
    URL vorher: .../haendler/musterfirma-gmbh
    URL jetzt: .../haendler/Musterfirma GmbH
    Viele Grüße, TN

  10. #10
    Contao-Fan
    Registriert seit
    13.08.2010.
    Beiträge
    304

    Standard

    Ich nutze FolderURL, d.h. wenn ich neue Seiten anlege, dann vergebe ich händisch die Endung. Je nach Bedarf / oder .html:

    http://www.domain.com/werbetaschen/h...r-und-partner/
    http://www.domain.com/werbetaschen/h...eueintrag.html

    Vielleicht hängt es damit zusammen?
    Viele Grüße, TN

  11. #11
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    FolderURL sollte lediglich einen Pfad bauen über den alias. Dort wird nie ein .html händisch angehängt.
    Der Catalog baut sich dynamische Pfade via des eingestellten alias Feldes und setzt ebenfalls automatisch ein .html dahinter.
    Den alias Umschreiben braucht man eigentlich nur, wenn man Abweichungen von diesem normalen Prozess haben will. Z.b. wenn der Alias sich auch zwei oder mehr Feldern zusammensetzen soll.

    Da du das alles eigentlich nicht brauchst, sollte es ohne weiteres so funktionieren. Bei mir ist das jedenfalls so - auch mit der Katalog-Bearbeitung
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  12. #12
    Contao-Fan
    Registriert seit
    13.08.2010.
    Beiträge
    304

    Standard

    Unter System > Einstellungen > Frontend-Einstellungen > URL-Suffix kann man ja vorgeben, welches Suffix Contao anhängen soll. Da wir aus SEO-Gründen ohne index-Dateien arbeiten (stattdessen wird auf das Verzeichnis gelinkt), ist dieses Feld bei uns leer. Wir vergeben das URL-Suffix händisch für jede Seite.

    Die .htaccess ist ebenfalls entsprechend angepasst:
    Code:
      ##
      # By default, Contao adds ".html" to the generated URLs to simulate static
      # HTML documents. If you change the URL suffix in the back end settings, make
      # sure to change it here accordingly!
      #
      #   RewriteRule .*\.html$ index.php [L]   # URL suffix .html
          RewriteRule .* index.php [L]          # No URL suffix
      #   RewriteRule .*\.txt$ index.php [L]    # URL suffix .txt
      #
      # If you are using mod_cache, it is recommended to use the RewriteRule below,
      # which adds the query string to the internal URL:
      # 
      #   RewriteRule (.*\.html)$ index.php/$1 [L]
      #
      # Note that not all environments support mod_rewrite and mod_cache!
      ##
    Folglich scheint es daran zu liegen, dass dem Alias im Catalog kein Alias hinzugefügt wird.

    Daher wäre eine etwas genauere Beschreibung deines Vorschlags Nr. 3 wahrscheinlich unsere Lösung
    Viele Grüße, TN

  13. #13
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Da wir aus SEO-Gründen ohne index-Dateien arbeiten (stattdessen wird auf das Verzeichnis gelinkt), ist dieses Feld bei uns leer. Wir vergeben das URL-Suffix händisch für jede Seite.
    Ihr macht Euch das Leben damit doch unnötig schwer damit
    Ohne index.php zuarbeiten ist richtig, aber dafür gibt es mod_rewrite. Dieses kürzt den index.php block aus deiner URL und sämtliche Contao- Alias können ohne Probleme mit .html ergänzt werden. Genau das zeigt der parseFrontendUrl Hook. Dieser wird beim umschreiben sämtlicher Alias aufgerufen und das suffix deiner Wahl angehängt z.b. '.html', oder aber auch '.xml', oder auch gar nichts.

    Ich mach ja auch nichts anderes. Meine Seitenstruktur nutzt auch folderURL und die Alias sehen z.B. so aus: kataloge/produkte/items/produkt_1.html

    kursiv: dynamisch vom catalog erzeugt. davor einfach der alias aus der Seitenstruktur

    Das funktioniert perfekt.

    --
    Ihr müsst also zusätzlich zum alias das .html mit in der Datenbank speichern, da es nicht dynmaisch ergänzt wird. Da kommen wir mit Weg Nr. 3 nicht weiter, sondern brauchen bereits zwei Hooks.
    1. catalogFrontendInsert - Hook // wird aufgerufen wenn ein neuer Eintrag im FE angelegt wird
    2. catalogFrontendUpdate - Hook // wird aufgerufen wenn ein bestehender Eintrag geändert wird.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  14. #14
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Da stimmt noch so einiges nicht in deinem Katalog:

    Die URLs, die erstellt wurden scheinen nicht durch ein alias-Feld gelaufen zu sein. : haendler-und-partner/haendler//items/ABC Werbeartikel e.K.
    der Doppelslash ist sicher nur ein Vertipper, aber die Leerzeichen sind eins-zu-eins das Namens-Feld kompiert.

    Sind das alte Einträge?
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  15. #15
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Lange Rede...

    Ich glaube du brauchst den geänderten Link Href eh nur im Katalog-Liste Modul.
    Da reicht sowas hier:

    PHP-Code:
    <?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?>
    <div class="field <?php echo $field?>">
        <div class="label"><?php echo $data['label']; ?></div>
        <div class="value"><?php 
        
    // check if value is a link
        
    if(strpos($data['value'], 'href='))
        {
            
    preg_match('/href=\"(.*?)\"/'$data['value'], $result);
            
    $strHref $result[1];
            
    $data['value'] = str_replace($strHref$strHref.='.html'$data['value']);
        }
        echo 
    $data['value']; 
        
    ?></div>
    </div>
    <?php endif; ?>
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  16. #16
    Contao-Fan
    Registriert seit
    13.08.2010.
    Beiträge
    304

    Standard

    Hallo Tim,

    zu den Leerzeichen siehe meinen Post #9 weiter oben. Habe die Änderung nun wieder rückgängig gemacht, sodass Leerzeichen gegen Bindestriche ersetzt werden.

    Der Doppelslash war ein Tippfehler, der sich eben eingeschlichen hat, als ich die URLs umschreiben musste, um den Catalog ohne FolderURL zu testen.

    Frage zu deinem Code: Für welche Datei ist er bestimmt? Hätte an die catalog_*.tpl (* in meinem Fall "simple")
    gedacht, allerdings sieht die bei mit so aus:
    Code:
    <?php if (count($this->entries)): ?>
    <?php foreach ($this->entries as $entry): ?>
    <?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?>
    <p class="name"><?php echo $entry[data]['company']['value']; ?></p>
    <p class="address"><?php echo $entry[data]['zip']['value']; ?> <?php echo $entry[data]['city']['value']; ?>, <?php echo $entry[data]['country']['value']; ?></p>
    <?php endif; ?>
    <?php if ($entry['showLink'] && $entry['link']):  ?>
    <div class="link"><?php echo $entry['link']; ?></div>
    <?php endif; ?>
    <?php if ($entry['linkEdit']): ?>
    <div class="linkEdit"><?php echo $entry['linkEdit']; ?></div>
    <?php endif; ?>
    <?php endforeach; ?>
    <?php else: ?>
    <?php if ($this->condition): ?>
    <div class="condition"><?php echo $this->condition; ?></div>
    <?php else: ?>
    <p class="info"><?php echo specialchars($GLOBALS['TL_LANG']['MSC']['noEntries']); ?></p>
    <?php endif; ?>
    <?php endif; ?>
    Viele Grüße, TN

  17. #17
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    ja, hab auch einfach die _simple benutzt.

    Dein template ist ja bereits etwas individualisiert.

    Schau dir noch mal das normale _simple an, dann siehst du, dass ich nur die foreach - Schleife (die du auch hast) für die Ausgabe der einzelnen Felder geändert habe.

    --

    du holst ja nur noch zwei Felder in die Ausgabe: (wäre auch ohne template-Anpassung über die Katalog-Liste Einstellungen möglich )
    <p class="name"><?php echo $entry[data]['company']['value']; ?></p>
    <p class="address"><?php echo $entry[data]['zip']['value']; ?> <?php echo $entry[data]['city']['value']; ?>, <?php echo $entry[data]['country']['value']; ?></p>

    Dann halt dort den Wert im ['value'] entsprechend meines templates ändern lassen.
    Geändert von Tim G (06.08.2011 um 13:48 Uhr)
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  18. #18
    Contao-Fan
    Registriert seit
    13.08.2010.
    Beiträge
    304

    Standard

    Hallo Tim,

    Schau dir noch mal das normale _simple an
    Ach ja richtig, ich habe das Original ja völlig verändert

    wäre auch ohne template-Anpassung über die Katalog-Liste Einstellungen möglich
    Leider aber nicht die Aneinanderreihung mit Komma...

    Dein Code ändert aber ja nur die URL im Listenmodul. Das hilft mir ja nicht viel weiter, weil in der DB das Alias ohne .html steht. Und stünde es dort mit .html, wäre die Änderung mit deinem Code wiederrum nicht mehr nötig, oder habe ich da einen Denkfehler?
    Viele Grüße, TN

  19. #19
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Sollte ohne Datenbank reichen.
    Du willst ja nur auf die Einträge verlinken, die zur Zeit ohne .html reinkommen (was auch gut so ist)


    ---
    - Sent from my iPhone using Tapatalk
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  20. #20
    Contao-Fan
    Registriert seit
    13.08.2010.
    Beiträge
    304

    Standard

    Ich habe deinen Code in die catalog_simple.tpl eingesetzt, leider ist das eingetreten, was ich vermutet hatte: Der Eintrag wird nicht gefunden (weil er ja in der DB auch ein anderes Alias hat).

    Siehe http://bit.ly/oFRu75
    Viele Grüße, TN

  21. #21
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Der Eintrag wird nicht gefunden (weil er ja in der DB auch ein anderes Alias hat).
    Na, stimmt nicht.
    Der Link wird im Template zwar aus den Daten in der Datenbank generiert, allerdings bei jedem Aufruf aufs neue. Also würde auch ein event. in der Datenbank geänderter Alias zur richtigen Seite führen. ps. der Code hängt nur ein .html dran

    Daher:
    ist 'haendler' als URL-Schlüsselwort eingetragen? Weil, wenn nicht, denkt folderURL es handelt sich um einen Pfad und nicht um eine Variable für den catalog und er läuft auf eine leere Seite und der Katalogleser hat nichts zu fressen
    Geändert von Tim G (06.08.2011 um 16:06 Uhr)
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  22. #22
    Contao-Fan
    Registriert seit
    13.08.2010.
    Beiträge
    304

    Standard

    Wenn ich 'haendler' zu den URL-Schlüsselwörtern hinzufüge, dann wird beim Klick auf einen Link in der Katalogliste zwar die URL mit .html aufgerufen, angezeigt wird jedoch das Listenmodul. Ich hab 'haendler' erstmal in den Schlüsselwörtern stehen lassen, du kannst es also gerne mal testen...

    'haendler' ist übrigens die Detailseite, kein URL-Fragment des Katalogs wie z.B. item, zip oder country...
    Viele Grüße, TN

  23. #23
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    'haendler' ist übrigens die Detailseite,
    Ok, dann muss es doch raus, ausser du willst auch nach händlern filtern

    Eigentlich ist dein Katalog doch absolut basic. Ich glaube da wurde schon bissel viel rumgefuddelt. Alles auf Anfang und dann einfach mit meinem Code-Block allen links zur Readerseite ein .html anhängen sollte klappen.

    In meiner Testumgebung hab ich jetzt überall zweimal .html.html dran. also sollte bei dir dann nur .html ergänz werden.

    Oder contao normal arbeiten lassen und mit mod_rewrite das index.php Fragment killen lassen und ganz normal .html ergänzen lassen.

    ps. er baut auch /items/ nicht ein - was für den Katalogleser ist.
    Irgendwie stimmt da alles nicht.


    Event. muss du in dem alias deiner Detailseite zusätzlich das /items ergänzen, da ihr ja alles andere durch mod_rewrite killt. Vielleicht schneidet das auch diesen dynamischen Eintrag weg, der aber ausschlaggebend ist für den KatalogLeser
    Geändert von Tim G (06.08.2011 um 16:28 Uhr)
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  24. #24
    Contao-Fan
    Registriert seit
    13.08.2010.
    Beiträge
    304

    Standard

    ps. er baut auch /items/ nicht ein - was für den Katalogleser ist.
    Das Items-Fragment wird durch die Extension urlcleaner herausgeschnitten.

    Alles auf Anfang und dann einfach mit meinem Code-Block allen links zur Readerseite ein .html anhängen sollte klappen.
    Alles auf Anfang habe ich heute schon gemacht, es hat sich aber nichts geändert.

    Vielleicht kannst du mir mal auf die Sprünge helfen, wo mein Denkfehler bzgl. deines Codes ist: Die Einträge werden unter einem Alias in der DB gespeichert. Wenn ich einen Eintrag aufrufe, ist das Alias Bestandteil der URL. Das ist doch im Prinzip das gleiche wie bei den Seiten des CMS: Eine Seite bekommt ein Alias, das später auch Bestandteil der URL ist.
    Wenn ich nun aber eine Seite mit dem Alias 'haendler-und-partner' anlege, dann erreiche ich die Seite nur unter 'haendler-und-partner'. Wenn ich im Browser 'haendler-und-partner.html' eingebe, erhalte ich "Page not found". Wieso ist das denn bei den Items des Catalogs anders? Für mich scheint das Momentan recht logisch, dass - wenn ich an den Link nur ein .html hänge - kein Eintrag gefunden wird?!

    Lässt sich das .html nicht in der ModuleCatalogEdit.php im Bereich der Zeilen 140/150 einfügen?
    Code:
    	public function generateAlias()
    	{
    		// without an aliasCol there is no need for generating an alias
    		// and without an title, we simply can not generate an alias
    		if (!(strlen($this->objCatalogType->aliasField) && strlen($this->objCatalogType->titleField)))
    		{
    			return;
    		}
    
    		// Preferring the fields aliasTitle over the catalog titleField
    		$aliasTitle = $this->objCatalogType->titleField;
    		$objCatalogAliasField = $this->Database->prepare("SELECT aliasTitle FROM tl_catalog_fields WHERE tl_catalog_fields.pid=? AND tl_catalog_fields.colName=?")
    												->execute($this->catalog,$this->objCatalogType->aliasField);
    		if ($objCatalogAliasField->numRows && strlen($objCatalogAliasField->aliasTitle))
    			$aliasTitle = $objCatalogAliasField->aliasTitle;
    
    		$aliasCol = $this->objCatalogType->aliasField;
    		$strAlias = $this->objActiveRecord->$aliasCol;
    		// Generate alias if there is none
    		$autoAlias = false;
    		if (!strlen($strAlias))
    		{
    			$autoAlias = true;
    			$strAlias = standardize($this->objActiveRecord->$aliasTitle);
    		}
    		// Check whether the catalog alias exists
    		$objAlias = $this->Database->prepare("SELECT id FROM ".$this->strTable." WHERE ".$this->objCatalogType->aliasField.'=?'.($this->objActiveRecord->id?' AND id!=?':''))
    								   ->execute($strAlias, $this->objActiveRecord->id);
    		if ($objAlias->numRows && !$autoAlias)
    		{
    			//throw new Exception(sprintf($GLOBALS['TL_LANG']['ERR']['aliasExists'], $arrData[$aliasCol]));
    			// TODO: we can not throw an exception here as it would kill the FE => not an option.
    			//       we can not reject saving as we might already have saved it (coming from insert).
    			//       So I simply work as if it was autogenerated. Find a better solution for this! (c.schiffler 2009-09-10)
    			$autoAlias = true;
    		}
    
    		// Add ID to alias if it exists.
    		if ($objAlias->numRows && $autoAlias)
    		{
    			$strAlias .= '-' . $id;
    		}
    		$this->objActiveRecord->$aliasCol = $strAlias;
    	}
    Viele Grüße, TN

  25. #25
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Das Items-Fragment wird durch die Extension urlcleaner herausgeschnitten.
    Ok, damit hab ich noch nicht rumexperimentiert. Würde ich auch immer erst machen, wenn alles läuft.

    Die Einträge werden unter einem Alias in der DB gespeichert. Wenn ich einen Eintrag aufrufe, ist das Alias Bestandteil der URL. Das ist doch im Prinzip das gleiche wie bei den Seiten des CMS: Eine Seite bekommt ein Alias, das später auch Bestandteil der URL ist.
    Ja, das ist schon so. Der alias ist das, was die ID numerisch ist.
    Der alias wird auch in der DB gespeichert, aber ohne suffix und "Fremdzeichen", die zu Problemen führen können.

    Im Falle des Katalogs wird überprüft ob ein alias generiert werden soll und aus welchem Feld. Sowohl im BE-Edit, als auch im FE-Edit und dieser wird entsprechend der Regeln aus dem Namensfeld (oder ein anderes Feld) gebildet.
    -> aber immer ohne Suffix, da das System dieses ergänzen soll. Kann ja sein, dass jemand .xml Seiten braucht, oder .php, oder .htm

    Der Katalog hält sich daran und ergänzt beim Aufbau der Felder und der Anchors das Suffix entsprechend der Contao-Einstellungen.

    Bei Euch ist dieses Feld nun leer. Daher musst du selbst dafür sorgen, dass das Suffix ergänzt wird. Aber wir wollen das Suffix eigentlich nicht in der Datenbank haben, bin mir auch nicht sicher ob Punkte da zu Fehlern führen könnten.

    Du hast nun ein Katalog-BearbeitungsModul und ein KatalogListe Modul und den Leser.

    Fangen wir bei dem Lister an:
    Die dort eingestellte Weiterleistungsseite ist die Seite deren alias mit /items/ALIAS-DES-EINTRAGS.html generiert wird.
    Im Template der KatalogListe werden die Links entsprechend des Alias des Eintrags gebildet. Bei Euch ohne .html -> dort setzt der Code an und ergänzt das .html
    Was jetzt wohl fehlerhaft ist, dass er das /items/ nicht bekommt. Setz mal das beim urlcleaner raus.
    Die links sollten bei euch daher so aussehen: /KATALOG_READER_SEITE/items/ALIAS -> .html wird ergänzt.

    Das BearbeitungsModul muss eigentlich gar nichts machen.
    Das Feld alias gar nicht erst anzeigen, sollte automatisch ergänzt werden aus dem Namen. Bzw. maximal das Feld für "admins" bereitstellen.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  26. #26
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Gestern dran abgestorben:
    Wenn du nicht noch mal mit deinen SEO-Leuten sprechen willst, dann kannst du natürlich auch direkt die ModuleCatalogEdit.php ändern. Ist dann aber nicht updatesicher.
    Aber per hooks kannst du auch die Änderungen in die Datenbank schreiben.

    Wie gesagt, im Grunde geht das mit den folgenden Hooks:
    catalogFrontendInsert
    catalogFrontendUpdate

    oder

    parseCatalog (würde auch gehen, da werden die Einträge verarbeitet. Dort könnte man auch das .html anhängen, aber für Datenbank-Arbeiten eignen sich die anderen besser)

    Ein möglicher Aufruf würde so aussehen:


    PHP-Code:
    public function catalogFrontendInsertHook($arrData$objModule$objTable)
        {
            
    $aliasField 'alias';
            
    $aliasRefField 'name'// das Feld um den Alias zu bauen
            // Replace only if alias was not set manually
            
    if(strlen($arrData[$aliasField]))
                return 
    $arrData;
            
            
    $newAlias strtolower($arrData[$aliasRefField] .= '.html');
            
    // update database
            
    $objFields $this->Database->prepare("UPDATE $catalog SET $aliasField=? WHERE id=?")
                ->
    execute($newAlias$arrData['id']);
            
            return 
    $arrData;
        } 

    Viel Erfolg damit
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  27. #27
    Contao-Fan
    Registriert seit
    13.08.2010.
    Beiträge
    304

    Standard

    Hi Tim,

    vielen Dank für deine Antwort und sorry, dass ich so lange nicht darauf reagiert habe. Ich habe den Hook umgesetzt, habe nach dem Update von 2.9.5 auf 2.10 aber noch Probleme mit dem CatalogEdit. Sobald die behoben sind kann ich testen, ob´s funktioniert.

    Nochmals danke!
    Viele Grüße, TN

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
  •