Advanced Mod Rewriting Contenido 4.6.x
sobald die 4.6.3 draussen ist, gibt es wieder eine modifizierte version meinerseits. ich werde da ein paar kleinigkeiten im script geändert haben, damit das ganze auch bei tieferer verschachtelung besser skalierbar ist. dazu wird allerdings später eine anpassung der .htaccess notwendig sein ...
sobald ich diese version aktualisiert habe poste ich es hier.
vielen dank schon einmal an morpheus für die mühen der anpassung.
sobald ich diese version aktualisiert habe poste ich es hier.
vielen dank schon einmal an morpheus für die mühen der anpassung.
Bei mir klappt leider gar nichts. Steht immer noch front_content im Frontend. Muss man erst die Dateien auf den Server kopieren bevor man einen Mandanten mit Inhalten anlegt?
Hab modrewrite mal manuell gemacht:
www.domain.tld/ARTIKELNAME_1_2_3_4.html
Da musste ich auch alle Navigationsmodule anpassen. Ist das jetzt nicht mehr notwendig? Wie kann ich den Fehler finden?
Hab modrewrite mal manuell gemacht:
www.domain.tld/ARTIKELNAME_1_2_3_4.html
Da musste ich auch alle Navigationsmodule anpassen. Ist das jetzt nicht mehr notwendig? Wie kann ich den Fehler finden?
hi,
in diesem thread geht es um die contenido erweiterung advanced modrewrite - das ist ein komplett bundle der contenido version, so modifiziert, dass der anwender eigentlich nichts mehr tun muss. so wie es bei dir läuft müsstest du wahrscheinlich alle deine navigationsmodule umprogrammieren.
eine erklärung was die erweiterung macht, gibt es bei dem bundle für die contenido version 4.4.4 (findest du hier), hier in diesem thread wird die anpassung dieserer erweiterung an die aktuelle contenido version besprochen.
in diesem thread geht es um die contenido erweiterung advanced modrewrite - das ist ein komplett bundle der contenido version, so modifiziert, dass der anwender eigentlich nichts mehr tun muss. so wie es bei dir läuft müsstest du wahrscheinlich alle deine navigationsmodule umprogrammieren.
eine erklärung was die erweiterung macht, gibt es bei dem bundle für die contenido version 4.4.4 (findest du hier), hier in diesem thread wird die anpassung dieserer erweiterung an die aktuelle contenido version besprochen.
Alles klar. Also praktisch so, wie ich es manuell schon einmal gemacht habe. Unterschied: Ihr habt die "/" in "www.domain.tld/kategorie/artikel.." in den Griff bekommen. Hatte ich nie geschafft.
Wenn Du von Bundle sprichst, dann ist in der ZIP in diesem Thread aber doch bis auf die Navi-Anpassungen alles enthalten, oder?!
Danke MyAccount
Wenn Du von Bundle sprichst, dann ist in der ZIP in diesem Thread aber doch bis auf die Navi-Anpassungen alles enthalten, oder?!
Danke MyAccount
die zip ermöglicht einfaches modRewrite OHNE seine Module umprogrammieren zu müssen. da dafür dateien im core des CMS modifiziert werden mussten, gibt es für diese erweiterung immer ein extra bereitgestelltes bundle. die funktionsweise ist hier im ersten post erklärt.
??? Ich hab den Thread komplett durchgestöbert. Sieht nach einer ganze Menge Arbeit aus, die da erledigt wurde. Super Leistung. Leider bin ich nicht schlauer geworden.
Ich habe in dem Thread einen Link auf eine Anleitung gefunden. Da stehen aber genau die Sachen drin, die auch in der ZIP in diesem Thread hier beschrieben werden.
Und das mit den Navigationsmodule ist ein Mißverständnis. Die Module, die ich jetzt hier einsetzte sind die Standard-Module aus der 4.6.2 Neuinstallation.
Und wenn ich Dich richtig verstehe, dann brauche ich nur die ZIP-Datei (Bundle für 4.6.2) und ändere damit auch die CORE von Contenido?! Wenn man z.B. die contenido/includes/config.php als CORE bezeichnen mag.
Ich habe in dem Thread einen Link auf eine Anleitung gefunden. Da stehen aber genau die Sachen drin, die auch in der ZIP in diesem Thread hier beschrieben werden.
Und das mit den Navigationsmodule ist ein Mißverständnis. Die Module, die ich jetzt hier einsetzte sind die Standard-Module aus der 4.6.2 Neuinstallation.
Und wenn ich Dich richtig verstehe, dann brauche ich nur die ZIP-Datei (Bundle für 4.6.2) und ändere damit auch die CORE von Contenido?! Wenn man z.B. die contenido/includes/config.php als CORE bezeichnen mag.
Dann hab ich also mit der ZIP alles, was ich für advanced modrewrite brauche. Zumindest habe ich in dem von Dir genannten "großen" Thread nichts anderes finden können.
Werde das ganze mal auf einen anderen Server testen. Hier, bei uno und uno klappt es leider nicht. Oder hab ich was in der Mandanteneinstellung vergessen? Außer der neuen XHTML-Checkbox hat sich da aber auch nicht viel verändert.
Wenn ich wenigstens eine Fehlermeldung bekommen hätte. Aber das CMS, Frontend und Backend, läuft weiter, als hätte ich keine Änderungen (ZIP) eingespielt. Sehr komisch.
Gruß und Danke MyAccount
Werde das ganze mal auf einen anderen Server testen. Hier, bei uno und uno klappt es leider nicht. Oder hab ich was in der Mandanteneinstellung vergessen? Außer der neuen XHTML-Checkbox hat sich da aber auch nicht viel verändert.
Wenn ich wenigstens eine Fehlermeldung bekommen hätte. Aber das CMS, Frontend und Backend, läuft weiter, als hätte ich keine Änderungen (ZIP) eingespielt. Sehr komisch.
Gruß und Danke MyAccount
Hallo Stese,
Du hast ja vielleicht eine Geduld.
Ich habe die Verzeichnisse bei one und one wie folgt:
cms
cms.kunde.de
conlib
contenido
...usw.
So sehen die Änderungen in der Config.php bei mir aus:
Zum Vergleich hier mal der Contenido-Pfad:
Und das ist die .htaccess aus dem Verzeichnis cms.kunde.de:
Und mal verkürzt die Navi-Ausgabe 1.Ebene:
Der Rest hab ich laut der ZIP kopiert und die dbinstaller hab ich auch ausgeführt. Und es passiert nix. Ich wette, ich seh den Wald wieder mal vor lauter Bäumen nicht.
Du hast ja vielleicht eine Geduld.
Ich habe die Verzeichnisse bei one und one wie folgt:
cms
cms.kunde.de
conlib
contenido
...usw.
So sehen die Änderungen in der Config.php bei mir aus:
Code: Alles auswählen
// edit by stese
/* Use advanced mod_rewrites */
$cfg['mod_rewrite']['use'] = 1;
# Wichtig!!!! Pfad an eigenes Basis Verzeichnis anpassen (relativ zur root des ftp)
/* Path to the htaccessfile with trailling slash */
$cfg['mod_rewrite']['rootdir'] = '/cms.kunde.de/';
/* Start TreeLocation vrom Root Tree (set to 1) or get location from first category (set to 0) */
$cfg['mod_rewrite']['startfromroot'] = 0;
/* is multilanguage? */
$cfg['mod_rewrite']['use_language'] = 0;
// end edit by stese
Code: Alles auswählen
$cfg['path']['contenido'] = '/homepages/00/d12345678/htdocs/contenido/';
Code: Alles auswählen
DirectoryIndex front_content.php
RewriteEngine on
RewriteRule ^(de|en|fr|sp|deutsch|Deutsch|English|englisch|franzoesisch|Francais|spanisch|spain|espanol)/([^/]*)/([^/]*)/([^/]*)/(.*).html$ front_content.php?langname=$1&catnames[]=$2&catnames[]=$3&catnames[]=$4&artname=$5 [QSA,L]
RewriteRule ^(de|en|fr|sp|deutsch|Deutsch|English|englisch|franzoesisch|Francais|spanisch|spain|espanol)/([^/]*)/([^/]*)/([^/]*)/$ front_content.php?langname=$1&catnames[]=$2&catnames[]=$3&catnames[]=$4 [QSA,L]
RewriteRule ^(de|en|fr|sp|deutsch|Deutsch|English|englisch|franzoesisch|Francais|spanisch|spain|espanol)/([^/]*)/([^/]*)/(.*).html$ front_content.php?langname=$1&catnames[]=$2&catnames[]=$3&artname=$4 [QSA,L]
RewriteRule ^(de|en|fr|sp|deutsch|Deutsch|English|englisch|franzoesisch|Francais|spanisch|spain|espanol)/([^/]*)/([^/]*)/$ front_content.php?langname=$1&catnames[]=$2&catnames[]=$3 [QSA,L]
RewriteRule ^(de|en|fr|sp|deutsch|Deutsch|English|englisch|franzoesisch|Francais|spanisch|spain|espanol)/([^/]*)/(.*).html$ front_content.php?langname=$1&catnames[]=$2&artname=$3 [QSA,L]
RewriteRule ^(de|en|fr|sp|deutsch|Deutsch|English|englisch|franzoesisch|Francais|spanisch|spain|espanol)/([^/]*)/$ front_content.php?langname=$1&catnames[]=$2 [QSA,L]
RewriteRule ^(de|en|fr|sp|deutsch|Deutsch|English|englisch|franzoesisch|Francais|spanisch|spain|espanol)/(.*).html$ front_content.php?langname=$1&artname=$2 [QSA,L]
RewriteRule ^(de|en|fr|sp|deutsch|Deutsch|English|englisch|franzoesisch|Francais|spanisch|spain|espanol)/index.html$ front_content.php [QSA,L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/(.*).html$ front_content.php?catnames[]=$1&catnames[]=$2&catnames[]=$3&artname=$4 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ front_content.php?catnames[]=$1&catnames[]=$2&catnames[]=$3 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)/(.*).html$ front_content.php?catnames[]=$1&catnames[]=$2&artname=$3 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)/$ front_content.php?catnames[]=$1&catnames[]=$2 [QSA,L]
RewriteRule ^([^/]*)/(.*).html$ front_content.php?catnames[]=$1&artname=$2 [QSA,L]
RewriteRule ^([^/]*)/$ front_content.php?catnames[]=$1 [QSA,L]
RewriteRule ^(.*).html$ front_content.php?artname=$1 [QSA,L]
RewriteRule ^index.html$ front_content.php [QSA,L]
Code: Alles auswählen
<?php
if ( !is_object($db2) ) {
$db2 = new DB_Contenido;
}
if (!function_exists("catIsChildOf"))
{
function catIsChildOf($id, $idparent) {
global $cfg, $client, $lang;
$db = new DB_Contenido;
$parent = $id;
while ( $parent != 0 ) {
$sql = "SELECT
a.parentid
FROM
".$cfg["tab"]["cat"]." AS a,
".$cfg["tab"]["cat_lang"]." AS b
WHERE
a.idclient = '".$client."' AND
b.idlang = '".$lang."' AND
a.idcat = b.idcat AND
a.idcat = '".$parent."'";
$db->query($sql);
$db->next_record();
$parent = $db->f("parentid");
if ($parent == $idparent) {
return true;
}
}
return false;
}
}
if ( catIsChildOf($idcat, "CMS_VALUE[0]") ) {
$sel_idcat = $idcat;
} else {
$sel_idcat = "CMS_VALUE[0]";
}
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');
$navitems = array();
$tpl = new Template;
function nav($idcat) {
global $navitems, $client, $lang, $cfg;
$db = new DB_Contenido;
$db2 = new DB_Contenido;
$sql = "SELECT parentid FROM ".$cfg["tab"]["cat"]." WHERE idcat = '$idcat'";
$db->query($sql);
$db->next_record();
$parentid = $db->f("parentid");
if ( $parentid == 0 ) {
if ( $idcat != "CMS_VALUE[0]" ){
$navitems = array();
$sql = "SELECT
A.idcat,
C.name
FROM
".$cfg["tab"]["cat_tree"]." AS A,
".$cfg["tab"]["cat"]." AS B,
".$cfg["tab"]["cat_lang"]." AS C
WHERE
A.idcat = B.idcat AND
B.idcat = C.idcat AND
B.idclient = '$client' AND
C.idlang = '$lang' AND
C.visible = '1' AND
B.parentid = 'CMS_VALUE[0]'
ORDER
BY A.idtree";
$db->query($sql);
while ($db->next_record()) {
$sql = "SELECT
a.external_redirect AS ext
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."'
AND
b.is_start = '1'
AND
c.idclient = '".$client."'
AND
c.idcat = b.idcat
AND
a.idart = b.idart
AND
a.idlang = '".$lang."'";
$db2->query($sql);
$db2->next_record();
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$navitems[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}
}
return true;
}
$sql = "SELECT
A.idcat,
C.name
FROM
".$cfg["tab"]["cat_tree"]." AS A,
".$cfg["tab"]["cat"]." AS B,
".$cfg["tab"]["cat_lang"]." AS C
WHERE
A.idcat = B.idcat
AND
B.idcat = C.idcat
AND
B.idclient = '$client'
AND
C.idlang = '$lang'
AND
C.visible = '1'
AND
B.parentid = '$parentid'
ORDER BY
A.idtree";
$db->query($sql);
while ($db->next_record()) {
$sql = "SELECT
a.external_redirect AS ext
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."' #
AND
b.is_start = '1'
AND
c.idclient = '".$client."'
AND
c.idcat = b.idcat
AND
a.idart = b.idart
AND
a.idlang = '".$lang."'";
$db2->query($sql);
$db2->next_record();
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$tmp_nav[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}
$tmp_nav[$idcat]["sub"] = $navitems;
$navitems = $tmp_nav;
nav($parentid);
} // end function
$sql = "SELECT
A.idcat,
C.name
FROM
".$cfg["tab"]["cat_tree"]." AS A,
".$cfg["tab"]["cat"]." AS B,
".$cfg["tab"]["cat_lang"]." AS C
WHERE
A.idcat = B.idcat
AND
B.idcat = C.idcat
AND
B.idclient = '$client'
AND
C.idlang = '$lang'
AND
C.visible = '1'
AND
B.parentid = '$sel_idcat'
ORDER BY
A.idtree";
$db->query($sql);
while ( $db->next_record() ) {
$sql = "SELECT
a.external_redirect AS ext
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."'
AND
b.is_start = '1'
AND
c.idclient = '".$client."'
AND
c.idcat = b.idcat
AND
a.idart = b.idart
AND
a.idlang = '".$lang."'";
$db2->query($sql);
$db2->next_record();
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$navitems[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}
nav($sel_idcat);
ob_start();
foreach ($navitems as $key => $data) {
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl->next();
if ($idcat == $data['idcat'] || is_array($data['sub'])) {
$tpl->generate('templates/mainnav_1_1.html');
} else {
$tpl->generate('templates/mainnav_1_0.html');
}
} // end foreach
$html = ob_get_contents();
ob_end_clean();
echo $html;
?>
-
- Beiträge: 2
- Registriert: Di 22. Nov 2005, 13:14
- Kontaktdaten:
Bekomme modrewrite einfach nicht hin...
Hallo stese, hallo morpheus,
bin ein Newbie und würde mich freuen, wenn ihr mir helfen könntet. Habe das advanced modrewrite installiert und bekomme es einfach nicht zum Laufen.
Nach zwei Tagen an Versuchen gebe ich nun verzweifelt auf und frage mal hier nach.
Bestimmt ist es für einen Profi nur eine Kleinigkeit...
Hier kommt ihr auf die Seite (die ja nicht läuft): http://www.heimwerker-netzwerk.de/cms/
Würde mich über einen Tipp sehr freuen!
bin ein Newbie und würde mich freuen, wenn ihr mir helfen könntet. Habe das advanced modrewrite installiert und bekomme es einfach nicht zum Laufen.
Nach zwei Tagen an Versuchen gebe ich nun verzweifelt auf und frage mal hier nach.
Bestimmt ist es für einen Profi nur eine Kleinigkeit...
Hier kommt ihr auf die Seite (die ja nicht läuft): http://www.heimwerker-netzwerk.de/cms/
Würde mich über einen Tipp sehr freuen!
-
- Beiträge: 2
- Registriert: Di 22. Nov 2005, 13:14
- Kontaktdaten:
Hat sich erledigt...
...habe den Restvom tag jetzt auch noch rumprobiert, jetzt läufts endlich
Trotzdem Danke!
Trotzdem Danke!
Nun bin ich soweit, dass sich endlich was zeigt. Ich hab contenido komplett neu installiert und dann die ZIP-Datei drüber kopiert und die dbinstaller aufgerufen.
Leider scheint hier komplett was in die Hose gegangen zu sein. Ich denke es liegt an meiner Art der Installation von Contenido und der Pfadeinrichtung. Aber vielleicht irre ich mich da auch wieder.
Ich richte mir immer eine extra Subdomain für das Backend ein.
login.cms.domain.tld
Das Frontend erhält dann immer
cms.domain.tld
Mein Web-Verzeichnis sieht so aus:
domain.tld
cms
conlib
contenido
pear
...
Wenn ich jetzt den Pfad des Beispielmandanten anpasse von login.cms.domain.tld (das setzt Contenido so) in cms.domain.tld dann sehe ich in der Adressleiste der Beispiel-Webseite im Frontend die gewünschten /cms/kategoriename/ aber vorneweg immer noch login.cms.domain.tld und bekomme eine Fehlermeldung. Völlig zu Recht natürlich.
Aber wo liegt der Fehler? In der Art und Weise meiner Subdomains und meiner Verzeichnisstruktur oder im adv_modrewrite?
Leider scheint hier komplett was in die Hose gegangen zu sein. Ich denke es liegt an meiner Art der Installation von Contenido und der Pfadeinrichtung. Aber vielleicht irre ich mich da auch wieder.
Ich richte mir immer eine extra Subdomain für das Backend ein.
login.cms.domain.tld
Das Frontend erhält dann immer
cms.domain.tld
Mein Web-Verzeichnis sieht so aus:
domain.tld
cms
conlib
contenido
pear
...
Wenn ich jetzt den Pfad des Beispielmandanten anpasse von login.cms.domain.tld (das setzt Contenido so) in cms.domain.tld dann sehe ich in der Adressleiste der Beispiel-Webseite im Frontend die gewünschten /cms/kategoriename/ aber vorneweg immer noch login.cms.domain.tld und bekomme eine Fehlermeldung. Völlig zu Recht natürlich.
Aber wo liegt der Fehler? In der Art und Weise meiner Subdomains und meiner Verzeichnisstruktur oder im adv_modrewrite?