components/com_content/router.php felülbírálásának létrehozása - hogyan?

Több
7 éve 8 hónapja - 7 éve 8 hónapja #10065 Írta: Zotius
Adott egy oldal, ahol a menüpont egy BreezingForms űrlap megjelenítését végzi.
Az űrlapot megjelenítő oldalon a következő hibaüzenet jelenik meg:
„Notice: Undefined index: view in /home/tulajneve/domains/domainneve/public_html/components/com_content/router.php on line 74”
Először a php.ini-ben a figyelmeztetések elnyomásával próbálkoztam, sikertelenül.
Vagyis a hiba jelentése: a 'view' indexnek nincs definiált értéke, amikor az űrlapot behozó menüpont működésbe lép. Tudni kell még ehhez, hogy a BreezingForms-nak is van saját router.php-je a com_content/com_breezingforms mappában, de a hiba az eredeti, joomlás router.php-t használatakor keletkezik.
Ezután belenéztem a router.php-be, ahol ezek a sorok okozzák a problémát:
Code:
if (($menuItem instanceof stdClass) && isset($query['id']) && $menuItem->query['view'] == $query['view'] /* <------------ ez a sor! */ && $menuItem->query['id'] == (int) $query['id'] ) { unset($query['view']); if (isset($query['catid'])) { unset($query['catid']); } if (isset($query['layout'])) { unset($query['layout']); } unset($query['id']); return $segments; }
A "Notice: ..." üzenetet végül két utasítás beillesztésével sikerült megoldani:
Code:
/* javítás/kiegészítés itt: */ $menuItem->query['view'] = $query['view']; /* értékadás 1. */ $menuItem->query['id'] = 0 ; /* értékadás 2. */ [code]if (($menuItem instanceof stdClass) && isset($query['id']) && $menuItem->query['view'] == $query['view'] /* <------------ ez a sor! */ && $menuItem->query['id'] == (int) $query['id'] )

Félő, hogy egy legközelebbi Joomla frissítésnél az általam megbuherált router.php felülírásakor a hiba ismét visszajön.
Kérdés: Hogyan lehet/kell elkülöníteni a megbuherált router.php-t a későbbi felülírások elleni védelem érdekében?
Utolsó szerkesztés: 7 éve 8 hónapja Zotius által.

Jelentkezz be, hogy te is részt vehess beszélgetésben!

Több
7 éve 8 hónapja #10067 Írta: Balázs
Szerintem egy sima notice blokkolható a Globális konfiguráció -> Kiszolgáló -> Kiszolgáló beállításai -> Hibajelentés -> Nincs értékkel.
Másrészről, mivel ez az értesítés tudomásom szerint nem egy globális probléma, így a véleményem szerint a "hiba" BreezingFormsban keresendő.
A globális felülírás tervezve volt de, ha jól tudom még mindig nem került be a rendszerbe, így egy frissítés biztos, hogy gyalulja a módosításaidat.

Ha bizalmas információt szeretnél közölni az adminokkal, akkor tedd az üzeneted tartalmát a [ confidential ][ /confidential ] címkék közé (szóközök nélkül).

Joomla! tanácsadás, oktatás, fejlesztés - joomlabs.hu

Jelentkezz be, hogy te is részt vehess beszélgetésben!

Több
7 éve 8 hónapja - 7 éve 8 hónapja #10068 Írta: Zotius
A "Globális konfiguráció -> Kiszolgáló -> Kiszolgáló beállításai -> Hibajelentés -> Nincs" így van van beállítva. Ez a megoldás nem nyert :(
Ugyanakkor jelzem, hogy egy másik oldalnál pedig ehhez kísértetiesen hasonlító, vagy pontosabban ugyanilyen figyelmeztető üzenet jön elő, ha a menüben egy SobiPro katalógusra mutató menüpont is van. Az eltérés csupán annyi, hogy egy másik router.php-ben lévő "hibát" mutat a "Notice: ..." figyelmeztető üzenet.
A két eset között annyi az azonosság, hogy a másik oldalnál ugyancsak egy breezinforms űrlapra mutató menüpont esetén jelenik meg.

A Joomla dokumentációban olvastam ehhez hasonló igényekkel - override lehetőséggel - kapcsolatos irományokat.
A gyökérben, illetve a sablon mappában létrehozott "code" alkönyvtárba helyezett fájllal történő megoldás sikertelen volt.
Utolsó szerkesztés: 7 éve 8 hónapja Zotius által. Indoklás: kiegészítés

Jelentkezz be, hogy te is részt vehess beszélgetésben!