rewrite für content seiten

Begonnen von trans22, 11 Juni 2008, 10:12:24

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

trans22

Hallo,
sorry nochmal, aber das thema ist mir schlicht zu komplex, ich konnte da selbst bisher keine Lösung finden, daher wäre ich sehr dankbar wenn mir jemand auf die Sprünge helfen könnte: :gruebel:

Ohne mode_rewrite Aktivierung sieht die Adresse so aus:
http://shopnet24.ch/modules.php?name=Content&pa=showpage&pid=56

mit Aktivierung so:
http://shopnet24.ch/Content-pa-showpage-pid-56.html

Und was ist nun zu tun damit der Titel des Contents angzeigt wird, z.B. so:
http://shopnet24.ch/Click Parkett 2-Stab Langriemen-56.html

Andy ;)

reddragon

Hi, ich suchte vorhin auch nach einer Lösung, und habe mir gerade selber etwas gecodet(, obwohl ich keine Ahnung davon habe :BD:)

Also:
Als Ausgangsbasis habe ich folgendes DL-Paket genutzt. Dort wurde auf Diesen Beitrag verwiesen. Nachdem ich dann die relevanten Codes in die aktuellen Dateien kopiert habe, bin ich angefangen dort selber etwas rum zu fummeln.

Die mod_rewrite.htaccess wurde ab Zeile 25 durch um folgende Zeilen erweitert:
## Neuzugefügte rewrite rules (Downloads, News, Web_links, Content)

RewriteRule ^(Web_Links)-cid-(.*)-([0-9]+)-min-([0-9]+)-orderby-(.*)\.html$ modules.php?name=$1&cid=$3&min=$4&orderby=$5 [L]
RewriteRule ^(Downloads)-cid-(.*)-([0-9]+)-min-([0-9]+)-orderby-(.*)\.html$ modules.php?name=$1&cid=$3&min=$4&orderby=$5 [L]

RewriteRule ^(Web_Links)-cid-(.*)-([0-9]+)-min-([0-9]+)\.html$ modules.php?name=$1&cid=$3&min=$4 [L]
RewriteRule ^(Downloads)-cid-(.*)-([0-9]+)-min-([0-9]+)\.html$ modules.php?name=$1&cid=$3&min=$4 [L]

#-------------------------Details
RewriteRule ^(Downloads)-lid-(.*)-([0-9]+)\.html$ modules.php?name=$1&op=view&lid=$3 [L]
RewriteRule ^(Web_Links)-lid-(.*)-([0-9]+)\.html$ modules.php?name=$1&op=view&lid=$3 [L]
RewriteRule ^(Content)-pid-(.*)-([0-9]+)\.html$ modules.php?name=$1&pid=$3 [L]

#-------------------------Kartegorie
RewriteRule ^(Downloads)-cid-(.*)-([0-9]+)\.html$ modules.php?name=$1&cid=$3 [L]
RewriteRule ^(Web_Links)-cid-(.*)-([0-9]+)\.html$ modules.php?name=$1&cid=$3 [L]
RewriteRule ^(Content)-cid-(.*)-([0-9]+)\.html$ modules.php?name=$1&cid=$3 [L]

RewriteRule ^(News)-cat-(.*)-([0-9]+)\.html$ modules.php?name=$1&file=categories&catid=$3 [L]
RewriteRule ^(News)-sid-(.*)-([0-9]+)\.html$ modules.php?name=$1&file=article&sid=$3 [L]


Dazu musste dann noch die includes\mx_modrewrite.php ergänzt werden. Dazu habe ich auch wieder die von m-t erstellten codes aus dem Zip gesucht, und in die Aktuelle Datei zwischen den Zeilen 180 und 181 eingefügt:

// Start mod_rewrite Erweiterung (News, Downloads, Web_Links, Content)
// Umlaute
$umlaute = array("ä", "ü", "ö", "Ä", "Ü", "Ö", "ß", "&");
$ersetzung = array("ae", "ue", "oe", "Ae", "Ue", "Oe", "ss", "und");
//DOWNLOADS DETAILS LID
    global $prefix;
preg_match_all('#Downloads-op-view-lid-(\d*)#', $content, $down, PREG_SET_ORDER);
foreach ($down as $down1){

$down2[0] = preg_replace('#Downloads-op-view-lid-#', '', $down1[0]);
$abfrage = "SELECT title, lid FROM " . $prefix . "_downloads_downloads WHERE lid = '$down2[0]'";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_array($ergebnis))
    {

$titel_down_rewrite = $row["title"];
$titel_down_rewrite = str_replace($umlaute, $ersetzung, $titel_down_rewrite);
$titel_down_rewrite = preg_replace('#\W#', "-", $titel_down_rewrite);
$titel_down_rewrite = preg_replace('#---#', "-", $titel_down_rewrite);
$titel_down_rewrite = preg_replace('#--#', "-", $titel_down_rewrite);
$titel_down_fert = "Downloads-lid-";
$titel_down_fert.= "$titel_down_rewrite-";
$titel_down_fert.= $down2[0];
$replace = "#".$down1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_down_fert, $content);
}

}
//Downloads Categorie (CID)
preg_match_all('#Downloads-cid-(\d*)#', $content, $down, PREG_SET_ORDER);
foreach ($down as $down1){

$down2[0] = preg_replace('#Downloads-cid-#', '', $down1[0]);
$abfrage = "SELECT title, cid FROM " . $prefix . "_downloads_categories WHERE cid = '$down2[0]'";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_array($ergebnis))
    {

$titel_down_rewrite = $row["title"];
$titel_down_rewrite = str_replace($umlaute, $ersetzung, $titel_down_rewrite);
$titel_down_rewrite = preg_replace('#\W#', "-", $titel_down_rewrite);
$titel_down_rewrite = preg_replace('#---#', "-", $titel_down_rewrite);
$titel_down_rewrite = preg_replace('#--#', "-", $titel_down_rewrite);
$titel_down_fert = "Downloads-cid-";
$titel_down_fert.= "$titel_down_rewrite-";
$titel_down_fert.= $down2[0];
$replace = "#".$down1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_down_fert, $content);
}

}
/**
* ############################################################################################
* ############################################################################################
* ############################################################################################
*  Content-Modification             Start
* ############################################################################################
* ############################################################################################
* ############################################################################################
*/
//Content Categorie

preg_match_all('#Content-cid-(\d*)#', $content, $pages, PREG_SET_ORDER);
foreach ($pages as $pages1){

$pages2[0] = preg_replace('#Content-cid-#', '', $pages1[0]);
$abfrage = "SELECT title, cid FROM " . $prefix . "_pages_categories WHERE cid = '$pages2[0]'";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_array($ergebnis))
    {

$titel_pages_rewrite = $row["title"];
$titel_pages_rewrite = str_replace($umlaute, $ersetzung, $titel_pages_rewrite);
$titel_pages_rewrite = preg_replace('#\W#', "-", $titel_pages_rewrite);
$titel_pages_rewrite = preg_replace('#---#', "-", $titel_pages_rewrite);
$titel_pages_rewrite = preg_replace('#--#', "-", $titel_pages_rewrite);
/**                                                                normalerweise 1 Bindestrich am Ende          */
$titel_pages_fert = "Content-cid---";
$titel_pages_fert.= "$titel_pages_rewrite---";
$titel_pages_fert.= $pages2[0];
$replace = "#".$pages1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_pages_fert, $content);
}

}
//Content Details

preg_match_all('#Content-pid-(\d*)#', $content, $pages, PREG_SET_ORDER);
foreach ($pages as $pages1){

$pages2[0] = preg_replace('#Content-pid-#', '', $pages1[0]);
$abfrage = "SELECT title, pid FROM " . $prefix . "_pages WHERE pid = '$pages2[0]'";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_array($ergebnis))
    {

$titel_pages_rewrite = $row["title"];
$titel_pages_rewrite = str_replace($umlaute, $ersetzung, $titel_pages_rewrite);
$titel_pages_rewrite = preg_replace('#\W#', "-", $titel_pages_rewrite);
$titel_pages_rewrite = preg_replace('#---#', "-", $titel_pages_rewrite);
$titel_pages_rewrite = preg_replace('#--#', "-", $titel_pages_rewrite);
/**                                                                normalerweise 1 Bindestrich am Ende          */
$titel_pages_fert = "Content-pid---";
$titel_pages_fert.= "$titel_pages_rewrite---";
$titel_pages_fert.= $pages2[0];
$replace = "#".$pages1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_pages_fert, $content);
}

}
/**
* ############################################################################################
* ############################################################################################
* ############################################################################################
*  Content-Modification             Ende
* ############################################################################################
* ############################################################################################
* ############################################################################################
*/
//Web_Links Categorie

preg_match_all('#Web_Links-cid-(\d*)#', $content, $links, PREG_SET_ORDER);
foreach ($links as $links1){

$links2[0] = preg_replace('#Web_Links-cid-#', '', $links1[0]);
$abfrage = "SELECT title, cid FROM " . $prefix . "_links_categories WHERE cid = '$links2[0]'";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_array($ergebnis))
    {

$titel_links_rewrite = $row["title"];
$titel_links_rewrite = str_replace($umlaute, $ersetzung, $titel_links_rewrite);
$titel_links_rewrite = preg_replace('#\W#', "-", $titel_links_rewrite);
$titel_links_rewrite = preg_replace('#---#', "-", $titel_links_rewrite);
$titel_links_rewrite = preg_replace('#--#', "-", $titel_links_rewrite);
$titel_links_fert = "Web_Links-cid-";
$titel_links_fert.= "$titel_links_rewrite-";
$titel_links_fert.= $links2[0];
$replace = "#".$links1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_links_fert, $content);
}

}
//Web_Links Details
preg_match_all('#Web_Links-op-view-lid-(\d*)#', $content, $links, PREG_SET_ORDER);
foreach ($links as $links1){

$links2[0] = preg_replace('#Web_Links-op-view-lid-#', '', $links1[0]);
$abfrage = "SELECT title, lid FROM " . $prefix . "_links_links WHERE lid = '$links2[0]'";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_array($ergebnis))
    {

$titel_links_rewrite = $row["title"];
$titel_links_rewrite = str_replace($umlaute, $ersetzung, $titel_links_rewrite);
$titel_links_rewrite = preg_replace('#\W#', "-", $titel_links_rewrite);
$titel_links_rewrite = preg_replace('#---#', "-", $titel_links_rewrite);
$titel_links_rewrite = preg_replace('#--#', "-", $titel_links_rewrite);
$titel_links_fert = "Web_Links-lid-";
$titel_links_fert.= "$titel_links_rewrite-";
$titel_links_fert.= $links2[0];
$replace = "#".$links1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_links_fert, $content);
}

}
// News Categorie
preg_match_all('#News-file-categories-catid-(\d*)#', $content, $news, PREG_SET_ORDER);
foreach ($news as $news1){

$news2[0] = preg_replace('#News-file-categories-catid-#', '', $news1[0]);
$abfrage = "SELECT title, catid FROM " . $prefix . "_stories_cat WHERE catid = '$news2[0]'";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_array($ergebnis))
    {

$titel_news_rewrite = $row["title"];
$titel_news_rewrite = str_replace($umlaute, $ersetzung, $titel_news_rewrite);
$titel_news_rewrite = preg_replace('#\W#', "-", $titel_news_rewrite);
$titel_news_rewrite = preg_replace('#---#', "-", $titel_news_rewrite);
$titel_news_rewrite = preg_replace('#--#', "-", $titel_news_rewrite);
$titel_news_fert = "News-cat-";
$titel_news_fert.= "$titel_news_rewrite-";
$titel_news_fert.= $news2[0];
$replace = "#".$news1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_news_fert, $content);
}

}
//News Details
preg_match_all('#News-file-article-sid-(\d*)#', $content, $news, PREG_SET_ORDER);
foreach ($news as $news1){

$news2[0] = preg_replace('#News-file-article-sid-#', '', $news1[0]);
$abfrage = "SELECT title, sid FROM " . $prefix . "_stories WHERE sid = '$news2[0]'";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_array($ergebnis))
    {

$titel_news_rewrite = $row["title"];
$titel_news_rewrite = str_replace($umlaute, $ersetzung, $titel_news_rewrite);
$titel_news_rewrite = preg_replace('#\W#', "-", $titel_news_rewrite);
$titel_news_rewrite = preg_replace('#---#', "-", $titel_news_rewrite);
$titel_news_rewrite = preg_replace('#--#', "-", $titel_news_rewrite);
$titel_news_fert = "News-sid-";
$titel_news_fert.= "$titel_news_rewrite-";
$titel_news_fert.= $news2[0];
$replace = "#".$news1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_news_fert, $content);
}

}
// Ende mod_rewrite


Bei meiner Test-Seite funktioniert es Wunderbar.
Aus der Kartegorie
/modules.php?name=Content&cid=1 wird nun
/Content-cid---Test-Kartegorie---1.html.
Und aus der Seite
/modules.php?name=Content&pid=17 wird
/Content-pid---Testseite---17.html

Da ich wie oben gesagt wenig Ahnung vom Coden habe, und die Basis von m-t stammt, weiß ich nicht, in wie weit mein programmiertes sicher ist.
Dann habe ich noch aus optischen Gründen im unteren Code in folgenden Zeilen
$titel_pages_fert = "Content-pid---"; und diese
$titel_pages_fert.= "$titel_pages_rewrite---"; drei Bindestriche eingefügt, um den eigentlichen Titel von der restlichen URL zu trennen.
Ob das nun irgendwelche Auswirkungen hat oder gegen Regeln verstößt, kann ich nicht sagen :gruebel:

Ich würde mich freuen, wenn es bei den 2 Punkten grünes Licht von den Adminisratoren geben würde... :)

Gruß
reddragon :bye:

PS:
ich packe die beiden geänderten Dateien mal in den Anhang, dann muss nicht jeder selber rumfummeln ;)

m-t

nur ne kleine anmerkung hierzu...

im contentmodul kann mittels pagebreak zusätzliche seiten eingefügt werden, in diesem fall funktioniert das mod_rewrite nicht mehr wenn man auf die nachfolgenden seiten klickt....

reddragon

 :gruebel:  hmm... da könntest du recht haben..... (brauchte den Befehl bislang nie....)

reddragon

 :puzzled:  naja, ich komme da nicht weiter..... :red:

was ich mir für die mod_rewrite.htaccess vorstellen könnte wäre folgendes:
#-------------------------Pagebreak
RewriteRule ^(Content)-pid-(.*)-([0-9]+)-page-(.*)-([0-9]+)\.html$ modules.php?name=$1&cid=$3&page=$2 [L]


aber es fehlt dazu der Rest.....

StegRene

Hm, bei mir läuft es auch nicht wirklich:

http://dualsimhandy.eu/Content-pa-showpage-pid-1.html   --> da hat sich nichts geändert, oder seh ich das falsch?

Sobald ich auf einen Link auf einer Contentseite klick, welcher auf eine weitere Contentseite führt:
http://dualsimhandy.eu/modules.php?name=Content&pa=showpage&pid=2

...bin ich schon wieder beim .php ??

Ich würde gern diese Zeile
"Content-pa-showpage-pid-1"

gegen die Überschrift
"Geräte - Übersicht"

austauchen. Weiss jemand, wie das geht und kann mir auf die Sprünge helfen?

reddragon

Das versuchen wir alle :)

Solange das Content nur eine Seite ist funktioniert mein geposteter code, aber bei dem Pagebreak setzt er aus :(

Komplett den "Content" aus der URL wir man nicht entfernen können, da das System ja wissen muss, auf welches Modul sich die URL bezieht. in den anderen URLs ist es ja das selbe:

Modulname, Überschrift und die laufende Nummer..
News-sid-Ueberschrift-63.html
Downloads-lid-Ueberschrift-12.html


Gibt es denn irgend ein anderes Modul mit pagebreak, in dem die modrewrite-Funktion schon klappt? ggf. könnte man da abschauen....

StegRene

Der Pagebreak ist derzeit nicht das Problem bei mir, ich hab da keine.

Aber wie gesagt, ich hätte gern die Überschrift der Seite mit in der URL und die interne Verlinkung von Content zu Content - Seite scheint das mod-rewrite auch auszuhebeln.

Ich bin nur leider nicht fit genug, um mit den Anleitungen klar zu kommen, die ganz oben in diesem Thema hier stehen  :red:

reddragon

Hast du denn mal die beiden angehängten Dateien ausgetaucht?

StegRene

Ja sicher, sonst würd es im Content ja gar nicht gehen, oder sehe ich das falsch?