Drupal 5 jquery_teszt.modul
function jquery_teszt_menu($may_cache) { global $user; $items = array(); $items[] = array( 'path' => 'jquery_teszt', 'callback' => 'jquery_teszt_page', 'title' => 'Jquery teszt', 'access' => user_access('access content'), ); return $items; } function jquery_teszt_page(){ drupal_add_js(drupal_get_path('module','jquery_teszt').'/jquery_teszt.js'); return drupal_get_form('jquery_teszt_form'); } function jquery_teszt_form() { $form['jquery_teszt'] = array( '#type' => 'fieldset', '#title' => 'JQuery teszt mező', '#collapsible' => TRUE, '#collapsed' => FALSE, ); $form['jquery_teszt']['teszt_radio'] = array ( '#type' => 'radios', '#title' => 'teszt radio doboz', '#default_value' => 0, //az elso elem lesz az alapertelmezett '#options' => array('alma', 'banan', 'citrom'), ); $form['jquery_teszt']['teszt_select'] = array ( '#type' => 'select', '#title' => 'teszt select doboz', '#default_value' => 0, '#options' => array('0', '1', '2'), ); return $form; }
A fenti "szösszenetet" a te modulod és pp dinamikus select témában íródott modulja alapján gyúrtam össze. A 6-os verzióban nem tudok segíteni, mert még nem próbáltam.
Update: Ez nekem csak Firefox böngészővel működik, de IE-vel nem.
Páldi Zoltán
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
tagadelic patch?
sose csináltam még ilyet, de annyira kézenfekvő ez a probléma, nem is értem, hogy miért nem figyeltek erre a tagadelicnél. mindegy is.
kicsit belenéztem a tagadelic modulba és egyetlen db_query -t talátlam benne, aminek nagyon megörültem. sikerült hamar átformálnom úgy ezt a részt, hogy a lekérdezés figyelembe vegye az aktuális nyelvet.
persze rögtön beleszaladtam abba is, hogy a tagadelic cache -t is használ, szóval eleinte minden nyelvváltás után ürítenem kellett devellel a cache -t, hogy frissüljön a címkefelhő, de hamar megoldottam ezt is.
szóval a témaidnító problémára visszatérve, nekem nyelvfüggők lesznek a címkefelhők, ha áthekkelem a tagadelic.module -t így:
210. sor:
function tagadelic_get_weighted_tags($vids, $steps = 6, $size = 60) { // build the options so we can cache multiple versions $options = implode($vids) .'_'. $steps .'_'. $size; // + Get current language global $language; // Check if the cache exists $cache_name = 'tagadelic_cache_'. $options .'_'. $language->language; $cache = cache_get($cache_name); // make sure cache has data if (isset($cache->data)) { $tags = $cache->data; } else { if (!is_array($vids) || count($vids) == 0) { return array(); } $result = db_query_range('SELECT COUNT(*) AS count, d.tid, d.name, d.vid, d.language FROM {term_data} d INNER JOIN {term_node} n ON d.tid = n.tid WHERE d.language="%s" AND d.vid IN ('. substr(str_repeat('%d,', count($vids)), 0, -1) .') GROUP BY d.tid, d.name, d.vid ORDER BY count DESC', $language->language, $vids, 0, $size); $tags = tagadelic_build_weighted_tags($result, $steps); cache_set($cache_name, $tags); } return $tags; }
nem tudom, hogy ez "okos" megoldás e (most azt leszámítva, hogy modulba belehekkelni sose olyan okos). ha túl nagy hülyeség, úgyis szól majd valaki, hogy héló, az nem hurok.. ;)
-
clear: both;
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
idő hiányában mutatok egy példát
a buborékablakot egy sminkfüggvénnyel tudod piszkálni. ezt a függvényt megtalálod a gmap.module -ban, a neve theme_gmap_views_marker_label. ezt lemásolod és a sminked template.php filejában sminkneve_gmap_views_marker_label néven módosítod kedvedre.
mutatok egy példát, ez egy 5.x drupal, valamelyik gmap 5.x verzió és a views modullal csináltam egy nézetet, melynek típusa "Gmap View":
http://keret.hu/portal/hu/terkep/477
ez egy "kísérleti" térképes megoldás, egyéb okok miatt kicsit befulladt, de végülis működik és megvalósítja amit akarsz, egyedi buborékablakokat csinál. amikor egy "placemark" -ra kattintasz, a buborékot ez a függvény állítja elő:
<?php # # gmap_views infoWindow themeing # function glossyblue_gmap_views_marker_label($view, $fields, $entry) { $marker_label = ''; $field = $view->field[2]; $nid = views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $entry, $view); $node = node_load($nid); $text = "<div class='gmap-popup'>"; $text .= "<a href='/portal/hu/node/".$node->nid."'><h3>".$node->title."</h3></a>".$node->teaser."<br /><a href='/portal/hu/node/".$node->nid."'>tovább...</a></div>"; if ($node->node_images){ $image = array_shift($node->node_images); $img = "<img src='".file_create_url($image->thumbpath)."'>"; $tabs = array( 'Leírás' => $text, 'Kép' => $img, ); } if ($tabs){ return $tabs; }else{ return $text; } } ?>
a példa kicsit dört és nagyon egyedi, szóval nem tudod kopipészt technikával használni, de az elvet mutatja. (a buborék kattintásra a $node->teaser szövegét mutatja és az egyes helyekhez node_images modullal lehet képeket kapcsolni, ezek közül a legkisebb súlyú a buborékban egy külön megtekinthető)
remélem tudtam segíteni, ha további kérdésed lenne, ne tartsd vissza magad ;)
-
clear: both;
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
Írtam neked egy modult
Ez nem igaz! Csak a user modulból kivettem és átírtam a szükséges részeket.
A modul neve newuser. Csinálj neki egy könyvtárat a szokott helyen és tedd bele az info és a module fájlt.
Az info fájl tartalma:
; $Id: newuser.info v1.0 2008.08.27 $
name = "New User"
description = "Online felhasználók számát írja ki"
core = 6.x
A module fájl tartalma:
/** * Implementation of hook_block(). */ function newuser_block($op = 'list', $delta = 0, $edit = array()) { global $user; if ($op == 'list') { // Too dynamic to cache. $blocks[0]['info'] = t('Who\'s online'); $blocks[0]['cache'] = BLOCK_NO_CACHE; return $blocks; } else if ($op == 'view') { $block = array(); if (user_access('access content')) { // Count users active within the defined period. $interval = time() - 900; // Perform database queries to gather online user lists. We use s.timestamp // rather than u.access because it is much faster. $anonymous_count = sess_count($interval); $authenticated_users = db_query('SELECT DISTINCT u.uid, u.name, s.timestamp FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.timestamp >= %d AND s.uid > 0 ORDER BY s.timestamp DESC', $interval); $authenticated_count = db_affected_rows($authenticated_users); $full_count = $authenticated_count + $anonymous_count; // Format the output with proper grammar. $output = 'Jelenleg ' . $full_count . ' felhasználó van a webhelyen.'; $block['subject'] = t('Who\'s online'); $block['content'] = $output; } return $block; } } Mielőtt éles oldalra teszed, teszteld, mert csak sietve ütöttem össze munka közben (és nem ez a munkám).
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
theme_imagefield_image
hirtelen ezt találtam neked.
ezt az imagefield.module -ban találod.
saját template.php -dba átmásolod, SMINKNEVE_imagefield_image -re átnevezed, módisítod.
persze para, mert nem áll rendelkezésre a $node...
function theme_imagefield_image($file, $alt = '', $title = '', $attributes = null, $getsize = true) { $file = (array)$file; if (!is_file($file['filepath'])) { return '<!-- file not found: '. $file['filepath'] .' -->'; } $image_attributes = array(); if (!$getsize || (list($width, $height, $type, $image_attributes) = @getimagesize($file['filepath']))) { $attributes = drupal_attributes($attributes); $alt = empty($alt) ? $file['alt'] : $alt; $title = empty($title) ? $file['title'] : $title; $url = file_create_url($file['filepath']); /* itt kéne ugye bepakolni valahogyan a $node->title -t, de ez itt nem áll rendelkezésre.. */ return '<img src="'. check_url($url) .'" alt="'. check_plain($alt) .'" title="'. check_plain($title) .'" '. $image_attributes . $attributes .' />'; } return '<!-- could not get imagesize, possibly corrupt or non image. '. $file['filepath'] .' -->'; }
másik megoldásként az jutott eszembe, hogy (már megint ezzel jövök..:) a template_preprocess_node -ban írod felül a mező kimeneti értékét, ott ugyanis minden rendelkezésre áll, ami kell. most nincs időm pontos kódot adni, ami megcsinálja ezt, próbáld ki, kérdezz. (ha lesz időm és még nincs megoldás, megírom pontosan azt)
-
clear: both;
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
languages tábla létrehozása
Könnyen meglehet, hogy itt tárhely problémák vannak/lesznek. Mindenesetre az alábbi SQL kóddal létrehozhatod a languages táblát a magyar és az angol nyelvvel.
-- -- Tábla szerkezet: `languages` -- CREATE TABLE IF NOT EXISTS `languages` ( `language` varchar(12) NOT NULL default '', `name` varchar(64) NOT NULL default '', `native` varchar(64) NOT NULL default '', `direction` int(11) NOT NULL default '0', `enabled` int(11) NOT NULL default '0', `plurals` int(11) NOT NULL default '0', `formula` varchar(128) NOT NULL default '', `domain` varchar(128) NOT NULL default '', `prefix` varchar(128) NOT NULL default '', `weight` int(11) NOT NULL default '0', `javascript` varchar(32) NOT NULL default '', PRIMARY KEY (`language`), KEY `list` (`weight`,`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -- A tábla adatainak kiíratása `languages` -- INSERT INTO `languages` (`language`, `name`, `native`, `direction`, `enabled`, `plurals`, `formula`, `domain`, `prefix`, `weight`, `javascript`) VALUES ('en', 'English', 'English', 0, 1, 0, '', '', '', 0, ''), ('hu', 'Hungarian', 'Magyar', 0, 1, 0, '', '', 'hu', 0, '8582a244f490b74610256ab428690e24');
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
Én így
csináltam: Callback-en, újraépítettem a form-ot. Példa *ezt háromnegyed éve csináltam kb*: van 2 select-ed *itt csak 1-et választhat ki a felhasználó* és van még 4 multiple selected *itt nyílván többet választhat ki.*
A feladat az volt, hogy a form elementeket, a legelső select kivételével, újra kellett építeni minden "click" eseményen.
Ezt úgy csináltam, hogy mindegyik selectnek ugyan azt a wrappert és path-ot (a method replace volt) adtam, majd callback-en újra felépítettem a teljes form-ot utánna pedig a régi form-ot cachből behívtam, replaceltem, újraépítettem, becacheltem és rendereltem.
A $new változó az új form.
A $_POST / $_GET a $form_build-nél a lapozó miatt van
code-snipet:
$form_state = array('submitted' => TRUE); $form_build_id = $_POST['form_build_id'] ? $_POST['form_build_id'] : $_GET['form_build_id']; if (!$form = form_get_cache($form_build_id, $form_state)) { exit(); } $form['element1'] = $new['element1']; $form['element2'] = $new['element2']; for ($i = 0; $i <= 3; $i++) { $form['option'. $i] = $new['option'. $i]; } $form['element3'] = $new['element3']; $form = form_builder('your_custom_form', $form, $form_state); form_set_cache($form_build_id, $form, $form_state); $form += array( '#post' => $_POST, '#programmed' => FALSE ); $output = theme('status_messages') . drupal_render_form($form_build_id, $form); print drupal_json(array('status' => TRUE, 'data' => $output)); exit();
*----*----*
$node ? 'alma' : 'bor'
*----*----*
- A hozzászóláshoz regisztráció és bejelentkezés szükséges







üres sorok
Pontosan milyen az a dupla hátterű portál?
Egyébként a forráskódban látszik, hogy a Views modul próbálja kitenni a cikkeket, de a tpl.php sablon már csak egy üres sort kap. Ha közvetlenül kéritek le ezeket a listában szereplő tartalmakat, akkor rendesen jelennek meg? Minek kell szerepelnie a Views listában (cím, teaser nézet...)? Van valamilyen views-.....tpl.php a sminkmappában?