block tartalom cck fielbol

eaposztrof képe

belefaradtam a keresgelesbe, mar vagy 4 oraja ×$ߤ>&#{<đ|ä\í]*!%
hogyan tudok egy custom content type-on, CCK-val letrehozott, field tartalmat megjeleniteni az aktualis oldal egyik block-jaban?

tahat:

  • drupal 5.7
  • CCK 5.x-1.6-1
  • Content Templates 5.x-1.8

    content type: review
    custom field: banner

probaltam igy:
letrehoztam egy "banner" block-ot.
Block body:

		global $node;
		return $node->banner;		
ez nem hajlando mukodni. tovabbleptem:
Block body:
 print showbanner() Show block on specific pages:
(*) Show if the following PHP code returns TRUE (PHP-mode, experts only).
		global $node;
		if ($node->type == 'review'){
		return TRUE; 
		}         			
ez nem volt hajlando mukodni, debugoltam 1000el, de semmi.. igy maradt ez:
Show block on specific pages:
(*) Show on only the listed pages.
review/*
template.php-ban:
		function showbanner(){
		global $node;
		return $node->banner;
		}		
mondanom sem kell hogy nem hajnaldo visszaadni. (return "asd"; tokeletesen mukodik.)
majd ezz innen takaritottam, admin/content/types/review/template oldalon [*] Affect body output
		function showbanner(){
		return $node->banner;
		}		
semmi valasz. (return "asd"; tokeletesen mukodik.)

logikusabb megoltas nem megy enyi pocsoles utan.. segitsetek kerlek!

pp képe

nézted egyáltalán, hogy a $node-nak van-e értéke???

ha egy adott node nézetekor szeretnéd az adott node banner értékét megjeleníteni egy blokkban akkor kb:

if(arg(0)=='node' && is_numeric(arg(1))){
  $node = node_load(arg(1));
  print $node->banner;
}

Persze nem tudom mi van a banner változóban...;)

pp
kódolok sörért póló nem lesz?

0
0
eaposztrof képe

<?php
global $node;
print_r($node);
?>

NULL :( miert? nemertem!?

<?php $node->content['field_banner'] (array)
 
    $node->content['field_banner']['#access'] (boolean)
        TRUE 
    $node->content['field_banner']['#value']
        <div>asd</div>
    $node->content['field_banner']['#weight']
        1 
    $node->content['field_banner']['#printed'] (boolean)
        TRUE ?><code>
 
kerdesedre a valasz: <a href="http://blog.eaposztrof.com/2008/03/icode4beer.html">iCode4Beer</a>
0
0

42

eMeLA képe

A $node a tpl.php sminkfájlokban használható. A page.tpl.php-ban nem (tudtommal).
És itt sem global változóként, hanem alapból megkapja a fájl a $node-ot.

----------------------------------------------

Léterhozol egy blokkot, a tartalmi rész beviteli formáját átállítod PHP-ra. Majd beírod az alábbi kódsort:

<?php
$nid = 1; // az 1 a megjeleníteni kívánt node nid-je.
$node=node_load($nid); 
print node_view($node); // a tartalomípus tpl.php fájljában lehet magadni, hogy jelenjen meg az adott tartalom. Persze ezt rövidre is lehet zárni és a $node-ban lévő adatok alapján kiíratni a kívánt HTML kódot, a node_view() függvényhívás helyett
?>
 
Egy bannernél a variable_set() - variable_get() függvényekkel tárolni lehet az éppen aktuális megjelnített banner id-jét. Egy adatbázislekérdezéssel, pedig le lehet kérni a következő banner id-jét...
0
0

...mit tudok: http://web.termuves.hu

eaposztrof képe

$nid=1, $node->content['field_banner'] tartalma:

<?php
$node->content['field_banner'] (array)
 
    $node->content['field_banner']['#access'] (boolean)
        TRUE
    $node->content['field_banner']['#value']
        <div>asd</div>
    $node->content['field_banner']['#weight']
        1
    $node->content['field_banner']['#printed'] (boolean)
        TRUE
?>

banner block tartalma:

$nid = 1;
$node=node_load($nid);
print $node->title;
print print_r($node->content['field_banner']);

eredmeny:

Banner Block
Node Title

megprobaltam a block.tpl.php-ban is igy:

<?php
if ($node->type=='review'){
	print $node->content['field_banner']['#value'];
}
?>

es eredmeny semmi!!!
0
0

42

pp képe

A $node objektum nem létezik mindenütt és mindenkor szemben a $user objektummal.
A következő a feladat:

"hogyan tudok egy custom content type-on, CCK-val letrehozott, field tartalmat megjeleniteni az aktualis oldal egyik block-jaban?"

az aktuális oldal egyik blokkjában szeretnéd megjeleníteni a tartalom egy szeletét. Tehát amikor az útvonal node/nid pl.: node/23 ekkor a 23. node jelenik meg.
A fent írt kis php szkript azt csinálja, hogy megnézi, hogy az útvonal első eleme 'node'-e Ekkor még simán lehet, hogy az alapértelmezett címlapot (?q=node) nézzük, tehát meg kell nézni, hogy az útvonal második eleme (arg(1)) szám-e. Ha mind ez igaz, akkor éppen egy node-ot nézünk. Ekkor ezt be kell tölteni node_load és mér lehet is csinálni vele azt amit akarsz. Ha nem tudod mi van benne akkor
 drpal_set_message('<pre>'. print_r($node,true) .'<pre>')

Természetesen, ha egyszerre több node-ot nézünk akkor ez a módszer nem használható.
Remélem így már érthető!

pp

0
0
eaposztrof képe

koszi.. de ez a modszer azert nem mukodik, mert maszkolva vannak az url-k, es nem lat moge.

0
0

42

pp képe

Ha ezt a path modullal teszed akkor megnyugtatlak, hogy működik. Tehát ha az útvonal álnévvel hiába feded el az arg(x) az eredeti Drupal útvonalat adja vissza.

pp
(legalább próbáld ki ;))

0
0
eaposztrof képe

kiprobaltam, mivel en is igy gondoltam.. es pathauto modullal, tehat effektiv a path modullal vannak generalva.. es megsem.. tehat valami mas gond is leledzik..

ui:.. mar a domain is el: www.iCode4Beer.com ;) koszi..

0
0

42

pp képe

ugyanis még a $_GET['q'] változót is átírja a Drupal...

Hozz létre egy blokkot és Tedd bele a következő kódot:

  $output = $_GET['q'];
  $output .= '<hr>';
  $output .= arg(0);
  $output .= '<hr>';
  $output .= arg(1);
  $output .= '<hr>';
  $output .= arg(2);
  $output .= '<hr>';
  $output .= arg(3);
return $output;

Feltettem a token-t és a pathautot létrehoztam egy tartalmat proba néven
url: content/proba
a blokkban a következő látszik
node/15
node
15

Szóval valamit nem úgy csinálsz a hogy én...

pp

0
0
eaposztrof képe

hoppa.. megvan a problema.. nem hajlando futtatni semmilyen php kodot ami a PHP-code Input format-ban van felveve? mi tortenhetett?

Drupal 5.6
MySQL 4.1.11
PHP Version 4.3.10-22
Apache 2.0 Handler

edit:
es megis.. vagy mi? mar semmit nem ertek!?

0
0

42

eaposztrof képe

#1
a review contentemhez CCK-val hozzaadok egy banner field-et.
a template-ben (Content Template modul) a body aljara befuzom:

<?php
if  ($node->field_banner[0]['view']) : variable_set($banner,$node->field_banner[0]['view']);
endif;
?>

letrehozom a banner block-ot,
<?php
 print variable_get($banner,NULL);
 variable_del($banner);
?>

(*) Show on only the listed pages.
review/*

igy az osszes /review oldalon, megjelenik a review content-ben felvett field_banner tartalma.

#2
utobb rajotem, hogy csunyan mellenyultam, ugyanis en mind a $node->field_banner['value'];-t akartam kiiratni, mikozben a $node->field_banner[0]['value'];-t kellett volna!
es ime:

banner block tartalom:

<?php
  $node=node_load(arg(1));
  print $node->field_banner[0]['value'];
?>

a kerdes, h vajon melyik a gyorsabb es szerverkimelobb megoldas?

0
0

42