Tetszőleges menüpont aktiválása

Magus képe

Sziasztok!

Azt szeretném megoldani, hogy ha a node/123 benne van a menüben, a menüpont aktív is, de ha az adott oldalról nyílik pl a node/124, és azt nem akarom a menübe betenni, akkor a node/123 menüpontja legyen aktív.

Az oldalra a tartalmak feltöltését egy nethez éppencsak értő titkárnő fogja végezni, ezért a lehető legegyszerűbb megoldás érdekelne... Ha pl php fg-t kéne meghívni, az megoldható lenne, mert az egyik modul saját fejlesztés, a másikba meg a nodeapi-val bele lehet nyúlni.

Tud erre valaki valamilyen megoldást?
Köszönöm előre is!

Orseolo Mágus

pp képe

nodapi-ban a 123-es node-nál

menu_set_active_item('node/123');

(a tabok viszont össze fognak keveredni sajnos...)

pp

0
0
Magus képe

Köszönöm, működik!

0
0

- - - - -
Orseolo Magus
[email protected]

pp képe

mert szerkeszteni nem tudod a node/124-et csak a node/123-at

próbáld ki!

pp

0
0
Magus képe

Köszi a meglátást, a szerkesztés a kisebbik gondom, mert saját modul, és spec a szerkesztés gomb úgy is csak egy lead-et editálna, a node tartalomnak külön adminja van.

A nagyobbik gond, hogy sajnos a 123-as node-ot ki is írja, betölti, és így a rá vonatkozó view illetve nodeapi fg-k meghívódnak, ami pl nem kívánt műveleteket aktivál (pl e-mail küldés)

Van erre valami jobb megoldás, hogy aktiváljam a menüt, de az aktivált menü tartalma ne töltődjön be?

Köszi

0
0

- - - - -
Orseolo Magus
[email protected]

Pasqualle képe

nem tudom, hogy hany menupontrol es node-rol lenne szo, milyen logika alapjan kellene aktivalni..
en egy hasonlo problemat css_injectorral oldottam meg, bizonyos utvonalaknal ugy sminkelem a menut mintha aktiv lenne..

0
0
Magus képe

köszi a tippet, de sajnos 5-ös drupallal dolgozok, és ahhoz ez a modul nem érhető el.

A modul amúgy termékeket menedzsel, melyeknek hierarchiája kb így néz ki:
* üzletág
** felhasználási terület
*** kategória
**** alkategória
***** termék

Ebből a menübe az első 3 szint kerül be, ahol csomóponti oldalak vannak a beljebb lévő tartalmak listázásával (nem views lista, mert speckóbb műveletek kellenek)

Az alkategóriák sehol nem jelennek meg, csak elvi szinten léteznek, illetve a nevük a termékadatlapon fel van tüntetve. A kategóriák csomóponti oldalain az alkategóriák nevei szerepelnek, és a link rajta az első termékére mutat (abc szerinti első).

No, amikor a termék adatlapot nézem, akkor kéne nekem a kategóriát aktívvá tenni.

Lehet, h ezt a nyitó kommentbe kellett vna írnom egyből :( de remélem még nem késő, és ez alapján tud valaki javasolni valamit.
Köszönöm!

0
0

- - - - -
Orseolo Magus
[email protected]

Pasqualle képe

ha termek tipusu node-ot jelenitesz meg akkor a kategoria menupont legyen aktiv?
erre jol hasznalhato a context modul, bar ennel a kis funkcional sokkal tobbet tud
http://drupal.org/project/context

0
0
Magus képe

Még nem vagyok annyira jártas a drupalban, de igyekszem...
A DEV modulokat hogy kell/lehet használni?
Ez a modul az is csak fejlesztői változatban érhető el :(

0
0

- - - - -
Orseolo Magus
[email protected]

aboros képe

az, hogy 'dev' csak egy állapotjelző, fejlesztés alatt van azt jelenti. az egy 'development snapshot' .. lehet, hogy eltörik vagy eltöri más drupal funkcióidat vagy valami még nem működik benne vagy nem úgy ahogy kéne, stb. használatuk nem ajánlott, de nem is tilos. azért csak óvatosan. :)

0
0

-
clear: both;

Pasqualle képe

a context modult a developmentseed kesziti es hasznaljak eles oldalakon is.

a modul hasznalatarol itt van egy jo video:
http://www.developmentseed.org/blog/2008/apr/09/context-ui

drupalcon eloadasok a modul mukodeserol:
Boston 2008
Szeged 2008

0
0
Magus képe

A modul szerintem csak részben jó nekem, mert a saját modul felépítése (talán azért mert ez az első modulom és elég béna megoldásokat használ (vagy tán túl profikat? ;D)) nem teszi lehetővé (vagy csak nem ismertem ki rendesen a videó(k) alapján a működését) a context használatát.

Ellenben átnyálaztam gyorsan a modul-t és megtaláltam benne talán amire nekem szükségem van. Így a core menu_set_active_item() fg-t átírtam a context-t alapján egy kicsit, és ez lett belőle:

<?php
function orseolo_menu_set_active_item($path = NULL) {
	static $stored_mid;
	$orig_q = $_GET['q'];
 
	if (!isset($stored_mid) || isset($path)) {
		if (!isset($path)) {
			$path = $_GET['q'];
		}
		else {
			$_GET['q'] = $path;
		}
		$menu = menu_get_menu();
 
		while ($path && !isset($menu['path index'][$path])) {
			$path = substr($path, 0, strrpos($path, '/'));
		}
		$stored_mid = isset($menu['path index'][$path]) ? $menu['path index'][$path] : 0;
 
		// Search for default local tasks to activate instead of this item.
		$continue = TRUE;
		while ($continue) {
			$continue = FALSE;
			if (isset($menu['items'][$stored_mid]['children'])) {
				foreach ($menu['items'][$stored_mid]['children'] as $cid) {
					if ($menu['items'][$cid]['type'] & MENU_LINKS_TO_PARENT) {
						$stored_mid = $cid;
						$continue = TRUE;
					}
				}
			}
		}
 
		// Reset the cached $menu in menu_get_item().
		$context_menu = menu_get_item(null, $path);
		$items[] = $context_menu;
 
		// Grab the menu tree from active context item to the root
		$mid = $context_menu['pid'];
		while ($mid && ($item = menu_get_item($mid))) {
			$items[] = $item;
			$mid = $item['pid'];
		}
		$items = array_reverse($items);
 
 
		menu_set_location($items);
	}
	$_GET['q'] = $orig_q;
	return $stored_mid;
}
?>

Ezt meghívva (egyelőre így látom a tesztek alapján) pontosan azt csinálja, amire nekem szükségem van: bárhonnan mehívva ezt a fg-t az általam beírt path-nak megfelelő menü item lesz aktív.

Köszönöm a sok helpet!

(ha közben még hibát fedezek fel benne, vagy netán ti, azt megírom itt)

0
0

- - - - -
Orseolo Magus
[email protected]