page,story tartalom megjelenítése blokkban

tibi képe

Sziasztok!

Érdeklődni szeretnék, hogy létezik-e olyan modul ami megvalósítaja azt, hogy amikor taratalmat viszek be akkor a közzétételi beállításoknál ki lehessen választani azt, hogy blokkban jelenjen meg. Jobb sávban, ball sávban, fejléc vagy az általam deklarált blokkok valamelyikében. Létezik erre blokk? Ha nem akkor van valami javaslatotok, hogy lehetne azt megvalósítani?!
Előre is köszönöm!

pp képe

Ez pontosan azt csinálja amit szeretnél!

0
0
bb.virgo képe

Ha valamilyen különös oknál fogva mégis egy adott story vagy page tartalma kéne (vagy bármilyen más node), akkor azt a node_load függvénnyel el tudod érni. Példa:

$node = node_load(5);
print $node->body;
0
0
Anonymous képe

szóval ez csak kiömleszti a body -t de semmi formázás, v. beviteli forma szerinti feldolgozás...

azt mivel kellene?

0
0
bb.virgo képe

Az adatbázisban eltárolódnak a formázások, a sortörés kivételével. Vagyis az is benne van, csak nem html (br), hanem php sortörés (\n). Nincs más dolgunk, mint ezeket kicserélni, én erre reguláris kifejezést javaslok, bár nem vagyok biztos benne, hogy ez így szokás. Mindenesetre működik. A node címét pedig a $node->title -el kapod vissza.

$node = node_load(1);
$pattern = '/\n/';
$replacement = '<br />';
print preg_replace ($pattern, $replacement, $node->body);

Mikor ilyen adatszerkezetekkel bánsz, ajánlom a var_dump php-s függvényt.

0
0
Anonymous képe

a megoldásod működhet ha html, vagy filtered html a beviteli mód...

node mi van ha bbcode a beviteli forma?!

szóval ez így nem jó!

én a node_prepare -al próbálkozgatok, de nem ismerem még igazán a beépített fv tárat... hasonló gondom van ebben a topic -ban.

0
0
bb.virgo képe

Igen, a cserélgetős megoldásom csak html-ként jó, de ez volt a kérdés, nem? Hogy nincs benne formázás. Ha már más tartalomtípusokról van szó, részletesebben meg kell vizsgálni, hogy miből épül fel, és úgy kell összerakni.

0
0
Hojtsy Gábor képe

Nem kell itt favágó megoldásokat használni, meg megírni mégegyszer, ami a Drupalban benne van. Szépen megnyitjuk a node.module kódját, megnézzük mit csinál a node_view, és lőn! Itt látszik, hogy a lényeget (a formázás átalakítását is) a node_prepare() csinálja, és hogy a már hurkok meghívása is érdekes lehet, ha vannak azt kihasználó moduljaid telepítve.

0
0
bb.virgo képe

Igyekszem megfogadni a tanácsot, komoly erőfeszítésembe tellik, mert ha nem figyelek, valahogy mindíg a farigcsálásnál lyukadok ki. De igyekszem :-)

0
0
pp képe

;) van ám ilyen függvény is.

0
0
bb.virgo képe

Közben megvilágosodtam :)

0
0
tibi képe

Köszönöm, pont erre volt szükségem. Tudtok valami, jó helyet ami nem fórum, ahol turkálni lehet hasonló jó megoldásokkal kapcsolatban? CVS?

0
0
bb.virgo képe

Örülök neki :)

0
0
tibi képe

Azt szeretném még megkérdezni, hogy mivel kell kiegészíteni a kódot, hogy a blokk mindenhól látható legyen. Ha kilépek akkor is. Vagy ha meg tudnád mondani hol találom meg a szükséges kampokát azt is megköszönném!

0
0
bb.virgo képe

A blokk mindenhol látszani fog, ha máshogy nem rendelkezel (az edit lapon tudod állítani, hogy melyik node-oknál vagy melyik node-oknál nem illetve egy php kód visszatérésének függvényében). A modulokban használatos ,,kampó'' az a hook_block(), hogy ha ezt kérdezted, de annak tudomásom szerint itt most nincs szerepe.

0
0
aries képe

De formáz az. A node->body -ba már eleve formázott tartalom van. Olyan, amilyet megadtál a node felvitelénél. Az új node-ban, blokkban kell megmondani, hogy melyik filtert akarod használni. Ha a blokkban szeretnéd használni a használd a check_markup()-ot.
--
Aries
http://aries.mindworks.hu

0
0
Anonymous képe

Sziasztok,

~ugyanazt szeretném elérni mint a topikindító. Egy page típusú node-ot szeretnék megjeleníteni egy mindenki számára látható blokkban, de én már itt elakadok:

$node = node_load(9);
print $node->body;

Az eredmény három hiba a log-ban:
1. Invalid argument supplied for foreach() - node.module - 358. sor.
2. implode(): Bad arguments. - node.module - 363. sor.
3. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 query: SELECT n.*, u.uid, u.name, u.picture, u.data FROM node n INNER JOIN users u ON u.uid = n.uid WHERE (n.language ='hu' OR n.language = '') AND - database.mysql.inc - 66. sor.

Mi lehet a gond? Az számít, hogy 4.6-ot használok?

ui.: Kezdô vagyok.

0
0
bb.virgo képe

Szia!
Valójában soha nem használtam 4.6-os verziót, de az api oldalon (http://api.drupal.org/api/4.6/function/node_load) látható, hogy ebben a verzióban, a node_load nem egy node id-t vár első paraméternek, hanem egy asszociatív tömböt, amiben megadhatod, hogy mi alkapján töltse be (hasonlóan, mint a 4.7.x-ben a user_load). A kódod tehát valahogy így kell, hogy kinézzen:

$node = node_load(array('nid' => 9));

ha ez megvan, a var_dump($node) paranccsal írasd ki, milyen változói vannak a kapott objektumnak, ezekután úgy darabolod illetve jeleníted meg, ahogy neked tetszik. Az előző hozzászólásokból ismert node_prepare() függvényre is szükséged lehet.

0
0
Paal képe

Valaki összefoglalhatná az egészet, hogy akkor most hogy is kellene egy node tartalmát blokkban megjeleníteni (mert én már elvesztem az erdőben ;) ). Akkor fel is kerülhetne a kézikönyvbe, a tippek, trükkök közé.

Köszi, Pali

0
0

--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan