node images
Olyat szeretnék a node imagel elkövetni, hogy a szöveghez feltöltöttem 5 db. képet.
A bevezető szövegnél ugye egy kép jelenik, meg utána rá kattintok, hogy a teljes cikket / szöveget el tudjam olvasni akkor a szöveg után, jelenik meg az - az 5 db kép.
Én úgy szeretném, hogy 1 kép ugyanúgy felüljelenjen, meg mint a bevezetőnél és a többi 4 kép pedig lent. Ezt meg lehet valahogyan valósítani?
üdv.: viki
<div class="entry-content"> <?php if ($teaser == 1) { print '<div class="node_images_teaser">'; print $node->node_images; print $content; $sql = db_query('SELECT * FROM {node_images} WHERE nid=%d ORDER BY weight', $node->nid); if (db_num_rows($sql)>1) { print'<div class="node_images_text"><a href="/node/'.$node->nid.'#mutasd-a-kepeket">Az összes kép megtekintése</a></div>'; } if ($node->node_images) { } print '</div>'; } else { print $content; print '<div class="node_images_page" id="mutasd-a-kepeket">'; print $node->node_images; print '</div>'; } ?> </div>
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
vázlatosan kb így kell ezt csinálni
nem a .tpl.php -t feltúrni, hanem szépen az előfeldolgozóba újraépíteni a $content.
kb így gondoltam:
function playground_preprocess_node($vars) { $node = $vars['node']; #lusta aboros if (isset($node->field_image[0])) { $newcontent = '<div class="nodebody">' . $node->content['body']['#value'] . '</div>'; $newcontent .= '<div class="images">'; foreach ($node->field_image as $key=>$image) { $newcontent .= '<div class="image">' . $image['data']['view'] . '</div>'; } $newcontent .= '</div>'; $vars['content'] = $newcontent; } }
persze ennél sokkal kifinomultabban is lehet, ez csak az irányt mutatja.
ettől a $content -be két div lesz, egyik a .nodebody másik meg az .images, azon belül .image divekbe vannak a képek, amik úgy jelennek meg, ahogy azt a cck admin felületén te beállítod a display fields fülön. oda floatolsz, ahova akarsz.
-
clear: both;
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
akkor ne használj relationship -et
ne node id legyen az argumentum, hanem maga a node reference mező legyen az és a provide default típusa ne node id from url legyen, hanem php code, ahol figyeled, hogy éppen node oldalon vagyunk e, ha igen akkor milyen típusú a node, ha település, add vissza a node id -t, ha nem település, akkor szedd ki a hivatkozott település idjét a mezőből és add vissza azt.
kb:
if (arg(0) == 'node' && is_numeric(arg(1))) { $node = node_load(arg(1)); if ($node->type == 'telepules') { return array($node->nid); } else if (isset($node->field_telepules[0]['nid'])) { return array($node->field_telepules[0]['nid']); } else { return FALSE; } } else { retun FALSE; }
persze nem tudom hogy hívod a dolgaidat, szóval ez csak egy vázlat, ami az elvet mutatja, de szerintem te ez alapján már vígan megoldod. kérdezz, ha mégse.. ;)
-
clear: both;
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
Javaslat
Tedd ezt a kódot a template.php fájlba (ha nincs benne), csak a <?php és ?> közötti részt:
function SMINKEDNEVE_preprocess_node(&$vars, $hook) { switch ($hook) { case 'node': if ($vars['page']) { $vars['template_files'] = array('node-default-page', 'node-'. $vars['node']->type .'-page', 'node-'. $vars['node']->nid .'-page'); } else { $vars['template_files'] = array('node-'. $vars['node']->nid); } break; } }
A SMINKEDNEVE részt módosítsd a sminked nevére :).
Hozz létre egy node-[nodeID].tpl.php fájlt a sminked könyvtárába. A nodeID a node azonosítója, amit a tartalom listázásánál meg tudsz nézni úgy, hogy az adott tartalom fölé viszed az egeret, a node/ utáni szám a nodeID.
A node-[nodeID].tpl.php fájlba másold át a node.tpl.php fájl tartalmát, utána töröld ki a címre hivatkozó részt és ürítsd a caches-t.
Ha minden igaz, akkor a cím eltűnik az adott tartalom elejéről a kezdőoldalon.
-- http://boj.hu --
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
Átváltottad a nyelvet?
Kell a settings.php-ba ez (hisz le van írva!):
$conf['i18n_variables'] = array( 'menu_primary_links_source', 'menu_secondary_links_source', );
Bővebb változat (INSTALL.txt):
$conf['i18n_variables'] = array( // Site configuration 'site_name', 'site_slogan', 'site_mission', 'site_footer', 'anonymous', // Node help 'blog_help', 'story_help', // User configuration 'user_registration_help', 'user_mail_welcome_subject', 'user_mail_welcome_body', 'user_mail_approval_subject', 'user_mail_approval_body', 'user_mail_pass_subject', 'user_mail_pass_body', // Primary and secondary links 'menu_primary_menu', 'menu_secondary_menu'; // Theme settings. This is an 'all or nothing' for each theme // This is for 'garland' theme, for other theme it would be 'theme_[themename]_settings' 'theme_garland_settings', );
Utána kapcsold be a nyelvválasztó blokkot.
Menj a "Webhely információk" oldalra (hu/admin/settings/site-information alapértelmezetten). Ki fogja írni magyarul a beállításokat.
A nyelvválasztó blokkban válaszd ki az angol nyelvet. U.ezt a tartalmat kapod, de már en/admin/settings/site-information útvonalon.
Írd át pl. a "Küldetés" részt valami másra. Mentsd el, és navigálj a kezdőoldalra (persze legyen bekapcsolva a témában a "Küldetés" megjelenítése).
Válts magyar nyelvre. A magyar Küldetés szöveg jelenik meg.
Válts angolra, akkor pedig az angol "Mission" fog neked megjelenni.
A lényeg, hogy a settings.php-ban megadott nyelvfüggő változókat akkor tudod elérni, ha a nyelvet megváltoztatod.
Pontosan u.így kell eljárni menük esetében is.
Rengeteget szívtam, mert egyszerűen nem jöttem rá (pedig le is volt írva), hogy át kell váltani a nyelvet, hogy az adott nyelvű tartalmakat módosítani tudd.
Üdv, Pali
--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
világos
nyilván egy li -ben van a két mező, mert ugyan ahhoz a nodehoz tartozik, a nézet pedig "node alapú" vagyis a "sorok" nodeonként keletkeznek.
de ez miért is baj?
szeretnéd ha úgy _nézne ki_ mint egy lista? ezt cssel könnyedén elérheted.
vagy rettenetesen fontos, hogy li elem legyen mindenképpen, mert szemantikailag az a korrekt?
több megoldást is el tudok képzelni. ha csak a kinézet miatt akarod listába, csináld meg cssel. a views tplek felépítése nem biztos, hogy engedni fogja, hogy ott elvégezd ezt a módosítást. talán azt kéne, hogy a második mezőnél bejelölöd, hogy a kimenet felülírása és gyalog te odavarrod, hogy ul li[egyik mező tokenje]/li li[másik mező tokenje]/li /ul.. esetleg nézd meg a semantic views modult, talán az is tud ilyen mezőösszevonásokat.
vagy (ezért most lehet megköveznek, de sebaj)
csinálj egy blokkot, aminek php a beviteli formája és abba tegyed ezt a kódot vagy valami ilyesmit. így kiesik a views a képből, erőforrást spórolsz.
<?php if (arg(0) == 'node' && is_numeric(arg(1))) { $node = node_load(arg(1)); if ($node->type == 'dolgozat') { $items[] = $node->field_thesis_author_org[0]['value']; $items[] = $node->field_thesis_creation_year[0]['value']; print theme('item_list', $items); } } ?>
rakhatod ezt persze egy saját modulba is vagy olyan trükköt is csinálhatsz, hogy van egy üres blokkod és a tempalte_preprocess_block -ban id alapján ezzel a kóddal írod felül az alapból üres $block->content. ;)
-
clear: both;
- A hozzászóláshoz regisztráció és bejelentkezés szükséges






rejtsd el ami nem kell
én úgy csinátam, hogy a képek adminisztrálásakor nem jelenik meg a jobb oldali blokk. sőt az útvonalat is elrejtem.
imhol egy kép róla
itt nincs elrejtve a file neve, viszont linkké formálódik
továbbá érdemes megmutatni az olvasóknak, ha van még kép a 'galériában'.
nálam ilyen a node.tpl.php:
http://alleycat.hu
ninja - http://alleycat.hu