Original AdvancedMod Rewrite 4.6.15
Ich habe folgendes Problem:
Ich habe ein contenido lokal entwickelt und dann auf einen Webserver geladen. (nicht zum ersten mal)
Alle pfade in der confing sowie in den mandanten einstellungen stimmen,
die base in der .htaccess stimmt
nun passiert folgendes:
kein Link funktioniert.
Artikel Links zeigen auf eine leere Seite
Kateorie Links werden weitergeleitet auf 404: /?error=1
Ich habe den cache, die aktiven sessions sowie die con_code schon geleert.
Außerdem habe ich /contenido/tools/updateseqruntime.php ausgeführt, was macht das eigentlich?
Weis jemand was abgeht??
Ich habe ein contenido lokal entwickelt und dann auf einen Webserver geladen. (nicht zum ersten mal)
Alle pfade in der confing sowie in den mandanten einstellungen stimmen,
die base in der .htaccess stimmt
nun passiert folgendes:
kein Link funktioniert.
Artikel Links zeigen auf eine leere Seite
Kateorie Links werden weitergeleitet auf 404: /?error=1
Ich habe den cache, die aktiven sessions sowie die con_code schon geleert.
Außerdem habe ich /contenido/tools/updateseqruntime.php ausgeführt, was macht das eigentlich?
Weis jemand was abgeht??
Beliebige Pfade
Hallo Stese.
So wie ich das sehe ist es möglich jeden xbeliebigen Kategorie Pfad zu erzeugen.
z.B.:
http://www.polycoder.de/contenido-wcms/ ... atures5555
Währen falschgeschriebene Artikelnamen einen 404 error erzeugen, tun falsche Kategorienamen das nicht.
Man könnte so Unmengen an Duplicate Content erzeugen und diesen Bug seotechnisch kriminell ausnutzen.
Oder hab ich da etwas übersehen?
Ist es möglich, jede falsche Url als 404 auszugeben.
Gruß
Jan
So wie ich das sehe ist es möglich jeden xbeliebigen Kategorie Pfad zu erzeugen.
z.B.:
http://www.polycoder.de/contenido-wcms/ ... atures5555
Währen falschgeschriebene Artikelnamen einen 404 error erzeugen, tun falsche Kategorienamen das nicht.
Man könnte so Unmengen an Duplicate Content erzeugen und diesen Bug seotechnisch kriminell ausnutzen.
Oder hab ich da etwas übersehen?
Ist es möglich, jede falsche Url als 404 auszugeben.
Gruß
Jan
ja, kann man in den mandanteneinstellungen ändern, wie restriktiv er auf korrekte schreibweise achten soll. steht in den docs/techref des bundles
Suchmaschinenfreundliche URLS durch Advanced ModRewrite 4.6.x
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
habs mit aufgenommen. ein neues bundle steht bereit.
changelog:
download wie immer auf meiner website.
changelog:
Code: Alles auswählen
2007-01-12
- diverse Bugfixe bei Modrewrite ohne Ordnerstruktur sowie
Erzeugung der websicheren Namen
- Bugfix bei Popups über TinyMCE. Wurde vorher nicht ersetzt, da
der TinyMCE standardmäßig statt ' den entsprechenden HTML Entity
' geschrieben hat. Dieser Entity wird nun wieder "zurück"-
konvertiert
- Bugfix Verlinkungen auf den Upload Ordner funktionierten im IE
nicht, da dieser die Base Href Einstellungen dort ignorierte.
Nun wird allen upload/ Vorkommen der Mandantenpfad vorangestellt.
- Bugfix der front_content.crcloginform.inc.php. Schreibfehler bei
URL zur Weiterleitung behoben.
- Defaultwert des einstellbaren Prozentsatzes für "ähnlich
klingende" URIs bei nicht gefundener Kategorie auf 75 gestellt.
Suchmaschinenfreundliche URLS durch Advanced ModRewrite 4.6.x
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
hilfe bei standard Navi und übergeben der idart
Hallo Community,
das ist mein erster Post und ich hoffe, dass ich eine Resonanz für mein Problem bekomme.
Vorweg muss ich sagen, dass ich in diesem Forum schon sehr viele nützliche Tools in mein COntenido einbauen konnte, riesen Danke erstma dafür.
nun zu meinem aktuellen Problem:
Ich habe Contenido 4.6.15 mit steses mr am Laufen, was prinzipiell auch wunderbar klappt.
Nun wollte ich einen Schritt weiter gehen und ausprobieren, ob ich es nur mit der Suche vom Forum schaffe, URLS zu bekommen, die anstatt so:
http://domain.de/kategorie/
so aussehen:
http://domain.de/kategorie/artikelname.html
Mit Hilfe von mvf ( thread: http://contenido.org/forum/viewtopic.php?t=13105 ) ist es mir gelungen, die HIlfsnavi dahingehend zu modifizieren.
Funktioniert wunderbar.....
Nun zu meinem Problem:
Ich setze KEINE geteilte HauptNavigation ein, sondern die standard HauptNavi, die beim Beispielmandanten dabei ist...
Ich habe nach Anleitung von Jaypeare ( http://contenido.org/forum/viewtopic.ph ... c&start=45 )
das Modul Hauptnavigation geändert:
Code Modul Hauptnavigation Output nach der Änderung gemäß Jaypeare:
Leider hat es bei mir nicht funktioniert.
Ich bekomme keinen fehler, der rewrite funktioniert ganz normal, anur leider wird mir der Artikelname .html nicht angezeigt...
Wenn mir irggendjemand helfen könnte, wäre ich überaus dankbar, weil ich die Suche Funktion jetzt shon ne ganze Weile gequält habe und einfach nicht mehr weiter weiss....
Danke im vorraus !!
das ist mein erster Post und ich hoffe, dass ich eine Resonanz für mein Problem bekomme.
Vorweg muss ich sagen, dass ich in diesem Forum schon sehr viele nützliche Tools in mein COntenido einbauen konnte, riesen Danke erstma dafür.
nun zu meinem aktuellen Problem:
Ich habe Contenido 4.6.15 mit steses mr am Laufen, was prinzipiell auch wunderbar klappt.
Nun wollte ich einen Schritt weiter gehen und ausprobieren, ob ich es nur mit der Suche vom Forum schaffe, URLS zu bekommen, die anstatt so:
http://domain.de/kategorie/
so aussehen:
http://domain.de/kategorie/artikelname.html
Mit Hilfe von mvf ( thread: http://contenido.org/forum/viewtopic.php?t=13105 ) ist es mir gelungen, die HIlfsnavi dahingehend zu modifizieren.
Funktioniert wunderbar.....
Nun zu meinem Problem:
Ich setze KEINE geteilte HauptNavigation ein, sondern die standard HauptNavi, die beim Beispielmandanten dabei ist...
Ich habe nach Anleitung von Jaypeare ( http://contenido.org/forum/viewtopic.ph ... c&start=45 )
das Modul Hauptnavigation geändert:
Code Modul Hauptnavigation Output nach der Änderung gemäß Jaypeare:
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Hauptnavigation
* Author(s) : Jan Lengowski, Andreas Lindner, 4fb
* Copyright : Contenido - four for business, Andreas Lindner
* Created : 12.08.2005
************************************************/
if (!function_exists("getIdart") ) {
function getIdart ( $idartlang ) {
global $cfg;
$db = new DB_Contenido;
$sql = "SELECT idart FROM " . $cfg["tab"]["art_lang"] . " WHERE idartlang = '" . (int)$idartlang . "'";
$db->query($sql);
$db->next_record();
return (int)$db->f("idart");
}
}
#System properties in use:
#Type: navigation, Name: idcat_homepage
#Contains idcat of tree to be displayed in main navigation
#Includes
cInclude("frontend", "includes/functions.navigation.php");
# hab ich eingefügt
#/hab ich eingefügt
#If no tree is selected, use client setting
$start_cat = "CMS_VALUE[0]";
if ($start_cat=='') {
$cApiClient = new cApiClient($client);
$start_cat = $cApiClient->getProperty('navigation','idcat_homepage');
}
if ( !is_object($db2) ) {
$db2 = new DB_Contenido;
}
/**
* Check if a category is child
* of another category
*
* @return boolean true/false
* @author Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG 2003
*/
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, $start_cat) ) {
$sel_idcat = $idcat;
} else {
$sel_idcat = $start_cat;
}
/* Include Template Class */
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');
/**
* Array storing alle the
* navigation data
*/
$navitems = array();
/* Template Instance */
$tpl = new Template;
/**
* Recursive function for creating
* the navigation array
* @param Int $idcat Category id
*/
function nav($idcat) {
global $navitems, $client, $lang, $cfg, $start_cat;
$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 != $start_cat ){
$navitems = array();
$sql = "SELECT
A.idcat,
C.name,
C.public,
C.idcatlang
C.startidartlang
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 = '".$start_cat."'
ORDER
BY A.idtree";
$db->query($sql);
while ($db->next_record()) {
/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext,
a.idartlang AS idartlang
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
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db2->query($sql);
$flag = false;
while ($db2->next_record()&&!$flag) {
if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
{
$flag = true;
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$navitems[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"idart" => getIdart( $db->f("startidartlang") ),
"target" => $target,
"public" => $db->f("public"),
"idcatlang" => $db->f("idcatlang"));
}
}
}
}
return true;
}
$sql = "SELECT
A.idcat,
C.name,
C.public,
C.idcatlang
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()) {
/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext,
a.idartlang AS idartlang
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
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db2->query($sql);
$flag = false;
while ($db2->next_record() && !$flag) {
if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
{
$flag = true;
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$tmp_nav[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"public" => $db->f("public"),
"idcatlang" => $db->f("idcatlang"),
"target" => $target);
}
}
}
$tmp_nav[$idcat]["sub"] = $navitems;
$navitems = $tmp_nav;
/* Function call */
nav($parentid);
} // end function
$sql = "SELECT
A.idcat,
C.name,
C.public,
C.idcatlang
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() ) {
/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext,
a.idartlang AS idartlang
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
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db2->query($sql);
#$db2->next_record();
$flag = false;
while ($db2->next_record()&&!$flag) {
if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
{
$flag = true;
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$navitems[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"idart" => getIdart($db->f("startidartlang") ),
"target" => $target,
"public" => $db->f("public"),
"idcatlang" => $db->f("idcatlang"));
}
}
}
/* Create Navigation Array */
if(($sel_idcat=='')||($sel_idcat=='0')){
$cApiClient = new cApiClient($client);
$sel_idcat = $cApiClient->getProperty('navigation', 'idcat_homepage');
}
nav($sel_idcat);
/* Start Output buffer */
ob_start();
foreach ($navitems as $key => $data) {
/* 1. Navigation level */
if (checkCatPermission($data['idcatlang'],$data['public'])) {
$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'].'&idart='.$data['idart']));
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navfirst_on.html');
}elseif(is_array($data['sub'])){
$tpl->generate('templates/navfirst_open.html');
} else {
$tpl->generate('templates/navfirst_off.html');
}
/* 2. Navigation level */
if (is_array($data['sub'])) {
foreach ($data['sub'] as $key => $data) {
if (checkCatPermission($data['idcatlang'],$data['public'])) {
$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'].'&idart='.$data['idart']));
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navsecond_on.html');
}elseif(is_array($data['sub'])){
$tpl->generate('templates/navsecond_open.html');
} else {
$tpl->generate('templates/navsecond_off.html');
}
/* 3. Navigation level */
if (is_array($data['sub'])) {
foreach ($data['sub'] as $key => $data) {
if (checkCatPermission($data['idcatlang'],$data['public'])) {
$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'].'&idart='.$data['idart']));
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navthird_on.html');
}elseif(is_array($data['sub'])){
$tpl->generate('templates/navthird_open.html');
} else {
$tpl->generate('templates/navthird_off.html');
}
/* 4. Navigation level */
if (is_array($data['sub'])) {
foreach ($data['sub'] as $key => $data) {
if (checkCatPermission($data['idcatlang'],$data['public'])) {
$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'].'&idart='.$data['idart']));
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navfourth_on.html');
}elseif(is_array($data['sub'])){
$tpl->generate('templates/navfourth_open.html');
} else {
$tpl->generate('templates/navfourth_off.html');
}
/* 5. Navigation level */
if (is_array($data['sub'])) {
foreach ($data['sub'] as $key => $data) {
if (checkCatPermission($data['idcatlang'],$data['public'])) {
$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'].'&idart='.$data['idart']));
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navfifth_on.html');
} else {
$tpl->generate('templates/navfifth_off.html');
}
} // end if
} // end foreach
} // end if
} // end if
} // end foreach
} // end if
} // end if
} // end foreach
} // end if
} // end if
} // end foreach
} // end if
} // end if
} // end foreach
/* Read out buffer */
$html = ob_get_contents();
/* Clean buffer */
ob_end_clean();
/* Output buffer-contents */
echo $html;
?>
Ich bekomme keinen fehler, der rewrite funktioniert ganz normal, anur leider wird mir der Artikelname .html nicht angezeigt...
Wenn mir irggendjemand helfen könnte, wäre ich überaus dankbar, weil ich die Suche Funktion jetzt shon ne ganze Weile gequält habe und einfach nicht mehr weiter weiss....
Danke im vorraus !!
fehler mit php 5
Hallo Leute
Ich hab ein Problem. Mein Provider hat auf php 5 umgestellt. Seit da hab ich mit der modrewrite schwierigkeiten.
die Startseite wird normal angezeigt. Sobald ich eine andere Seite aufrufe erscheint die Fehlermeldung:
und mein ganzes Layout ist futsch.
Sobald ich in den Mandanteneinstellungen das mod rewrite deaktiviere sind die Fehlermeldungen weg.
Kennt jemand das problem oder kann mir helfen?
Vielen Dank
Gruss
cruncher
Ich hab ein Problem. Mein Provider hat auf php 5 umgestellt. Seit da hab ich mit der modrewrite schwierigkeiten.
die Startseite wird normal angezeigt. Sobald ich eine andere Seite aufrufe erscheint die Fehlermeldung:
Code: Alles auswählen
Warning: file_put_contents(/home/www/web/html/meinserver/cms/cache/locationstring-url-cache-1.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web/html/meinserver/contenido/includes/functions.pathresolver.php on line 382
Sobald ich in den Mandanteneinstellungen das mod rewrite deaktiviere sind die Fehlermeldungen weg.
Kennt jemand das problem oder kann mir helfen?
Vielen Dank
Gruss
cruncher
jo die fehlermeldung sagt doch eigentlich alles:
die datei
/home/www/web/html/meinserver/cms/cache/locationstring-url-cache-1.txt
ist schreibgeschützt oder kann nicht beschrieben werden. wahrscheinlich wurden bei der umstellung die rechte verändert - die txt datei einfach löschen (wird danach wieder neu erstellt) und sicherstellen dass das cache verzeichnis beschreibbar ist. wenn nicht wirst du eh noch ganz andere probleme haben (ich sage nur pseudocrons und große statistiktabellen).
also bitte mit der rechteverteilung des cms auseinandersetzen.
@macfive
das modul schaut eigentlich korrekt aus. du hast nicht zufällig irgend ein anderes modul am laufen, was ob_start und ob_end nutzt? das führt dann zu fehlern
die datei
/home/www/web/html/meinserver/cms/cache/locationstring-url-cache-1.txt
ist schreibgeschützt oder kann nicht beschrieben werden. wahrscheinlich wurden bei der umstellung die rechte verändert - die txt datei einfach löschen (wird danach wieder neu erstellt) und sicherstellen dass das cache verzeichnis beschreibbar ist. wenn nicht wirst du eh noch ganz andere probleme haben (ich sage nur pseudocrons und große statistiktabellen).
also bitte mit der rechteverteilung des cms auseinandersetzen.
@macfive
das modul schaut eigentlich korrekt aus. du hast nicht zufällig irgend ein anderes modul am laufen, was ob_start und ob_end nutzt? das führt dann zu fehlern
Suchmaschinenfreundliche URLS durch Advanced ModRewrite 4.6.x
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
Korrekte Pfadangabe für Unterverzeichnis
Grundsätzlich funktionert das MR bei mir klasse. Aber ich will den Pfad verkürzen und kriege es nicht hin.
Benutze ich die Hauptdomain auf dem Server ist alles bestens:
http://www.hauptdomain.de/unterverzeich ... tenido/cms
Nun möchte ich aber eine andere Domain auf das Unterverzeichnis routen:
http://www.alias.de
= http://www.hauptdomain.de/unterverzeich ... tenido/cms
Wenn ich das ohne MR mache, bekomme ich ein tadellos funktionierendes CMS mit Links nach dem Schema:
http://www.alias.de/frontcontent.php?567657
Mit MR funzt es aber nicht. Ich bekomme zwar korrekte Links angezeigt, aber sie werden nicht gefunden. Beim Mouseover sehe ich also den Pfad:
http://www.alias.de/kategorie/artikel.html
Beim Klicken wird die Seite aber nicht gefunden.
Jemand eine Idee was falsch läuft?
Benutze ich die Hauptdomain auf dem Server ist alles bestens:
http://www.hauptdomain.de/unterverzeich ... tenido/cms
Nun möchte ich aber eine andere Domain auf das Unterverzeichnis routen:
http://www.alias.de
= http://www.hauptdomain.de/unterverzeich ... tenido/cms
Wenn ich das ohne MR mache, bekomme ich ein tadellos funktionierendes CMS mit Links nach dem Schema:
http://www.alias.de/frontcontent.php?567657
Mit MR funzt es aber nicht. Ich bekomme zwar korrekte Links angezeigt, aber sie werden nicht gefunden. Beim Mouseover sehe ich also den Pfad:
http://www.alias.de/kategorie/artikel.html
Beim Klicken wird die Seite aber nicht gefunden.
Jemand eine Idee was falsch läuft?
die htaccess liegt im mandantenverzeichnis? darin ist die rewrite base auskommentiert? in der config.php ist bei den mr settings das rootdir auf "/" gestellt?
Suchmaschinenfreundliche URLS durch Advanced ModRewrite 4.6.x
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
Module: Modul Download Liste 4.6 | Halbautomatischer Artikel-Seitenwechsel 4.6.x
Amazon Wunschzettel
hm, welches modul könnte denn das benutzen, ich hab nur ein druckmodul drin das mr und sonst eigentlich nur die standard module des beispielmandanten, keine ahnung, ob dort etwas in der art verbaut ist.
das kuriose ist wie gesagt, dass es bei der hilfsnavi und mittlerweile auch bei der BottomNavi ja einwandfrei funktioniert
Vielleicht leigt es auch an der functions.navigation.php
hier der code:
das kuriose ist wie gesagt, dass es bei der hilfsnavi und mittlerweile auch bei der BottomNavi ja einwandfrei funktioniert
Vielleicht leigt es auch an der functions.navigation.php
hier der code:
Code: Alles auswählen
<?php
// create Navigation array for one level
function createNavigationArray($start_id, $db)
{
cInclude("classes","class.frontend.permissions.php");
cInclude("classes","class.frontend.groups.php");
cInclude("classes","class.frontend.users.php");
global $user, $cfg, $client, $lang, $auth;
$navigation = array();
$FrontendPermissionCollection = new FrontendPermissionCollection;
$sql = "SELECT
A.idcat,
C.name,
C.public,
C.idcatlang,
C.startidartlang
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 = '$start_id'
ORDER BY
A.idtree";
$db->query($sql);
while($db->next_record())
{
$cat_id = $db->f("idcat");
$cat_idlang = $db->f("idcatlang");
$startidartlang = $db->f("startidartlang");
$visible=false;
if($db->f("public")!=0){
$visible = true;
}elseif(($auth->auth['uid']!='')&&($auth->auth['uid']!='nobody')){
$FrontendGroupMemberCollection = new FrontendGroupMemberCollection;
$FrontendGroupMemberCollection->setWhere("idfrontenduser",$auth->auth['uid']);
$FrontendGroupMemberCollection->query();
$groups = array();
while ($member = $FrontendGroupMemberCollection->next()){
$groups[] = $member->get("idfrontendgroup");
}
}
if(count($groups)>0){
for($i=0;$i<count($groups);$i++){
if($FrontendPermissionCollection->checkPerm($groups[$i],'category','access',$cat_idlang, true)){
$visible=true;
}
}
}
if($visible){
$db2 = new DB_Contenido;
$sql2 = "SELECT
a.idart
FROM
".$cfg["tab"]["art_lang"]." AS a
WHERE
a.idartlang = '".$startidartlang."'";
$db2->query($sql2);
while($db2->next_record()){
$idart = $db2->f("idart");
}
$navigation[$cat_id] = array("idcat" => $cat_id,
"name" => $db->f("name"),
"target" => '_self', # you can not call getTarget($cat_id, &$db) at this point with the same db instance!
"idart" => $idart,
"public" => $db->f("public"));
}
} // end while
$db->free();
$db2->free();
return $navigation;
}
/**
* Return target of a given category id
*/
# deprecated
function getTarget($cat_id, $db) {
global $cfg, $client, $lang;
$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 = '".$cat_id."' AND
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db->query($sql);
$db->next_record();
$target = ( $db->f('ext') == 0 ) ? '_self' : '_blank';
$db->free();
return $target;
}
/**
* Return true if $parentid is parent of $catid
*/
function isParent($parentid, $catid, $db) {
global $cfg, $client, $lang;
$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 = '".$catid."'";
$db->query($sql);
$db->next_record();
//echo "<pre>"; echo $sql; echo "</pre>";
$pre = $db->f("parentid");
if($parentid == $pre)
{
return true;
}
else
{
return false;
}
}
function getParent($preid, &$db) {
global $cfg, $client, $lang;
$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 = '".$preid."'";
$db->query($sql);
if ($db->next_record())
{
return $db->f("parentid");
}else
{
return false;
}
}
function getLevel($catid, &$db)
{
global $cfg, $client, $lang;
$sql = "SELECT
level
FROM
".$cfg["tab"]["cat_tree"]."
WHERE
idcat = '".$catid."' ";
$db->query($sql);
if ($db->next_record())
{
return $db->f("level");
}else
{
return false;
}
}
/**
* Return path of a given category up to a certain level
*/
function getCategoryPath($cat_id, $level, $reverse = true, &$db) {
$root_path = array();
array_push($root_path, $cat_id);
$parent_id = $cat_id;
while (getLevel($parent_id, $db) != false AND getLevel($parent_id, $db) > $level AND getLevel($parent_id, $db) >= 0)
{
$parent_id = getParent($parent_id, $db);
if ($parent_id != false)
{
array_push($root_path, $parent_id);
}
}
if ($reverse == true)
{
$root_path = array_reverse($root_path);
}
return $root_path;
}
/**
* Return location string of a given category
*/
function getLocationString($iStartCat, $level, $seperator, $sLinkStyleClass, $sTextStyleClass, $fullweblink = false, $reverse = true, $mod_rewrite = true, $db)
{
global $sess, $cfgClient, $client;
$aCatPath = getCategoryPath($iStartCat, $level, $reverse, $db);
#print_r($aCatPath);
if(is_array($aCatPath) AND count($aCatPath) > 0)
{
$aLocation = array();
foreach($aCatPath as $value)
{
if (!$fullweblink)
{
if ($mod_rewrite == true)
{
$linkUrl = $sess->url("index-a-$value.html");
}else
{
$linkUrl = $sess->url("front_content.php?idcat=$value");
}
}else
{
if ($mod_rewrite == true)
{
$linkUrl = $sess->url($cfgClient[$client]["path"]["htmlpath"] . "index-a-$value.html");
}else
{
$linkUrl = $sess->url($cfgClient[$client]["path"]["htmlpath"] . "front_content.php?idcat=$value");
}
}
#$linkUrl = $sess->url("index-a-$idcat.html");
$name = getCategoryName($value, $db);
$aLocation[] = '<a href="'.$linkUrl.'" class="'.$sLinkStyleClass.'"><nobr>'.$name.'</nobr></a>';
}
}
$sLocation = implode($seperator, $aLocation);
$sLocation = '<span class="'.$sTextStyleClass.'">'.$sLocation.'</span>';
return $sLocation;
}
/**
*
* get subtree by a given id
*
* @param int $idcat Id of category
* @return array Array with all deeper categories
*
* @copyright four for business AG <www.4fb.de>
*/
function getSubTree($idcat_start, $db)
{
global $client, $cfg;
$sql = "SELECT
B.idcat, A.level
FROM
".$cfg["tab"]["cat_tree"]." AS A,
".$cfg["tab"]["cat"]." AS B
WHERE
A.idcat = B.idcat AND
idclient = '".$client."'
ORDER BY
idtree";
#echo "<pre>$sql</pre>";
$db->query($sql);
$i = false;
while ( $db->next_record() ) {
/*if ($db->f("parentid") < $idcat_start) { // ending part of tree
$i = 0; //echo "parent<<br>";
}
if ($db->f("idcat") == $idcat_start) { // starting part of tree
$i = 1; //echo "idcat ==<br>";
}*/
if ($db->f("idcat") == $idcat_start)
{
$curLevel = $db->f("level");
$i = true;
} else
{
if ($db->f("level") <= $curLevel)
{ // ending part of tree
$i = false;
}
}
if ($i == true) { //echo "true"; echo $db->f("idcat"); echo "<br>";
$deeper_cats[] = $db->f("idcat");
}
}
return $deeper_cats;
}
function getTeaserDeeperCategories($iIdcat, $db)
{
global $client, $cfg, $lang;
$sql = "SELECT
B.parentid, B.idcat
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
C.idlang = $lang AND
C.visible = '1' AND
B.idclient = $client
ORDER BY
idtree";
$db->query($sql);
$i = false;
while ( $db->next_record() ) {
/*if ($db->f("parentid") < $iIdcat) { // ending part of tree
$i = 0; //echo "parent<<br>";
}
if ($db->f("idcat") == $iIdcat) { // starting part of tree
$i = 1; //echo "idcat ==<br>";
}*/
if ($db->f("idcat") == $iIdcat)
{
$curLevel = $db->f("level");
$i = true;
} else
{
if ($curLevel == $db->f("level"))
{ // ending part of tree
$i = false;
}
}
if ($i == true) { //echo "true"; echo $db->f("idcat"); echo "<br>";
$deeper_cats[] = $db->f("idcat");
}
}
return $deeper_cats;
}
/**
*
* get subtree by a given id, without protected and invisible categories
*
* @param int $idcat Id of category
* @return array Array with all deeper categories
*
* @copyright four for business AG <www.4fb.de>
*/
function getProtectedSubTree($idcat_start, $db)
{
global $client, $cfg, $lang;
$sql = "SELECT
B.parentid, B.idcat
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
C.idlang = '".$lang."' AND
C.visible = '1' AND
C.public = '1' AND
B.idclient = '".$client."'
ORDER BY
idtree";
//echo "<pre>$sql</pre>";
$db->query($sql);
$i = false;
while ( $db->next_record() ) {
/* if ($db->f("parentid") < $idcat_start) { // ending part of tree
$i = 0; //echo "parent<<br>";
}
if ($db->f("idcat") == $idcat_start) { // starting part of tree
$i = 1; //echo "idcat ==<br>";
}*/
if ($db->f("idcat") == $idcat_start)
{
$curLevel = $db->f("level");
$i = true;
} else
{
if ($curLevel == $db->f("level"))
{ // ending part of tree
$i = false;
}
}
if ($i == true) { //echo "true"; echo $db->f("idcat"); echo "<br>";
$deeper_cats[] = $db->f("idcat");
}
}
return $deeper_cats;
}
/**
* Return category name
*/
function getCategoryName($cat_id, &$db) {
global $cfg, $client, $lang;
$sql = "SELECT
*
FROM
".$cfg["tab"]["cat"]." AS A,
".$cfg["tab"]["cat_lang"]." AS B
WHERE
A.idcat = B.idcat AND
A.idcat = '$cat_id' AND
A.idclient = '$client' AND
B.idlang = '$lang'
";
//echo "<pre>$sql</pre>";
$db->query($sql);
if ($db->next_record())
{
$cat_name = $db->f("name");
return $cat_name;
}
else
{
return '';
}
} // end function
// get direct subcategories of a given category
function getSubCategories($parent_id, $db) {
$subcategories = array();
global $cfg, $client, $lang;
$sql = "SELECT
A.idcat
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
C.public = '1' AND
B.parentid = '$parent_id'
ORDER BY
A.idtree";
$db->query($sql);
//echo "<pre>$sql</pre>";
while ( $db->next_record() ) {
$subcategories[] = $db->f("idcat");
} // end while
return $subcategories;
} // end function
// get direct subcategories with protected categories
function getProtectedSubCategories($parent_id, $db) {
$subcategories = array();
unset($subcategories);
global $cfg, $client, $lang;
$sql = "SELECT
A.idcat
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
B.parentid = '$parent_id'
ORDER BY
A.idtree";
$db->query($sql);
//echo "<pre>$sql</pre>";
while ( $db->next_record() ) {
$subcategories[] = $db->f("idcat");
} // end while
return $subcategories;
} // end function
function checkCatPermission($idcatlang,$public) {
#Check if current user has permissions to access cat
cInclude("classes","class.frontend.permissions.php");
cInclude("classes","class.frontend.groups.php");
cInclude("classes","class.frontend.users.php");
global $auth;
$FrontendPermissionCollection = new FrontendPermissionCollection;
$visible=false;
if($public!=0){
$visible = true;
}elseif(($auth->auth['uid']!='')&&($auth->auth['uid']!='nobody')){
$FrontendGroupMemberCollection = new FrontendGroupMemberCollection;
$FrontendGroupMemberCollection->setWhere("idfrontenduser",$auth->auth['uid']);
$FrontendGroupMemberCollection->query();
$groups = array();
while ($member = $FrontendGroupMemberCollection->next()){
$groups[] = $member->get("idfrontendgroup");
}
}
if(count($groups)>0){
for($i=0;$i<count($groups);$i++){
if($FrontendPermissionCollection->checkPerm($groups[$i],'category','access',$idcatlang, true)){
$visible=true;
}
}
}
return $visible;
}
?>
Hallo,
danke für dieses modul, geht sehr gut. ein kleines problem hab ich noch, vielleicht hat jemand einen tip.
derzeit schauen meine links so aus:
http://192.168.2.201/cms_internet/en/products/
Ziel ist, das die links so ausschauen:
http://192.168.2.201/en/products/
am debian server mit apache2 liegt die installation am /var/www/cms_internet/.
danke für jeden tip,
lg, tom
danke für dieses modul, geht sehr gut. ein kleines problem hab ich noch, vielleicht hat jemand einen tip.
derzeit schauen meine links so aus:
http://192.168.2.201/cms_internet/en/products/
Ziel ist, das die links so ausschauen:
http://192.168.2.201/en/products/
am debian server mit apache2 liegt die installation am /var/www/cms_internet/.
danke für jeden tip,
lg, tom
Habe soeben ein Update von der 4.6.8MR auf die aktuelle 4.6.15. Saubere Arbeit. Gefällt mir gut.
Ich habe allerdings bei diesem riesigen Thread den Faden verloren. Mir ist nämlich aufgefallen, dass ich irgendwann einmal die Funktion getIdart() in die Datei cms/functions.navigation.php eingebaut habe.
Jetzt bin ich mir nicht mehr sicher. Hatte diese Funktion etwas mit ModRewrite zu tun?
Die Dateiendung .html fehlt auch. Ist das so gewünscht, oder hat sich bei mir ein Fehler eingeschlichen?
Gruß und jute Nacht
MyAccount
Ich habe allerdings bei diesem riesigen Thread den Faden verloren. Mir ist nämlich aufgefallen, dass ich irgendwann einmal die Funktion getIdart() in die Datei cms/functions.navigation.php eingebaut habe.
Code: Alles auswählen
if (!function_exists("getIdart") ) {
function getIdart ( $idartlang ) {
global $cfg;
$db = new DB_Contenido;
$sql = "SELECT idart FROM " . $cfg["tab"]["art_lang"] . " WHERE idartlang = '" . (int)$idartlang . "'";
$db->query($sql);
$db->next_record();
return (int)$db->f("idart");
}
}
Die Dateiendung .html fehlt auch. Ist das so gewünscht, oder hat sich bei mir ein Fehler eingeschlichen?
Gruß und jute Nacht
MyAccount