Node_images + Lightbox2 beállítása Drupal 6 alatt

KaoszNagymaester képe

Sziasztok!

A node_images + Lightbox2 modulokat szeretném belőni Drupal 6 alatt. Odáig már eljutottam, hogy a node_images működik, oldalbeküldésnél tudok képeket csatolni, és utána rákattintva, sima explorer ablakban megnyílik. A lightboxot viszont nem tudom működésre bírni. A modul fel van telepítve, meg tudom nyitni a beállításait. Itt valamit meg kell adni neki, vagy automatikusan kellene működnie?

Köszi előre is!

Drupal verzió: 
pp képe

Elolvastad a modulokhoz adott README.txt-t?

0
0
KaoszNagymaester képe

A lightbox2 readme.txt-ben az van, hogy a kép megjelenítésénél be kell illesztenem az alábbi kódot:


rel="lightbox[][my caption]


Viszont én a képet nem a törzs részében illesztem be manuálisan, hanem a node_images segítségével. Akkor ha jól gondolom meg kell keresnem, hogy az oldal betöltésekor honnan generálja le a kódot, és azt kell átírni? (Most kezdtem csak az ismerkedést a Drupallal...)

0
0
aboros képe

miért a node_images -t választottad? valami konkrét oka van?

használd inkább a cck imagefield -et és akkor a lightbox2 field formattert ki tudod választani a 'display fields' részben egy lehulló listából két kattintással.

vagy ha mégis a node_images -nél akarsz maradni:
node_images.module -ban van egy sminkfüggvény, ami a csatolt képek html kimenetét állítja elő theme_node_images_view a neve, ezt kompletten lemásolod és beilleszted a sminked mappájában lévő template.php fileba. (ha nincs ilyen, hozzad létre) átnevezed a függvényt SMINKEDNEVE_node_images_view -ra ezután kedvedre babrálhatod, például így (az én sminkem neve: playground)

/**
 * Show node images in the node view.
 */
function playground_node_images_view($node, $teaser, $page, $block = FALSE, $count = NULL, $format = NULL) {
  if (arg(2) == 'image_gallery' || empty($node->node_images)) return;
 
  $output = '';
  $i = 0;
 
  // set maximum number of images for teaser/body
  $view = ($teaser ? 'teaser' : 'body');
  if (!$count) {
    $count = variable_get('node_images_'.$view.'_images_'.$node->type, 2);
  }
  if (isset($count) && $count == '0') return;
 
  // set image format
  if (!$format) {
    $format = variable_get('node_images_'.$view.'_format_'.$node->type, 'thumbs');
  }
 
  foreach((array)$node->node_images as $id => $image) {
    $description = check_plain($image->description);
    $pattern = '<img src="%path" alt="%description" />';
    $thumb = strtr($pattern, array('%path'=>file_create_url($image->thumbpath), '%description'=>$description));
    $fullsize = strtr($pattern, array('%path'=>file_create_url($image->filepath), '%description'=>$description));
 
    if ($info = @getimagesize($image->filepath)) {
      $width = $info[0] + 36;
      $height = $info[1] + 36;
    }
    else {
      $width = 420;
      $height = 315;
    }
 
    if ($format == 'thumbs') {
/**
* figyelj, itt jön a változás
*/
      $output .= '<a href="'.file_create_url($image->filepath).'" title="'.$description.'" rel="lightbox['.$node->nid.']['.$description.']">'.$thumb.'</a> ';
    }
    else {
      $output .= $fullsize.' ';
    }
    if ($count>0 && ++$i >= $count) break;
  }
 
  if ($block && $count < count($node->node_images)) {
    $output .= '<div class="node_images_block_link">'.l(t('View all images'), 'node/'.$node->nid.'/image_gallery').'</div>';
  }
 
  return $output;
}
0
0

-
clear: both;

KaoszNagymaester képe

Köszi, ahogy leírtad, úgy sikerült megcsinálnom (node_images-el). Bár nem nagyon értem a megoldást, de van még mit tanulnom a témában...
(Azért használom a node_images-t, mert több mindent kipróbáltam, és ez tűnt a legegyszerűbbnek.)

0
0
aboros képe

tudom mit beszélek, én is használtam egy időben, mert egyszerű, később rájöttem, hogy túl egyszerű és most agyalhatok rajta, hogy többszáz node képeit átvezessem valami okosabb rendszerbe, aminek most az imagefield tűnik. (meg azért is, mert az mégiscsak egy cck mező, és hát a törekvés meg az, hogy fields in core)

legalább _próbáld_ki_ a cck-imagefield párosítást, ha elakadsz vele, abban is szívesen segítek ;)

0
0

-
clear: both;

KaoszNagymaester képe

Kipróbáltam az imagefield modult. Valamit szerintem nem lőttem be jól: A mezők szerkesztésénél ki tudom választani, hogy kép legyen, viszont a mezők megjelenítése beállításnál nem látom a lightbox választási lehetőséget, olyat tudok kiválasztani, hogy kép. Így, ha elküldök egy oldalt (csatolt képpel), akkor teljes méretben szúrja be a képet, és ha rákattintok, nem történik semmi.

Ennél az imagefield-nél meg tudom csinálni, hogy egy kép legyen csak az oldalon, és ha rákattintok, akkor tudjak a többi között lapozni? A mostani verzióban, ha a node_images-ben beállítom, hogy az oldalon csak egy képet lássak, akkor a lightbox is csak egy képet jelenít meg. Ha az összeset megjelenítem (thumb), akkor a lightbox is megjeleníti.

0
0
aboros képe

az ilyen képmegjelenítők (lightbox, clearbox, vanmégpár) úgy működnek, hogy azokat az a tegeket fűzik egy 'galériába', 'lapozgatósba zoomnál', amik ugyan azt a rel attribútumot hordozzák (pl rel="lightbox[node-12]) .. ha csak egy kép van 'kiprintelve' akkor nanáhogy nincs mit galériába fűzni. persze csinálhatod azt, hogy minden képet kiprintelsz, aztán css -ből elrejted a többi képet (kivéve egyet) display:none -al, lelked rajta. ;)
(drupalconon hallottam, hogy display:none is for loosers... :)

a nem lőttem be jól részhez:
pl story típus 'display fields' része, ahol ki tudod választani a megjelenítést:
admin/content/node-type/story/display

0
0

-
clear: both;

nevergone képe

display:none is for loosers

Necces a használata, de adott helyen jól jön. Igazából pl. SEO szempontjából aggályos, mert ha sokat látja a Google az oldaladon, akkor azt mondja, hogy csalni akarsz találati listában való helyezéseddel, és jöhet a f.szk....cs ... :S

0
0
aboros képe

eddig is, hogy miért... :)
egyébként azon a véleményen vagyok, hogy ha vanna annyi energiám, hogy valamit display:none -ra állítsak, akkor már annyi energiám is legyen, hogy eleve ki se printelem.

on-di-ádör-hend vannak olyan technikák, mármint vizuális megoldások, amiket csak display:none -t is használva tudsz megcsinálni. (remote rollover pl, lásd flickr mikor egy képen vannak note-ok.. vagy egy kép látszik a cikk szövegében és arra kattintva nyílik egy clearbox, ami viszont már galéria.. )

említett idézet egyébként a node templating előadáson hangzott el az előadólány szájából, rögtön el is szégyelltem magam. :)
(ugyanitt volt a theme butchering meg a preprocess varázslás)

0
0

-
clear: both;

pp képe

Ha már js-es rollover akkor miért ne lehetne js-el elrejteni, vagy miért ne lehetne ajax-al előtölteni. ja hogy azzal dolgozni kell? hát istenem kell, de nem lehetetlen.

pp

0
0
aboros képe

nyilván jsel azt rejtesz oda ahova amit akarsz. csak egyrészt nem tudok jsül másrészt nem arra gondoltam. hanem van egy ilyen megoldás, könyvbe olvastam 'remote rollover', abba nincs js. egy css 'trükk' csak.

kb:
html

<a href="#" title="részletek">Részletek<span class="details">Ide meg jön a szöveg, ami csak rollovernél látszik</span></a>

css

a:link span.details, a:visited span.details {
position: relative;
top: 0;
left: 50px;
z-index: 100;
visibility: hidden;
}
a:hover span.details {
visiblility: visible;
}

erre gondoltam. nincs semmi js.
persze ebben nincs display:none, de a visibility:hidden a robotnak ugyan az.

0
0

-
clear: both;

Paal képe

Csatlakozom aboros-hoz. Én is node_image-st használtam egy oldalnál, de ma már szívesen lecserélném imagefield-re. Nagy meló lesz... :(

Nem tudom, hogy pontosan mit szeretnél, de mindenképpen zsükséged lesz az imagecache modulra (ha maradsz az imagefield-nél). Drupal 6 alatt szükséged lesz a filefield, imageapi és a cck modulokra is.

Az imagecache-nél beállítod, hogy milyen átméretezést, vágást, szóval grafikai átalakítást szeretnél (ennek neve pl. imagecacheprofil1). Utána hozzáadod a tartalom tipushoz az imagefield mezőt. Ennek be tudot már állítani, hogy előnézetben és teljes nézetben mit szeretnél a képpel. Pl. előnézetben legyen kattintható és mutasson a node-ra, teljes nézetben meg a lightbox2[imagecacheprofil1] funkció hajtódjon végre.

Ha mondjuk node-onként 1 képet viszel fel, és később ezeket szeretnéd egyetlen képgalériával megjeleníteni akkor be kell vezetned valamilyen kategorizálási lehetőséget, ami később lehetővé teszi a szűrést (pl. taxonómia segítségével vagy más node tipus), és views-zal tudod ennek alapján lekérdezni, és megjeleníteni. Itt szintén használhatod az imagecahce profilokat a lightbox2-vel ötvözve.

Egy példa:
Mondjuk 800x600-as képeket engedsz feltölteni, de az előnézetben 100x70-es kisképre van szükséged, a node teljes nézetében 100x100-asra, középről kivágottra, erre kattintva meg a lightbox2-ben szeretnéd az eredeti képet megnézni. Ja, a kezdőoldalon meg egy blokkban az 65x65-ös kis kockaképeket az xy kategóriába tartozó képekről (ezek linkjei szintén a node-okra mutatnak).

Remélem segít. Ha további infó kell, csak jelezd.

Üdv, 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

KaoszNagymaester képe

Köszi a sok segítséget, elég jól kezdek belelendülni ebbe a Drupal témába. :)

Meg szeretném fogadni a tanácsotokat, ezért megpróbálom működésre bírni az imagefield + imagecache...verziót.
Már majdnem minden ok:
Imagecache-ben létrehoztam egy profilt a kisképnek.
Hozzáadtam az oldalhoz a kép mezőt.
A megjelenésnél beállítottam, hogy a bevezetőben a képre kattintva, nyissa meg az oldalt. (imagecache_profil image linked to node)

Idáig ok, ami nem működik:
Mezők megjelenítése: tartalomban, a képre kattintva: Lightbox2: imagecache_profil -> Original. Nekem ez tűnik a logikus beállításnak, de ha ezt állítom be, akkor egyáltalán nem jelenik meg kép a tartalomban. (Ha bármi olyat állítok be, ami "Lightbox2:"-vel kezdődik, nem jelenik meg kép. Ez miért van?

0
0
Paal képe

Nézd meg az oldal forrásában, hogy a képhez bele rakja-e a megfelelő kódot:

<a rel='lightbox[18]' href="http://www.domain.com/files/pictures/IMG_7438.jpg" style="position: static;">
<img width="170" height="100" title="" alt="" src="http://www. domain.com/files/imagecache/170x100/pictures/IMG_7438.jpg"/>
<span style="position: absolute; top: 0px; left: 0px; width: 178px; height: 108px; cursor: pointer;" class=""/></a>

Vagy valami hasonló. A lényeg, hogy a rel="lightbox[nodeid]" benne legyen.
Továbbá a html HEAD részében szerepelnie kell a következőnek is:
<script src="/sites/all/modules/lightbox2/js/lightbox.js?e" type="text/javascript"/>

Nem érhető el valahol az oldal? Sokat segítene, ha lehetne egy pillantást vetni rá.

P.

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

KaoszNagymaester képe

Igazából az a baj, hogy a képet sem jeleníti meg, ha belépek az oldalra, amit beküldtem.

Itt lehet elérni az oldalt: http://ingyenesletoltes.com/eszallasok/

A főoldalon még látszik a kép, de ha megnyitom az írást, akkor abban nem jeleníti meg. (A tartalmon belül a megjelenítéshez az Imagebox2 van kiválasztva)

0
0
aboros képe

a cck -ban volt egy változás ami nincs még benne rendesen lekövetve, azért hibázik a field formatter...
http://drupal.org/node/283661

de mint azt írják is, ha a 6.x-1.x-dev -et használod, akkor az már jó.

0
0

-
clear: both;

KaoszNagymaester képe

Kipróbáltam, hogy a mezők megjelenítésénl a "Teljes tartalom" mezőben a thickbox-ot választom ki (most installáltam) a Lightbox2 helyett és azzal megjelenik a kép, és működik is. Valószínű a Lightbox beállításainál nem jó valami.

Ha így az imagefield-el hozzáadok 5db képet az oldalhoz, akkor azt meg tudom csinálni, hogy az első kép fent jelenjen meg a szöveg mellett, a többi pedig alul egymás mellett?

0
0
KaoszNagymaester képe

Ha imagefield modullal csatolok képet a tartalomhoz, meg tudom határozni, hogy 1-1 kép hol jelenjen meg a törzs tartalmon belül?

0
0
aboros képe

légyszi nyiss neki új témát.

0
0

-
clear: both;