Cześć
Aha44.
Późno bo późno, ale miałem trochę zajęć, więc nie mogłem odpowiedzieć. Ten komunikat cytowany przez Ciebie jest to tylko ostrzeżenie, a nie błąd, i informuje Cię o tym, że nie można dzielić przez
0 (zero) o czym uczą już w podstawówce. Ale to nie tyczy się Ciebie, tylko tak dla przypomnienia dla innych. Analizowałem kod pliku "
galleryshow.php" i poniżej trochę więcej kodu dla rozjaśnienia tematu:
Kod: |
//Total of record
$RecordCount = $zoom->_gallery->getNumOfImages();//Number of files in gallery
$endRow = $startRow + $zoom->_CONFIG['PageSize'] -1;
if ($endRow >= $RecordCount) {
$endRow = $RecordCount - 1;
}
//Set Maximum Page
$MaxPage = ceil($RecordCount % $zoom->_CONFIG['PageSize']);
if ($RecordCount % $zoom->_['PageSize'] == 0) {
$MaxPage = ceil($RecordCount / $zoom->_CONFIG['PageSize']);
} else {
$MaxPage = ceil($RecordCount / $zoom->_CONFIG['PageSize']);
}
//Set the counter start
$CounterStart = 1;
//Counter End
$CounterEnd = $MaxPage;
?>
|
Objaśnienie funkcji i zmiennych:
Niektóre z nich zawierają wartości określone w konfiguracji galerii
$RecordCount = liczba wszystkich obrazków w galerii.
$MaxPage = maksymalna ilość stron z galerią
$zoomConfig['
PageSize'] = "
9"; to jest ustawienie zmiennej
$zoom->_['
PageSize'], czyli liczba obrazków na jednej stronie, która podejrzewam że jest u Ciebie ustawiona prawidłowo, bo masz po
9 (dziewięć) obrazków na stronie. Określona w "
/components/com_zoom/etc/zoom_config.php"
Przeanalizujemy część kodu:
Kod: |
if ($RecordCount % $zoom->_['PageSize'] == 0) {
$MaxPage = ceil($RecordCount / $zoom->_CONFIG['PageSize']);
} else {
$MaxPage = ceil($RecordCount / $zoom->_CONFIG['PageSize']);
}
|
Objaśnienie funkcji i zmiennych, oraz zdefiniowanych przeze mnie wartości:
(
liczby hipotetyczne, czyli zakładam ze masz 150 obrazków w galerii i po 9 na stronę):
if - jeśli jakiś warunek jest spełniony.
else - rozszerza możliwości instrukcji
if do sytuacji kiedy warunek opisany przy instrukcji
if ma wartość
FALSE (nie został spełniony)
$RecordCount =
150 (liczba wszystkich obrazków w galerii)
$zoom->_['PageSize'] =
9 (liczba obrazków na jednej stronie)
ceil — Funkcja która zaokrągla ułamki w górę
% - Modulo(Reszta z dzielenia
150 przez
9)
/ - Dzielenie(Operator logiczny dzielenia)
Kod: |
if (150 % 9 = 0) {//jesli reszta z dzielenia 150 przez 9 daje nam 0 (zero) wowczas
$MaxPage = ceil(150 / 9);// maksymalna liczba stron to wynik dzielenia 150 przez 9, czyli 16,67, po zaokragleniu w górę
(cell) daje nam 17
} else {//jesli reszta z dzielenia 150 przez 9 nie daje nam 0 (zero) wowczas
$MaxPage = ceil(150 / 9);// maksymalna liczba stron to wynik dzielenia 150 przez 9, czyli 16,67, po zaokragleniu w górę
(cell) daje nam 17
}
|
...czyli wynikiem będzie zawsze liczba 17, czyli maksymalna ilość stron wynosi 17. Teraz wyskakuje Ci ostrzeżenie tuż nad galerią, że nie można dzielić przez 0 (zero), co może oznaczać, że albo w pliku "
zoom_config.php" masz w zmiennej "
$zoomConfig['
PageSize']" wartość
0 (zero), co możemy wykluczyć (lub nie), lub skrypt nie odczytuje tej wartości poprawnie, i zamiast liczby
9 (dziewięć) wstawia
0 (zero). I dzielenie
150 przez
0 (
Division by zero) jest niewykonalne.
Jak sobie z tym poradzić?. Ja myślę że na 2 sposoby:
- 1. Ustawić na sztywno zmienną "$zoomConfig['PageSize']" w pliku "galleryshow.php" np. tak:
Kod: |
$zoom->_CONFIG['PageSize'] = "9";
if ($RecordCount % $zoom->_['PageSize'] == 0) {
$MaxPage = ceil($RecordCount / $zoom->_CONFIG['PageSize']);
} else {
$MaxPage = ceil($RecordCount / $zoom->_CONFIG['PageSize']);
}
|
...jeśli będziesz chciał zwiększyć lub zmniejszyć ilość obrazków na stronie, możesz to zmienić w tej zmiennej na początku kodu, o ile to wszystko zadziała. Ja nie mam tej galerii, więc nie sprawdzę.
- 2. Drugi sposób to wyłączenie raportowania błędów poprzez dodanie funkcji error_reporting i ustawienie jej wartości na 0 (zero):
Kod: |
<?php
// wyłączenie raportowania bledow (parametr 0)
error_reporting(0);//error_reporting ( [int $wartość] );
?>
|
Wstaw tę funkcję w plik "galleryshow.php", lub w "zoom_config.php". Znaczniki PHP potrzebne są tylko wtedy, jeśli wstawiasz to pomiędzy kod HTML. Jeśli nie, wystarczy tylko wpisać:
Kod: |
// wyłaczenie raportowania bledow
error_reporting(0);
|
Myślę, że powinno pomóc. Nie tylko Tobie, bo po wpisaniu części treści komunikatu do
Google, wyświetliło mi linki do
50,700 stron, i to nie tylko polskich. Czekam na odzew i pozdrawiam.
Jokris.