gyuxton képe

Köszönöm szépen, az müködik is és nagyon jó. De a villogát zavaró lehet. Ezért jobban tetszene az első PP megoldása. Belejavítottam a kódba:
Főleg a formproba_menu() függvény érdelene, hogy jó-e, mert ebbe javítottam bele. Nem éri el nekem sem a javascript function formproba_feldolg függvényt, pedig megpróbáltam a fórumban említett megoldást is.
Csereli az adatokat, csak a modul frissítésnél kiírja a következő üzenetet:
"
warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\xampp\drupal-6.9\sites\all\modules\formproba\formproba.module:23) in C:\xampp\htdocs\xampp\drupal-6.9\includes\common.inc on line 141.
"
Valamint a formon:
"Nem érvényes választást talált a rendszer. Javasolt a webhely gazdájával felvenni a kapcsolatot."
Tudna valaki segíteni? Köszönöm szépen

function formproba_menu() {
    $items['formproba'] = array(
      'path' => 'formproba',
      'page callback' => 'formproba_page', 
      'title' => 'Form próba',
      'access arguments' => array('access content'),
      'page arguments'   => array('formproba_form'),  
      );
 
    $items['formproba/data'] = array(
      'path' => 'formproba/data',
      'page callback' => 'formproba_data',
      'access arguments' => array('access content'),
      'type' => MENU_CALLBACK);
  return $items;
 
} 

function formproba_page(){
 
  drupal_add_js(drupal_get_path('module','formproba').'/formproba.js');
  return drupal_get_form('formproba_form');
 
}

function formproba_form(){
 
  $form['select1'] = array(
    '#type' => 'select',
    '#title' => 'Első választás',
    '#default_value' => 1,
    '#options' => array(1 => 'gyümölcs',2 => 'növény',3 => 'állat',),
  );
 
  $form['select2'] = array(
    '#type' => 'select',
    '#title' => 'Második választás',
    '#options' => isset($_POST['select1'])?formproba_get_select2($_POST['select1']):formproba_get_select2(1),
  );
 
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Elküld',
  );
 
  return $form;
}

function formproba_form_submit($form_id, $form_values){
  drupal_set_message('<pre>'.print_r($form_values,true).'</pre>');
}

function formproba_data(){
  echo drupal_to_js(formproba_get_select2(arg(2)));
}

function formproba_get_select2($id){
  switch($id){
  case 1: return array('1'=>'alma','2'=>'körte','3'=>'barack');
  case 2: return array('4'=>'fa','5'=>'bokor','6'=>'virág');
  case 3: return array('7'=>'nyuszi','8'=>'róka','9'=>'malac');
  default: return false;
  }
}
0
0
lonalore képe

Szerintem a lényeg az, hogy hova helyezed a tokened, ha benyomod a commerece-order tokenek közé, akkor meg kellene jelennie... ezt egy hook_token_info_alter()-ben könnyedén megteheted, ha neked az jó, hogy a commerece-order részben megjelenik, akkor valahogy így kellene létrehoznod a tokent:

  1. /**
  2.  * Implements hook_token_info_alter().
  3.  */
  4. function MODULOD_NEVE_token_info_alter(&$data) {
  5. $data['tokens']['commerce-order']['tokened-neve'] = array(
  6. 'name' => t('Tokened neve'),
  7. 'description' => t('Tokened leírása.'),
  8. );
  9. }
  10.  
  11. /**
  12.  * Implements hook_tokens().
  13.  */
  14. function MODULOD_NEVE_tokens($type, $tokens, array $data = array(), array $options = array()) {
  15. $replacements = array();
  16.  
  17. if ($type == 'commerce-order' && !empty($data['commerce-order'])) {
  18. $order = $data['commerce-order'];
  19.  
  20. foreach ($tokens as $name => $original) {
  21. switch ($name) {
  22. case 'tokened-neve':
  23. // ide jöhet a kódod, amivel előállítod a token értékét...
  24. $replacements[$original] = "";
  25. break;
  26. }
  27. }
  28. }
  29.  
  30. return $replacements;
  31. }
1
0
eMeLA képe

Az egyik lehetséges megoldás, hogy saját modulban csinálsz egy megjelenítést:

Ez egy 7.x-es példa, de szerintem nem sokban különbözik a 6.x-sem (azt hiszem):

function MODULOM_field_formatter_info() {
  $formatters = array(
    'munka_slideshow' => array(
      'label' => 'Munka slideshow',
      'field types' => array('image')
    ),
  );
 
  return $formatters;
}
 
function MODULOM_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
 
  $elements = array();
  $elements[0] = array(
          '#theme' => 'munka_slideshow', 
          '#items' => $items,
        );
  return $elements;
}
 
function MODULOM_theme() {
  return array(
    'munka_slideshow' => array(
      'variables' => array('item' => NULL, 'path' => NULL, 'image_style' => NULL),
    ),
  );
}
 
function theme_munka_slideshow () {
  return views_embed_view('munka_slideshow', 'default');
}

A lényeg, hogy a CCK megjelenítésnél kiválasztod a "Munka slideshow"-t.
A megjelenést a theme_munka_slideshow-ban tudod beállítani.

0
0

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

eki képe

Köszönöm a választ, és az óvatosságra intést is.

A Multifield, illetve a Field formatter css class használata után így épül fel a kód:

  1. <div class="field field-name-field-linkek field-type-multifield field-label-above aktiv">
  2.  
  3. <div class="field-label">
  4.  
  5. Linkek:
  6.  
  7. </div>
  8. <div class="field-items">
  9. <div class="field-item even">
  10. <div class="field field-name-field-link field-type-link-field field-label-inline clearfix">
  11. <div class="field-label">
  12.  
  13. Link:
  14.  
  15. </div>
  16. <div class="field-items">
  17. <div class="field-item even">
  18. <a target="_blank" href="http://www.valami.hu">
  19.  
  20. http://www.valami.hu
  21.  
  22. </a>
  23. </div>
  24. </div>
  25. ::after
  26. </div>
  27. <div class="field field-name-field-megjegyz-s field-type-text field-label-inline clearfix">
  28. <div class="field-label">
  29.  
  30. Megjegyzés:
  31.  
  32. </div>
  33. <div class="field-items">
  34. <div class="field-item even">
  35.  
  36. megjegyzek valamit
  37.  
  38. </div>
  39. </div>
  40. ::after
  41. </div>
  42. </div>
  43. </div>
  44.  
  45. </div>

Ebben a példában egy aktívként megjelenő Multifield-et jelenít meg, az egyedi azonosítót (aktiv) viszont nem a megfelelő helyre teszi, pl. a field-items classhoz, hanem a legfelsőhöz, vagyis magához a Multifieldhez.

0
0
Alfika képe

Az a baj, hogy ugyan megjeleníti mindkettőt, de külön sorban...
Mondjuk így...

  1. <?php //if (theme_get_setting('image_logo','responsive_blog')): ?>
  2. <?php if ($logo): ?><div id="site-logo"><a href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>">
  3. <img src="<?php print $logo; ?>" alt="<?php print t('Home'); ?>" />
  4. </a></div><?php endif; ?>
  5. <?php //else: ?>
  6. <hgroup id="site-name-wrap">
  7. <h1 id="site-name">
  8. <a href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>">
  9. <span><?php print $site_name; ?></span>
  10. </a>
  11. </h1>
  12. <?php if ($site_slogan): ?><h2 id="site-slogan"><?php print $site_slogan; ?></h2><?php endif; ?>
  13. </hgroup>
  14. <?php //endif; ?>

Tehát amikor elférne, akkor is külön sorban van. Gondolom azt meg css-ben kellene egymás mellé rakni... De sajna nem tudom megoldani...

0
0
aboros képe

nek tűnik. korábban valamilyen témában már szóbakerült ez egyszer, most hirtelen nem találom. nagyon hasonlót tudok szerintem mutatni, bár ez használ views -t is és amúgy is lehetséges, hogy nem valami elegáns, majd megmondja aki jobban tudja, hogy rossz, ha az. :)

szóval én úgy okoskodtam, hogy csináltam egy nézetet, ami különböző argumentumok alapján egy listát ad vissza. (nekem két argumentum is van, de ez ne zavarjon) ezután, csináltam egy blokkot, ami php kód és ezt a nézetet hívogatja a megfelelő argumentumokkal. remélem érthető.

mutatom, nézzük élőben például ezt:
http://www.bor-neked.hu/bor/pazmandi-juhfark
jobb oldalon van egy "bor menü" .. annak a blokknak a kódja pedig ez:

<?php
$nid = arg(1);
 
//pince lehivasa
$vid = 11;
$pinceterms = taxonomy_node_get_terms_by_vocabulary($nid, $vid);
foreach ($pinceterms as $pince){
  $pinceid=$pince->tid;
}
 
//borvidek lehivasa
$vid = 10;
$borvidekterms = taxonomy_node_get_terms_by_vocabulary($nid, $vid);
foreach ($borvidekterms as $borvidek){
  $borvidekid=$borvidek->tid;
}
 
//kimenet
global $current_view;
$view1 = views_get_view('proba');
 
//borvidék
$current_view->args[0] = $borvidekid;
$current_view->args[1] = 'borvidek';
print "<strong>Borvidék:</strong><br />";
print (views_build_view('block', $view1, $current_view->args, false, false));
 
//picészet
$current_view->args[0] = $pinceid;
$current_view->args[1] = 'pinceszet';
print "<strong>Pincészet:</strong><br />";
print (views_build_view('block', $view1, $current_view->args, false, false));
 
//pincészet borai
$current_view->args[0] = $pinceid;
$current_view->args[1] = 'bor';
print "<strong>A pincészet borai:</strong><br />";
print (views_build_view('block', $view1, $current_view->args, false, false));

ha jól értem pont ilyesmire gondoltál, csak neked elég egy tartalomtípust listázni, szóval elég lesz egyetlen argumentum is. (fenti példában argumentumként kapja meg a nézet azt is, hogy melyik tartalomtípusra vagyok kíváncsi éppen)

most nézem, hogy ez azért tényleg nem valami elegáns helyenként, jórégen csinálhattam amindenit. ;) de iránymutatásnak jó szerintem, próbáld ki! persze akkor lennél a legnagyobb, ha írnál erre egy picike modulkát, ugyebár. ;)

0
0

-
clear: both;

pero képe

Az alábbi kód működik:

  1. function karbantartasi_szerzodesek_form($form, &$form_state, $defalt_gyariszam) {
  2.  
  3.  
  4. $form['gyariszam'] = array(
  5. '#type' => 'select',
  6. '#tree' => true,
  7. '#title' => 'Gyári szám',
  8. '#attributes' => array('class' => array('product-chosen'),),
  9. '#empty_option' => t('- Select -'),
  10. '#options' => $gyariszamok,
  11. '#required' => TRUE,
  12. '#default_value' => isset($defalt_gyariszam) ? $defalt_gyariszam : NULL,
  13. '#ajax' => array(
  14. 'callback' => 'karban_adatok_ajax_callback',
  15. 'wrapper' => 'karban_wrapper',
  16. 'method' => 'replace',
  17. 'effect' => 'fade',
  18. ),
  19. );
  20.  
  21.  
  22. $form['karban_wrapper'] = array(
  23. '#type' => 'container',
  24. '#prefix' => '<div id="karban_wrapper">',
  25. '#suffix' => '</div>',
  26. );
  27.  
  28. if ( $form_state['values']['gyariszam'] != '' ) {
  29.  
  30. $form['karban_wrapper']['karban'] = array(
  31. '#type' => 'fieldset',
  32. '#title' => 'GYÁRISZÁM: '.$form_state['values']['gyariszam'],
  33. '#tree' => true,
  34. );
  35.  
  36.  
  37. $form['karban_wrapper']['karban']['tevekenyseg'] = array(
  38. '#title' => t('Tevékenységek'),
  39. '#type' => 'textarea',
  40. );
  41. }
  42.  
  43.  
  44. $form['submit'] = array(
  45. '#value' => 'Mehet',
  46. '#type' => 'submit',
  47. );
  48.  
  49.  
  50. return $form;
  51. }
  52.  
  53. function karban_adatok_ajax_callback($form, $form_state) {
  54. return $form['karban_wrapper'];
  55. }
0
0
szantog képe

Az ilyen esetekben lehet használni a CCK prefix-suffix rendszerét, ha jól emlékszek, html-t is lehet benne használni.
Ez a következőt csinálja: A tartalom beküldésénél a form elem elé, és után teszi a h2 és /h2 tag-et - ami a form elemnél nem biztos, hogy szép, de megjelenésénél szépen összefűzi ezeket.
Egy a gond, a textfield típusú mezőknek nem lehet pf/sf cuccot beállítani. Megtehetjük viszont a theme_textfield megvalósításának kis módosításával.
Tehát vegyél fel egy CCK textfield-et, alcím névvel.
A smink template.php-jének a végére csapd hozzá:

// ' <h2>' prefix és </h2> suffix beszúrása a weight mezőhöz, mivel a text cck widget alapból nem enged toldalékot használni.
function sminkedneve_textfield($element) {
  $size = empty($element['#size']) ? '' : ' size="'. $element['#size'] .'"';
  $maxlength = empty($element['#maxlength']) ? '' : ' maxlength="'. $element['#maxlength'] .'"';
  $class = array('form-text');
  $extra = '';
  $output = '';
 
  if ($element['#autocomplete_path'] && menu_valid_path(array('link_path' => $element['#autocomplete_path']))) {
    drupal_add_js('misc/autocomplete.js');
    $class[] = 'form-autocomplete';
    $extra =  '<input class="autocomplete" type="hidden" id="'. $element['#id'] .'-autocomplete" value="'. check_url(url($element['#autocomplete_path'], array('absolute' => TRUE))) .'" disabled="disabled" />';
  }
  _form_set_class($element, $class);
 
  if (isset($element['#field_prefix'])) {
    $output .= '<span class="field-prefix">'. $element['#field_prefix'] .'</span> ';
  }
  if ($element['#field_name'] == 'CCK_mezod_neve') {
    $output .= ' <span class="field-prefix">'. '<h2>' .'</span>';
  }
  $output .= '<input type="text"'. $maxlength .' name="'. $element['#name'] .'" id="'. $element['#id'] .'"'. $size .' value="'. check_plain($element['#value']) .'"'. drupal_attributes($element['#attributes']) .' />';
 
  if (isset($element['#field_suffix'])) {
    $output .= ' <span class="field-suffix">'. $element['#field_suffix'] .'</span>';
  }
  if ($element['#field_name'] == 'CCK_mezod_neve') {
    $output .= ' <span class="field-suffix">'. '</h2>' .'</span>';
  }
  return theme('form_element', $element, $output) . $extra;
}

Ezzel eredetileg nekem annyi kellett, hogy egy 'Súly' nevű mezőhöz hozzá kellett tennem egy ' g' suffixet, de sztem h2-vel is működni fog.
0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

vikicica22 képe

„Lehetséges az előre/hátra gombok átszínezése, mert így eléggé furcsán néz ki?”
„Hogyan lehetne megoldani, hogy ha van 1 esemény 1 adott napon, akkor azt a napot "kiemeljem"? (pl. háttérátszínezéssel)”

Css:

/* -------------- Calendar  ------------- */
 
table td.mini, 
table th.mini, 
table.mini td.week {
    padding:0px;
    margin:0;
  }
 
.calendar-calendar table { 
    border-collapse:separate;
    border-spacing:1px;
}
 
.calendar-calendar .mini-day-on {
    background:#EBF4D9 none repeat-x scroll left top;
    border:1px solid #ccc;
    color:#525252; font-weight:bold;
    margin:0px 0px 0px 0px;
    padding:2px 3px 2px 2px;
}
 
.calendar-calendar .mini-day-on a {
    color:#525252; 
    font-weight:normal;
}
 
.calendar-calendar .mini-day-off {
    background:#fff none repeat-x scroll left top;
    border:1px solid #ccc;
    color:#bfbfbf;
    margin:0px 0px 0px 0px;
    padding:2px 3px 2px 2px;
    font-weight: normal;
}
 
.calendar-calendar td {
    color: #525252;
    text-align: right;
}
 
.calendar-calendar td.empty {
    color: #EEEEEE;
}
 
.calendar-empty {
    background-color: #EEEEEE;
    font-size: 0px;
    line-height: 0px;
    padding-bottom: 0px;
}
 
.calendar-calendar .sat .mini-day-off, 
.calendar-calendar .sun .mini-day-off {
    background: none repeat scroll 0 0 #FFF0F5;
    font-weight:normal;
}
 
.calendar-calendar .today .mini-day-off {
    background: none repeat-x scroll left top #CEDDEA;
    border-top: 1px solid #ccc;
    border-bottom: 0px solid #ccc;
    border-left: 1px solid #ccc;
    border-right: 1px solid #ccc;	
    color: #000;
    font-weight:normal;
    margin: 0 0 3px;
    padding: 2px 5px 2px 2px;
}
 
.calendar-calendar .today .mini-day-on {
    background: none repeat-x scroll left top #CEDDEA;
    border-top: 1px solid #ccc;
    border-bottom: 0px solid #ccc;
    border-left: 1px solid #ccc;
    border-right: 1px solid #ccc;	
    color: #525252;
    font-weight:normal;
    margin: 0 0 3px;
    padding: 2px 5px 2px 2px;
}
 
.calendar-calendar tr.odd td.today, 
.calendar-calendar tr.even td.today {
    background:#525252;
    margin:0px 0px 0px 0px;
    padding:0px 10px 0px 0px;
}
 
.calendar-calendar th.days {
    text-transform: capitalize; 
}
 
.calendar-calendar table.mini td.empty {
    background: none repeat scroll 0 0 #e5e5e5;
    border: 1px solid #ccc;	
}
 
.calendar-calendar td.calendar-agenda-hour .calendar-hour {
    font-size: 11px;
    font-weight: bold;
}
 
.calendar-calendar .day-view .full td .inner div.calendar div, 
.calendar-calendar .day-view .full td .inner div.calendar div a {
    margin: 0px;
}
 
.calendar-calendar tr td.today, 
.calendar-calendar tr.odd td.today, 
.calendar-calendar tr.even td.today {
    background-color: #3399CC;
}
 
.calendar-calendar .mini-day-off:hover,
.calendar-calendar .mini-day-on:hover {
    background: #eee;
    color:#525252;	
}
 
.calendar-calendar .mini {
    font-family: Verdana;
    font-size: 10px;
}
 
.calendar-calendar .month-view .full td.single-day div.monthview, 
.calendar-calendar .week-view .full td.single-day div.weekview, 
.calendar-calendar .day-view .full td.single-day div.dayview {
    background: none repeat scroll 0 0 #F9F9F9;
    overflow: hidden;
    padding: 2px;
    width: auto;
    border: 1px solid #EEEEEE;	
}
 
.calendar-calendar .month-view .full .inner .monthview, 
.calendar-calendar .week-view .full .inner .weekview, 
.calendar-calendar .day-view .full .inner .dayview {
    border-radius: 0px;
    display: block;
    float: none;
    margin: 0.25em auto;
    position: relative;
    width: auto;
}
 
.calendar-calendar .day-view td .stripe, 
.calendar-calendar .month-view .full td .stripe, 
.calendar-calendar .week-view .full td .stripe {
    border-radius: 0px;
    height: 5px;
    left: 0;
    top: 0;
    width: 24px;
    z-index: 2;
}
 
.calendar-calendar .views-field-field-idpont {
    color: #000;
}
 
.calendar-calendar .month-view .views-field-title a {
    color: #3399CC;
    font-size: 11px;
    font-weight: normal;
}
 
.calendar-calendar .day-view .views-field-title a,
.calendar-calendar .week-view .views-field-title a {
    color: #3399CC;
    font-size: 11px;
    font-weight: normal;
}
 
.calendar-calendar .month-view .full tr td.today, 
.calendar-calendar .month-view .full tr.odd td.today, 
.calendar-calendar .month-view .full tr.even td.today {
    background: #fff;
    border-left: 2px solid #7FCAF5;
    border-right: 2px solid #7FCAF5;
}
 
.calendar-calendar .month-view .full td.date-box.today {
    border-color: #7FCAF5;
    border-style: solid;
    border-width: 2px 2px 0;
}
 
.calendar-calendar .month-view .full tr td.single-day.today {
    border-bottom: 2px solid #7FCAF5;
}
 
.view .date-nav-wrapper .date-heading h3 {
    color: #C4010F;
    font-family: Arial;
    font-size: 1.6em;
    font-weight: bold;
    line-height: 30px;
}
 
.view .date-nav-wrapper .date-nav { 
    padding:0px;
    margin:0px 0px 3px 0px;
}
 
.view .date-nav-wrapper .date-nav ul {
    margin: 0;
    padding: 0;
}
 
.view .date-nav-wrapper .date-prev {
    background: none repeat scroll 0 0 #DFDFDF;
    border-radius: 5px 0 0 5px;
    float: none;
    font-size: 12px;
    left: 0px;
    padding: 5px 0;
    position: absolute;
    right: auto;
    text-align: right;
    top: 0;
    width: auto;
    z-index: 1;
    margin-left: 0;		
}
 
/* -------------- Calendar end  ------------- */


„Hogyan tudnám lerövidíteni a hónapok neveit (december helyett dec.), mert túl hosszúak és nem férnek ki levágás nélkül?”

template.php

<?php
function yourthemename_date_nav_title($params) {
  $granularity = $params['granularity'];
  $view = $params['view'];
  $date_info = $view->date_info;
  $link = !empty($params['link']) ? $params['link'] : FALSE;
  $format = !empty($params['format']) ? $params['format'] : NULL;
  switch ($granularity) {
    case 'year':
      $title = $date_info->year;
      $date_arg = $date_info->year;
      break;
    case 'month':
      $format = !empty($format) ? $format : (empty($date_info->mini) ? 'F Y' : 'F Y');
      $title = date_format_date($date_info->min_date, 'custom', $format);
      $date_arg = $date_info->year .'-'. date_pad($date_info->month);
      break;
    case 'day':
      $format = !empty($format) ? $format : (empty($date_info->mini) ? 'l, F j Y' : 'l, F j');
      $title = date_format_date($date_info->min_date, 'custom', $format);
      $date_arg = $date_info->year .'-'. date_pad($date_info->month) .'-'. date_pad($date_info->day);
      break;
    case 'week':
        $format = !empty($format) ? $format : (empty($date_info->mini) ? 'F j Y' : 'F j');
      $title = t('Week of @date', array('@date' => date_format_date($date_info->min_date, 'custom', $format)));
        $date_arg = $date_info->year .'-W'. date_pad($date_info->week);
        break;
  }
  if (!empty($date_info->mini) || $link) {
      // Month navigation titles are used as links in the mini view.
    $attributes = array('title' => t('View full page month'));
      $url = date_pager_url($view, $granularity, $date_arg, TRUE);
    return l($title, $url, array('attributes' => $attributes));
  }
  else {
    return $title;
  }  
}
?>


„Illetve, ha a felhasználó rákattint az eseményre, miért nem az adott node-ra ugrik?”
Views -ben kell beállítanod.



Extra dolgok:
Beautytips + calendar_tooltips én még feltelepíteném ezeket a modulokat és akkor 1 nagyon szuper naptárad lenne.

2
0
Hojtsy Gábor képe

Igen, kimaradt jópár érdekes dolog, de legalább bőven van mivel sztorizgatni majd azoknak is, akik már ezt olvasták :)