Empfehlungen: Erweiterte Suche

Suchmaschinen-Optimierung: SpokenURL generieren?

Fragen zur Konzeptionierung und womit man am besten anfäng? Hier rein...

Suchmaschinen-Optimierung: SpokenURL generieren?

Beitragvon Jörg » Mo 4. Mai 2009, 17:19

Hallo CakePHP-Gemeinde,
ich bin gerade dabei mich in CakePHP einzuarbeiten und stehe nun vor der Frage wie man Suchmaschinen optimierte Links in CakePHP effektiv und nach dem vorhandenen Möglichkeiten in CakePHP erzeugt.

Meine ansätzenden Gedanken sind folgende:
    In der DB-Table erzeuge ich ein Feld namens "rewritecond" (Varchar 255)
    Beim SQL-INSERT generiere ich mir aus einem angegebenen Title per "slug()" meine Spoken-Url

Wie gehe ich nun vor?
    Standardgemäß liest CakePHP die "id" per WHERE-Clause aus der DB-Table aus und erzeugt somit ein Array mit den Inhalten.
    Wie kann ich nun CakePHP die Anweisung geben, dass "rewritecond"-Zelle angesprochen wird?

Da ich noch wenig Erfahrung mit Models, Controller, Views, Router habe, wäre ich über sehr ausführliche Ansätze dankbar.

Gruß
Jörg
Jörg
 
Beiträge: 130
Registriert: Di 13. Mai 2008, 13:45
Wohnort: Bremen
CakePHP-Version: 2.0.3, 1.3.x
OS: Win7/Ubuntu

Re: Suchmaschinen-Optimierung: SpokenURL generieren?

Beitragvon havanna » Do 7. Mai 2009, 21:43

Hallo Jörg,
ich kann dir jetzt leider auch keine Lösung servieren, aber vielleicht ein paar Gedankenansätze bzw. Ideen in welche Richtung du recherchieren könntest:
Zum einen habe ich diesen Link dazu gefunden: http://cakery.de/category/behavior/sexy-urls-mit-cakephp-oder-das-sluggable-behavior/
Zum anderen solltest du mal in Richtung Routing schauen. Da kann man vieles in CakePHP mit erschlagen.

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Suchmaschinen-Optimierung: SpokenURL generieren?

Beitragvon Jörg » Fr 8. Mai 2009, 07:48

Hallo Thomas,
vielen Dank für die kurze Info zu den Spoken-Urls in CakePHP.

Leider ist der Tipp auf der Internetseite nur ein "Workaround", denn was passiert wenn es doppelte Titelvergaben in der Datenbank gibt?
Ich vermute mal es ist am einfachsten wenn ich mir die Titel als "Slugged" in eine separate Tabellenzelle schreibe und diese dann auslese.

Kannst du mir vllt. einen Tipp oder ein paar Infos geben, wie ich soetwas im Router abfrage/verarbeite/definiere?
Konnte da bisher nichts brauchbares finden.


Vielen Dank im Voraus.

Gruß
Jörg
Jörg
 
Beiträge: 130
Registriert: Di 13. Mai 2008, 13:45
Wohnort: Bremen
CakePHP-Version: 2.0.3, 1.3.x
OS: Win7/Ubuntu

Re: Suchmaschinen-Optimierung: SpokenURL generieren?

Beitragvon havanna » Mo 11. Mai 2009, 11:52

Hallo Jörg,

entschuldige, aber ich habe gerade recht wenig Zeit Beispiele aufzubauen.
Sag' mir doch mal, wie deine URLs / Links derzeit aussehen und wie du sie dir Suchmaschinenfreundlich vorstellst.

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Suchmaschinen-Optimierung: SpokenURL generieren?

Beitragvon Jörg » Mo 11. Mai 2009, 19:23

Hallo Thomas,
ich bin nun in der Theorie ein wenig weiter ...

Habe es nun geschafft meine "SpokenUrl" zu genieren, jedoch möchte ich die "id" aus der URL entfernen.
Wenn ich die ID beim Link generieren mittels des HTML-Helpers weg lasse, dann steht in der URL auch nur meine gewünschte Url.
Nun muss ich aber im Hintegrund irgendwie an meine ID kommen, um weitere Datensätze im Controller auszulesen.

Wie gehe ich das nun an?
Wenn ich ":id" aus meinem "Router::connect" herausnehme, dann wird meine Url seltsam generiert.

So sollte es sein:
/cake_1_2/lens/ich-bin-ein-titel

Derzeit:
/cake_1_2/lens/ich-bin-ein-titel-62

Falsch, wenn ich "id" im Router entfernen
/cake_1_2/lens/view/62/slug:ich-bin-ein-titel

Meine Router-Konfigurationen:
Code: Alles auswählen
Router::connect('/lens', array('controller' => 'lens', 'action' => 'index'));
   
    Router::connect('/lens/:slug-:id', array('controller' => 'lens', 'action' => 'view'),
                                   array('pass' => array('id','slug'), 'id' => '[0-9]+','slug' => '(.*)'  )
    );


View-Konfiguration:
Code: Alles auswählen

$urlConditons = array('controller'=>'lens','action'=>'view', 'slug' => $len['Len']['rewriteurl'], 'id' => $len['Len']['id']);
$html->link($len['Len']['producer'],$urlConditons,array('target'=>'_self','class'=>'nolink', 'title'=>$len['Len']['lens']))


Irgendwelche Ideen??

Danke und Gruß
Jörg
Jörg
 
Beiträge: 130
Registriert: Di 13. Mai 2008, 13:45
Wohnort: Bremen
CakePHP-Version: 2.0.3, 1.3.x
OS: Win7/Ubuntu

Re: Suchmaschinen-Optimierung: SpokenURL generieren?

Beitragvon havanna » Mo 11. Mai 2009, 22:21

Hallo Jens,

schaue mal, ob du das mit der Methode beforeFilter in app_controller.php kombinieren kannst.
Ohne das geprüft zu haben, könnte ich mir vorstellen, dass man in der Methode beforeFilter aus dem Text die ID generiert indem man zuerst eine Tabelle oder eine config Datei ausliest. Wäre jetzt einfach mal meine Idee.

ggf.: Suche mal in google mit "cakephp beforeFilter router"

Ciao Thomas

P.S. sorry, dass ich gerade keine Zeit habe, dies in der Tiefe zu verfolgen.
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Suchmaschinen-Optimierung: SpokenURL generieren?

Beitragvon Jörg » Di 12. Mai 2009, 19:35

Hallo Thomas,
leider konnte ich zu dem "cakephp beforeFilter router" nichts passendes finden.

Nun habe ich zwar eine Lösung, jedoch ist die Weiterverarbeitung nicht so einfach wie ich mir das vorgestellt hatte ...

Meine app_controller-Funktion sieht nun wie folgt aus:
Code: Alles auswählen
function view($slug = null) {
        $lens = $this->Len->findByUrl($slug);
        $neighbours = $this->Len->findNeighbours(null,'Len.id',$lens["Len"]["id"]);
       
        $this->set('Lens',$lens);
        $this->set('neighbours',$neighbours);
    }


Router:
Code: Alles auswählen
Router::connect('/test/:slug', array('controller' => 'lens', 'action' => 'view'),
                                   array('pass' => array('id','slug'), 'id' => '[0-9]+','slug' => '(.*)'  )
    );

Habe die ID derzeit noch im Router gelassen, da ich wie gesagt noch die Hoffnung habe, dass es da eine bessere Lösung gibt.

Wäre natürlich genial, wenn es da noch eine schönere Lösung geben würde.
Das ich bei der Linkgenerierung via des HTML-Helpers meinen "Slug" und die "id" übergeben kann, und dann über den Router meine Ausgabe steuern kann... ???

Gruß
Jörg
Jörg
 
Beiträge: 130
Registriert: Di 13. Mai 2008, 13:45
Wohnort: Bremen
CakePHP-Version: 2.0.3, 1.3.x
OS: Win7/Ubuntu


Zurück zu Konzeption und Vorgehensweise

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron