Üdv Mindenkinek!
Egy oldalon amit éppen csinálgatok az alábbi hibaüzenet kapom:
Invalid argument supplied for foreach() in /site.hu/includes/menu.inc on line 743.
A Taxonomy Menu-vel hoztam létre blokkokat ami eddig működött is. Ma egy újabb menu blokkot akartam létre hozni, de miután megjelent rájöttem ez nem az ami - és ahol - nekem kell így töröltem a szótárat. Ekkor jelent meg a warning.
Röviden a fenti modul úgy működik, hogy menüblokkot lehet létre hozni már meglevő szótárak alapján, amik aztán megjelennek a blokkoknál.
Tehát itt valóban elkövettem egy ballépést, miszerint előbb a blokkott kellett volna törölnöm, majd a tax,-ot de hát nem így történt.
Ezek után láttam, hogy a fenti modulból van újabb verzió, frissítettem hátha ez segít, de nem segített.
az idevonatkozó kód részlet a következő:
function menu_tree_output($tree) { $output = ''; $items = array(); // Pull out just the menu items we are going to render so that we // get an accurate count for the first/last classes. (ez itt a 734.sor) foreach ($tree as $data) { if (!$data['link']['hidden']) { $items[] = $data; } } $num_items = count($items); foreach ($items as $i => $data) { $extra_class = array(); if ($i == 0) { $extra_class[] = 'first'; } if ($i == $num_items - 1) { $extra_class[] = 'last'; } $extra_class = implode(' ', $extra_class); $link = theme('menu_item_link', $data['link']); if ($data['below']) { $output .= theme('menu_item', $link, $data['link']['has_children'], menu_tree_output($data['below']), $data['link']['in_active_trail'], $extra_class); } else { $output .= theme('menu_item', $link, $data['link']['has_children'], '', $data['link']['in_active_trail'], $extra_class); } } return $output ? theme('menu_tree', $output) : ''; }
Arra gondoltam, hogy a modul hatására módosult ez a core inc, ezért egy "szűzzel" felülírtam. Ez sem segített, a warning továbbra is ott van.
Kérdésem: mit lehet ezzel tenni, hogy helyre álljon a világbéke?
ui. természetesen nincs adatbázis mentésem
próbáld adatbázisban kikapcsolni a blokkjaidat
talán a {block} táblában van jegyezve ez valahol. nem tudom. nézd meg a block.module -ban hogyan csinálja :) (beszt pp: az opensourceban az a jó, hogy ha nem tudod hogy működik valami, akkor megnézed:)
ha drush -al törölteted az összes cachet, nem veszi észre a taxonomy_menu hogy hiányoznak a szótárak és talán el is tűnteti a rájuk épített menüt/blokkot?
ha ez nem megy, akkor sajnos kiscicák vérét kell ontani.
bele kell nyúljál a core menu.inc -be, hogy ne szaladjon ebbe a hibába. rakjad azt az egész foreach ágat egy if -be, az a feltétel, hogy if (is_array($tree)) .. ezzel elkerülöd majd, hogy invalid argumentet kapj, kikapcsolod a blokkokat és kész. minden kesst törölj is azért, de miután a blokkoktól megszabadultál, rögvest csináld vissza a menu.inc -et!
-
clear: both;
Nem a blokkok okozták a galibát
Viszont kössz a segítséget és azt is, hogy kinézted belőlem, hogy megértem a block.module működését :) Viszont ha érteném valószínű nem tennék fel ilyen jellegű kérdéseket :)
Ezen kívül a mészárlásban sem vagyok jártas, bár pont ezt az egyet értettem, - mármint a feltételes elágazást - azokból amit említettél.
Az, hogy nem a blokkok okozták, arra alapozom hogy miután töröltem őket még mindig fent állt a warning. Délelőtt már olvastam a hsz-ed, de csak most itthon volt időm és energiám értelmezni amiket írtál. Szóval a blokkok törlése után elkezdtem törölgetni a szótárakat is, illetve az első eltávolítása után eltűnt a warning. Amit úgy élek meg, hogy ez volt a hiba forrása.
Egyébként négy szótár, mindegyik külön tartalomtípusban volt. A hiba akkor jelentkezett amikor egy ötödik tax.-ot is felvettem a meglévő tartalomtípusok egyikéhez, ahhoz amelyiknek az eredeti szótárát töröltem. Bár erre vonatkozóan nem találtam sehol utalást, hogy nem lehetne - miért is ne lehetne? - egyazon tartalomtípushoz több szótárat kapcsolni.
Egy a tuti: ebben a (taxonómia) témában jobban el kell merüljek.
Kössz még egyszer a segítséget!
Ez a taxonomy menu okossága,
Ez a taxonomy menu okossága, néha elég egy menu rebuild, de volt már olyan, hogy a összes taxonomy_menu által kezelet rekordot törölni kellet a menu_router táblából, és utána update.php.
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.