PDA

Zobacz pełną wersję : Virtuemart - Biała Strona?



Seavolv
16-07-2008, 10:14
Zainstalowałem sobie VM i cały proces instalacji aktualizacji do VM 1.1.1 poszedł bezproblemowo.
Z panelu Admina mogę konfigurować sklep i wszystko wygląda ok dane się zapisują itp. Problem zaczyna się gdy chcę wejść do sklepu wybierając odnośnik z menu na głównej wtedy wyskakuje biała strona.

stone
16-07-2008, 11:06
Być może jest wyłączone w konfiguracji php raportaowanie błędów i dlatego nie widzisz co jest źle
Dodaj w pliku index.php skórki na początku
error_reporting(E_ALL);
i zobacz czy coś się wyświetli.

Seavolv
16-07-2008, 11:40
A możesz mi dokładniej powiedzieć gdzie to mam niby wkleić w index.php skórki strony?

stone
16-07-2008, 12:23
Zaraz po znaku <?php

Seavolv
16-07-2008, 12:43
Nic to nie pomogło nadal biała strona nie ma żadnej informacji
http://se-forum.pl/katalog-projekt.html

stone
16-07-2008, 12:45
fakt
Jak zaglądniesz w kod strony to zobaczysz ze kod Joomli nie jest analizowany.
Może wyłącz na początek SEF, a potem włącz tryb debug

Seavolv
16-07-2008, 12:48
O udało się wywołać błąd. Możesz zajrzeć pod w/w link.
kawałek kodu z linią 159 menu.php ten fragment na czerwono to linia 159


// second pass - collect 'open' menus
$open = array( $Itemid );
$count = 20; // maximum levels - to prevent runaway loop
$id = $Itemid;
while (--$count) {
if (isset($rows[$id]) && $rows[$id]->parent > 0) {
$id = $rows[$id]->parent;
$open[] = $id;
} else {
break;
}
}

$class_sfx = null;

mosRecurseListMenu( 0, 0, $children, $open, $indents, $class_sfx, $hilightid );

echo "<br/>"; ?>

<script type="text/javascript">
<!--
var obj_cssMenu1 = new CSSMenu("cssMenu1");
obj_cssMenu1.setTimeouts(400, 200, 800);
obj_cssMenu1.setSubMenuOffset(0, 0, 0, 0);
obj_cssMenu1.setHighliteCurrent(true);
obj_cssMenu1.setAnimation('none');
obj_cssMenu1.show();
//-->
</script>

<?php echo "</div>";
}

/**
* Utility function to recursively work through a vertically indented
* hierarchial menu
*/
function sefRelToAbs($value) {
return JRoute::_($value);
}

function mosRecurseListMenu( $id, $level, &$children, $open, &$indents, $class_sfx, $highlight ) {
global $Itemid;
global $HTTP_SERVER_VARS, $mosConfig_live_site;

if (@$children[$id]) {
$n = min( $level, count( $indents )-1 );

echo $indents[$n][0];

foreach ($children[$id] as $row) {


switch ($row->type) {
case 'separator':
// do nothing
$row->link = "seperator";

break;

case 'url':
if ( eregi( 'index.php\?', $row->link ) ) {
if ( !eregi( 'Itemid=', $row->link ) ) {
$row->link .= '&Itemid='. $row->id;

}
}
break;

default:
$row->link .= "&Itemid=$row->id";
break;
}

$li = "\n".$indents[$n][1] ;
$current_itemid = trim( JArrayHelper::getValue( $_REQUEST, 'Itemid', 0 ) );
if ($row->link != "seperator" &&
$current_itemid == $row->id ||
$row->id == $highlight ||
(sefRelToAbs( substr($_SERVER['PHP_SELF'],0,-9) . $row->link)) == $_SERVER['REQUEST_URI'] ||
(sefRelToAbs( substr($_SERVER['PHP_SELF'],0,-9) . $row->link)) == $HTTP_SERVER_VARS['REQUEST_URI']) {
$li = "<li>";
}
echo $li;

echo mosGetLink( $row, $level, $class_sfx );
mosRecurseListMenu( $row->id, $level+1, $children, $open, $indents, $class_sfx, "" );
echo $indents[$n][2];

}
echo "\n".$indents[$n][3];

}
}

function getParentRow($rows, $id) {
if (isset($rows[$id]) && $rows[$id]) {
if($rows[$id]->parent > 0) {
return $rows[$id]->parent;
}
}
return -1;
}

stone
16-07-2008, 12:55
Wydaje mi sie z bład dotyczy właśnie SEF, być VM nie jest kompatybilny do końca z tym. Wyłącz i sprawdź
I błąd dotyczy lini 159

Seavolv
16-07-2008, 13:01
Poprawiłem ten wyżej post, A co do wyłączenia SEF nic nie daje wyłączyłem i nadal to samo.

stone
16-07-2008, 13:05
hmm, wszystko sie rozbija o to sefreltoabs(), gdyż zostało już to zadeklarowane wcześniej przez VM. Rozumiem że skórka agriculture_15 to jest jakaś dodatkowa. Zmień skórkę na którąś z domyślnych i zobacz czy pomoże. Jeżeli pomoże porówanj kod pliku menu.php tych dwóch skórek, może coś Ci się nasunie

Seavolv
16-07-2008, 13:15
Na innej skórze działa więc problem w leży w skórce tylko jak ją poprawić.

EDIT Już sobie poradziłem wszystko smiga rozwiązanie znalazłem na jakimś zachodnim forum.

stone
17-07-2008, 11:54
musisz spróbować porównać kod pliku z działającej skórki z tym z tej złej, może coś Ci się nasunie

Seavolv
17-07-2008, 12:00
Znalazłem rozwiązanie na jakimś zachodnim forum. Więc do zamknięcia

stone
17-07-2008, 12:03
To podaj je od razu, następna osoba nie będzie musiała szukać :)

Seavolv
17-07-2008, 12:57
Ten fragment w menu.php


/**
* Utility function to recursively work through a vertically indented
* hierarchial menu
*/
function sefRelToAbs($value) {
return JRoute::_($value);
}


Zastąpiłem tym


/**
* Utility function to recursively work through a vertically indented
* hierarchial menu
*/
if (!function_exists('sefRelToAbs')) {
function sefRelToAbs($value) {
// Replace all &amp; with & as the router doesn't understand &amp;
$url = str_replace('&amp;', '&', $value);
if(substr(strtolower($url),0,9) != "index.php") return $url;
$uri = JURI::getInstance();
$prefix = $uri->toString(array('scheme', 'host', 'port'));
return $prefix.JRoute::_($url);
}
}