_GET[q] útvonal eltérítése

gdavid képe

hali

adott pár oldal, amik kb igy neznek ki: mymod/page/1/2
ennek az oldalnak müködnie kell így is, illetve úgy is, ha eléteszem, hogy pop/

a lényege a dolognak az lenne, hogyha a path-ban szerepel az pop akkor azt oldalt blokkok, header és egyébb sallangok nélkül mutassa meg, de modul mikor lekérdezi az argomentumokat pl arg(2) akkor "1" értéket adjon vissza és ne a pop/mymod/page/1/2 -ből a "page"-et.

megoldható, és ha igen akkor miként?

thx előre is.

Drupal verzió: 
aboros képe

én úgy csinálnám. és akkor nem zavar be az argumentumok sorrendjébe.

a sallangtalanítást meg a preprocessorba csinálnám, kb:
template.php

function SMINKNEVE_preprocess_page(&$vars) {
  if (arg(4) == 'pop') {
    unset($vars['left']); //kiuti a bal sidebart
    unset($vars['right']); //kiuti a jobb sidebart
  }
}

így. bár most hogy így írom, az jutott eszembe, hogy inkább egy template suggestionnel felülírnám a használatos template -et, kb így:
template.php

function SMINKNEVE_preprocess_page(&$vars) {
  if (arg(4) == 'pop') {
    $vars['template_files'] = array('popcontent.tpl.php');
  }
}

ezután kell egy popcontent.tpl.php, ami kb így néz ki:

<html>
  <head>
  </head>
  <body>
  <div id="content"><?php print $content; ?></div>
  </body>
</html>

így a pop argumentes oldalaid a popcontent.tpl.php -val kerülnek kiíratásra, amiben meg semmit nem írsz ki (se header, se sidebarok, se footer, sesemmi) csak a $content. bumm.

0
0

-
clear: both;

gdavid képe

köszönöm szépen sok jó ötletet kaptam most. sajna nekem a végére nem szerencsés beillesztenem, mert sok függvénynek nálam nem csak hogy van egyéb paramétere (/oldal/2?ize=valami) hanem az arg-ok nem fixek, tehát van ami csak 2 van ami viszont 5 hosszúságú. Tudom akkor lehetne a tömböt shift-elni...

lehet, hogy nem ennyire elegáns amit végül is kiötöltem, de azért leírom,

en csináltam egy modult ami figyeli, hogy van-e az elején pop, ha van akkor kiveszi belőle, és egy globális változót átállít.

pop.module

function pop_menu() {
  $items['pop']=array(
   'access callback'=>TRUE, 
   'page callback'=>'pop_itup',
   'type'=>MENU_CALLBACK, 
   'weight'=>-99,
  );
  return $items;
}
 
function pop_itup() {
  global $_GET, $pop_path,$popit;
  $popit=1;
  $pop_path= "pop/";
  $_GET['q']= substr($_GET['q'],4);
	$return = menu_execute_active_handler($_GET['q']);
  return $return;
}

a page.tpl.php -ben pedig figyelem ezt a globális - $popit - változót és nem jelenítem meg azokat, amik nem kellenek, mert sajna a header meg a többi kell, különben elég lenne a theme('box',$output)

már csak egy gondom van vele, hogy szeretném ha az l függvényt meghívom ebben a pop-os környezetben akkor tegye be a /pop -ot a link elejére.

0
0
pp képe

Ha már de inkább:
A $_GET az szuperglobális teljesen felesleges a global kulcsszó.
Kár görcsölni, van rá megoldás, hogy eltűnjenek a blokkok.
Ezt én nem javaslom, de ha ez kell neked hát hajrá.

function pop_itup() {
  $_GET['q']= substr($_GET['q'],4);
  $return = menu_execute_active_handler($_GET['q']);
  print theme('page', $return, FALSE);
}

Szerintem az ilyenre tipikusan a következő megoldás kell:
Mi a probléma? Vannak olyan esetek, amikor ugyan azt kell megjeleníteni csak máshogy és ennek úgy is kell maradnia(gondolom ezért gányolod a pop-ot állandóan bele.) Nem tudom mit csinálsz, csak gyanítom, hogy popupba kell megjelenítened az adminisztrációs elemeket, mondjuk egy új node hozzáadását.
Tehát a lényeg, hogy ugyan az kell, csak máshogy nézzen ki. Ekkor fogja az ember és az example.com domainja mellé bejegyez egy pop.example.com domaint (ez nem lehet probléma) Ezután a sites/pop.example.com könyvtárban létrehozza a settings.php-t amiben a másik megjelenést vagyis másik sminket állít be. Már kész is vagyunk.

pp

0
0
gdavid képe

azert ganyolom a pop-os megoldast mert ezt talaltam csak egyeduli utat a megoldashoz.
van egy modulom, amit el kell ernem teljes megjelenitesi modban es popup-os megoldaskent is. es itt a popupot, beepuloskent ertem. es nem csak a blokkot nem kell megjeleniteni, hanem semmi mast csak a tartalmat. (se breadcrumb, se header, se primary, secondary menu, se footer, semmi. csak es kizarolag a tartalom, de a js es css-ekere meg szukseg van.

tehat nem megoldas szamomra a kulon domain, csak egyedul az URL-beni elkulonites. viszont a menukezeles szempontjabol ha elejere teszem a pop-ot es nem szedem le az arg(0)-t akkor elallitodik az osszes modulom ami arg()-ot hasznal, nem beszelve az eleresi utakrol es linkekrol. bonuszkent, tudnom kell hogy mikor van popup es mikor normal megjelenites.
hat ezert "szarakszom" vele.

0
0
pp képe

tehat nem megoldas szamomra a kulon domain, csak egyedul az URL-beni elkulonites.

Amikor külön aldomain ugyan arra a könyvtárra mutat és csak a sminkben van különbség az miben különbözik attól amikor az összegányolod az url-t?
van egy ilyen url-ed:

http://example.com/valami/utvonal

Ekkor ha

http://pop.example.com/valami/utvonal

használod és ha a:

http://example.com/pop/valami/utvonal

megoldást akkor ugyan úgy az url-be adod át a dolgot. Az egyik megoldásnál szét kell hekkelned a Drupalt és itt izzadsz vele majd hónapja a másik meg kb. 10 perc és működik.

Nem értem miért jó neked a szenvedés. Én egyébként belenéznék a locale modulba ott hasonló van megoldva mint amit keresel.

pp

0
0
Tgr képe

pl. AJAX esetén. Az ilyesmire találták ki a query paramétereket: http://example.com/valami/utvonal?pop=1

0
0
Sweetchuck képe

... de lehet hogy a számokat nem fogja szeretni, bár a példa szerint
node/1/edit => page-node-edit.tpl.php
ez jó lehet a te pop-is igényedre

http://drupal.org/node/104316
http://drupal.org/node/139766

0
0
Pasqualle képe

gdavid képe

igen, ez az, koszonom szepen.

0
0