eager képe

Két példa-régiót hozunk létre.

Ez megy a smink .info file-jába:

  1. regions[example_region_one] = My first example region
  2. regions[example_region_two] = My second example region

És így teszed ki a page.tpl.php-ban:

  1. <!-- // Elso regio. -->
  2. <?php if ($page['example_region_one']): ?>
  3. <div id="example-div-1">
  4. <?php print render($page['example_region_one']); ?>
  5. </div>
  6. <?php endif; ?>
  7.  
  8. <!-- // Masodik regio. -->
  9. <?php if ($page['example_region_two']): ?>
  10. <div id="example-div-2">
  11. <?php print render($page['example_region_two']); ?>
  12. </div>
  13. <?php endif; ?>

Ahhoz, hogy használatba tudd venni (hogy a Drupal észrevegye az új régiót), újra kell építtetni a "Theme registry" nevű jószágot:

  • az /admin/config/development/performance oldalon nyomj egy teljes cache törlést, vagy pedig
  • a /admin/appearance/settings/[te-sminked-neve] oldalon nyomj egy mentést.

Utána már a blokkok beállítófelületén kiválasztható, hogy ebbe is kerülhessen blokk (Illetve a "Blokk-régiók mutatása" linkre kattintva kéne, hogy látszódjanak is.)

0
0
Phoere képe

Itt van egy elvileg működő kód.

  1. <?php
  2.  
  3. echo "Az alapüzenet szövege\n\n"; // Ide írd be a kiküldendő szöveget
  4.  
  5. $rid = 3; // a választott szerepkör azonosítója
  6.  
  7.  
  8. $query = 'SELECT ur.uid FROM {users_roles} AS ur WHERE ur.rid = :rid';
  9. $result = db_query($query, array(':rid' => $rid));
  10. $uids = $result->fetchCol();
  11. $users = user_load_multiple($uids);
  12. echo "Az üzenetet megkapták:\n\n";
  13.  
  14. foreach ($users as $user) {
  15. echo $user->name . "\n";
  16.  
  17.  
  18. }
  19. ?>
1
-1

Csökönyi Ferenc

gyuri2012 képe

Köszönöm!
Próbálkoztam így, hosszú ideig azt hittem jó is, aztán megnéztem explorerben is..., amelyik menüpont fölé mentem, az elszaladt ötezerrel balra :) Valamit biztos rosszul csináltam...
Úgyhogy elkezdtem gányolni..., rengeteget. :\
A mostani változat viszont nagyjából ugyanúgy néz ki firefoxban és explorerben is..., majd még szépítgetem, de egy dologra nem bírok rájönni:

Firefoxban ha hover elsődleges menü egy pontja, akkor a többi menüpont lesüllyed néhány pixelt.
ill. talán az lesz magasabban, és emiatt lejjebb tolja az egészet.
Explorerben nem mozog.

Tudtok látatlanban valami ötletet írni arra, hogy ez miért lehet?
Már onnantól kezdve van, hogy van a hover-hez bármi, ill. mióta egy kép a link.

<div id="menuuu"
	  <table style="menug" width="100%" border="0">
  <tr>
 
    <td><a class="menum" href="/bemutatkoz&aacute;s"><img src="/sites/default/files/bemutatkozas.png" alt="BEMUTATKOZ&Aacute;S" width="204" height="40" /></a></td>
    <td><a class="menum" href="/h&iacute;rek"><img src="/sites/default/files/hirek.png" alt="H&Iacute;REK" width="82" height="40" /></a></td>
    <td><a class="menum" href="/esem&eacute;nyek"><img src="/sites/default/files/esemenyek.png" alt="ESEM&Eacute;NYEK" width="161" height="40" /></td>
 
    <td><a class="menum" href="/gal&eacute;ria"><img src="/sites/default/files/galeria.png" alt="GAL&Eacute;RIA" width="103" height="40" /></a></td>
    <td><a class="menum" href="/eredm&eacute;nyeink"><img src="/sites/default/files/eredmenyeink.png" alt="EREDM&Eacute;NYEINK" width="204" height="40" /></td>
    <td><a class="menum" href="/kapcsolat"><img src="/sites/default/files/kapcsolat.png" alt="KAPCSOLAT" width="145" height="40" /></td>
 
  </tr>
</table>
</div>
 
#menuuu {
	position: absolute;
	z-index: 5000000;
	left: 30px;
	top: 108px;
	}
 
.menu a: table {
	background:#009900;
	}
 
a.menum:hover, a.menum:active {
	background: url(/sites/default/files/hattermenu.png) repeat;
 
	font-size:43px;
 
	}

Mivel most táblázat, /sites/default/files/hattermenu.png helyett, ami amúgy 40 pixel magas jó lenne ha a cella háttere lenne simán egyszínű ha hover, csak ezt nem sikerült megcsinálnom.
Hogyan lehet ilyet?

0
0
sgabe képe

A file_save_upload() használata a helyes út. Ez egyben elvégzi a validálást és a feltöltést is, valamint létrehozza a $file objektumot is, amivel a továbbiakban azt csinálsz, amit akarsz. Az infocsop_application_fer_validate() függvény is teljesen szükségtelen. A hook_validate() node és nem file validálásra van. A submit() hurkodban végrehajthatod az egész műveletet.

update: látom, az nem hook_validate() akart lenni, ettől függetlenül nem kell :)

<?php
function foo_menu() {
	$items = array();
	$items['foo'] = array(
    	'title' => 'Foo',
    	'page callback' => 'page_example_foo',
    	'access arguments' => array('access content'),
	);
	return $items;
}
 
function page_example_foo() {
	return drupal_get_form('foo_form');
}
 
function foo_form(&$form_state){
	$form['#attributes'] = array('enctype' => "multipart/form-data");
 
    $form['upload'] = array(
		'#type' => 'file',
    	'#title' => 'Filename'
	);
 
	$form['submit'] = array(
    	'#type' => 'submit',
    	'#value' => 'Upload file',
    	"#submit" => array("foo_submit"),
	);
 
	return $form;	
}
 
function foo_submit($form, &$form_state){
	$validators = array('file_validate_extensions' => array('txt'));
	$path = file_directory_path()."/directory";
	if (file_check_directory($path, FILE_CREATE_DIRECTORY)) {
	  	if ($file = file_save_upload('upload', $validators, $path)) {
	  		$name = $_FILES["files"]["name"]["upload"];
			  drupal_set_message("The ". "$name"." file was uploaded.");
		}
	}
}
?>
0
0
kkwx képe

ú, mégse :(, ez nagyon jó kis modul és hasznos. fel is használnám ezt a weblapon ha nem az lenne a feladatom, hogy írjak egy modult :(, így még mindig az űrlap megjelenítésével bajlódok :(...

megírtam a modult (remélem jól), majd aktiváltam a modult a weblapon, de megjeleníteni nem tudom :(. olvastam neten, hogy a "drupal_get_form()"-al vagy a "drupal_execute()" funkciókkal lehet csinálni, de nem teljesen értem a működésüket, hogy ezeket hova írjam, miket kell meadni paramétereknek ($form_id, &$form_state...) és utána hol jelenik meg az űrlap?

Bocs ha nagyon idióta dolgokat kérdezek, csak sajnos nem nagyon találtam használható magyar leírást, pedig hasznos lenne a modulírás / űrlapcsinálásról valami ami elmagyarázná a dolgokat :( (vagy lenne egy sima űrlap modulra példám :) ), persze tudok angolul, de olyan szinten nem, hogy teljes mértékben megértsem a leírásokat...
Szóval kösz előre is minden segítséget :)

ez a kódom a modul fájlban:

function room_reserver_init() {
	// drupal_set_message(t('Drupal modulom.'));
}
function room_reserver_myform() {
  $form['firstname'] = array(
    '#type'=> 'textfield',
    '#title' => t('First name'),
    '#required' => TRUE,
  );
  $form['lastname'] = array(
    '#type'=> 'textfield',
    '#title' => t('Last name'),
    '#required' => TRUE,
  );
  $form['radio'] = array(
    '#type' => 'radio',
    '#title' => t('Sex'),
    '#default_value' => 'Male',
    '#options' => array(
      1 => 'Male',
      2 => 'Female',
    ),
    '#description' => t('Please choose an option.'),
  );
$form['submit'] = array(
  '#type' => 'submit',
  '#value' => t('Elküldés'),
);
  return $form;
}
function room_reserver_menu() {
  $items = array(); 
  $items['reservation'] = array(
    'title' => 'Foglalás',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('room_reserver_myform'),
    'type' => MENU_NORMAL_ITEM,
    'access arguments' => array('access content'),
  ); 
  return $item;
}
function room_reserver_page() {
  return drupal_get_form('room_reserver_myform');
}
0
0
szantog képe

Én ezt így csináltam meg, fél évvel ezelőtt, ma már lehet, tudnék rá szebb módot is:

Nekem az volt a lényeg, hogy ul liben jelenjenek meg. Nem fűzhettem a vesszőt magához az $itemhez, mert különben a vessző bekerült a linkbe, azt meg nem szeressük.

function SMINKNEVE_content_view_multiple_field($items, $field, $values) {
  $output = '';
  $i = 0;
//ezt a feltételt lehet bárhogy alakítani, ahogy jó, én már nem emlékszem, hogy nekem miért így volt jó..
  if ($field['field_name'] == 'MEZŐNEVE' && $field['type_name'] == 'TÍPUSENEVE') {
    $output .='<ul class="MEZŐNEVE">' ;
    foreach ($items as $item) {   
      if (!empty($item) || $item == '0') {
        $output .= '<li class="field-item field-item-'. $i .' '. ($i % 2 ? 'odd' : 'even');
        if ($i == 0) {
          $output .= ' first'; 
        } 
        if ($i != count($items)-1) {
          $output .= ' no-last'; 
        } 
        $output .= '">'. $item .'</li>';
        $i++;
      }
    }
    $output .= '</ul>';    
    return $output;
  }
//ez az eredeti theme_content_view_multiple_field.
  foreach ($items as $item) {
 
    if (!empty($item) || $item == '0') {
      $output .= '<div class="field-item field-item-'. $i .' '. ($i % 2 ? 'odd' : 'even');
      if ($i == 0) {
        $output .= ' first'; 
      } 
      if ($i != count($items)-1) {
        $output .= ' no-last'; 
      } 
      $output .= '">'. $item .'</div>';
      $i++;
    }
  }
  return $output;

Na és ezután css:

.no-last:after{
	content: ",";
}
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.

aranyozottpatkoszeg képe

Sikerült egy megoldást gyártanom, de elég csúf

template.php

function OWNTHEME_preprocess_node(&$vars) {
 
  if ($vars['page'] == TRUE ) {
 
    //ujra betoltjuk a nodeot, hogy legyen erteke a teasernek, ne csak egy kapcsolo legyen
    $node = node_load($vars['nid']);
 
    //csak az érdekel, ha nincs külön summary
    if($node->body[$node->language][0]['summary'] == '')  {
        //megkérjük, hogy alkossa meg a summary-t, ahogy szereti
    $text = text_summary($node->body[$node->language][0]['value'], $node->body[$node->language][0]['format']);
        // formázza is meg szépen
    $vars['summary_x'] = check_markup($text, $node->body[$node->language][0]['format'], $node->language, FALSE);
    }
 
   // az új $vars['summar_x']-be betoltuk a kiemelendő summary-t most az új $vars['body_x']-ből kiszedjük, hogy ne legyen duplázás
   $vars['body_x'] = str_replace($vars['summary_x'],"",check_markup($node->body[$node->language][0]['value'], $node->body[$node->language][0]['format'], $node->language, FALSE));
}
}

Most már olyan div-ekbe rakjuk, amilyenbe akarjuk

node.tpl.php:

   print("<div class='summary_x'>"); print render($summary_x); print("</div>");
   print("<div class='body_x'>"); print render($body_x); print("</div>");

Fontos még, hogy a "Manage fields"-nél beállítsuk, hogy oldal nézetben ne jelenjen meg a body.

Itt még nem vettem figyelembe ezt: ezzel lefejezed a mező megjelenítéséket

0
0
Sima képe

Van a comment.tpl.php és a node.tpl.php.

A node.tpl.php-ban (lightweight) szerepel:
<?php print render($content['comments']); ?>

Nos, ha jól látom, akkor az történik, hogy comment.tpl.php sablon alapján "kirajzolja" a beküldött kommenteket. Majd hozzádobja ezt, az új hozzászólások formot.

Nem lehet hide()-dal valahogy kihagyatni és később kirajzoltatni?

Tehát valami hasonlót szeretnék elérni:
comment.tpl.php:

<?php // $Id: comment.tpl.php,v 1.1.4.1 2009/02/03 02:50:21 ipwa Exp $ ?>
<li>
  <cite><?php print $author; ?></cite> on <?php print format_date($comment->timestamp); ?>
  <div class="commenttext">
      <?php
        // We hide the comments and links now so that we can render them later.
        hide($content['links']);
        print render($content);
      ?>
  </div>
  <?php if ($picture) : ?>
    <br class="clear" />
  <?php endif; ?>
  <div class="links"><?php print render($content['links']); ?></div>
</li>
<div id="ittadivem">

node.tpl.php:

<div id="node-<?php print $node->nid ?>" class="node node-<?php print $node->type ?>">
 
  <?php if (!$page): ?>
    <h2 class="teaser-title">
      <a href="<?php print $node_url ?>" title="<?php print $title ?>">
        <?php print $title ?>
      </a>
    </h2>
  <?php endif; ?>
 
  <div class="content clear-block">
    <?php print $user_picture; ?>
    <?php
      // We hide the comments and links now so that we can render them later.
      hide($content['comments']);
      hide($content['links']);
      print render($content);
    ?>
  </div>
 
  <?php if (render($content['links'])):?>
    <div class="node-links"><?php print render($content['links']); ?></div>
  <?php endif; ?>
 
  <?php print render($content['comments']); ?>
  </div><!-- ittadivem vége -->
 
</div>

Csak ezzel az a bajom, hogy így minden komment végére odadobja majd a div kezdő tagot!

0
0
realdream képe

A forrás szövegben érdemes elkülöníteni a magyar t és az angol t() függvényeket, mert egyébként egy több ezer soros modulban, nem tudjuk kézben tartani a fordítás állapotát.
Először elkészítjük a modult a hun_t() függvénnyel, majd ha szükséges lesz akkor rákeresünk a hun_t-re és átírjuk angolra a szöveget és sima t()-re.

Íme egy egyszerű példa d6-ban:
Csak az en kellett hu-ra módosítani.

Ezzel a hun_t()-vel megadott szöveget lehet fordítani bármilyen nyelvre a drupal adminisztrációs felületén többek között angolra is.

function sajatmodul_hun_t($string, $args = array(), $langcode = NULL) {
    global $language;
    static $custom_strings;
 
    $langcode = isset($langcode) ? $langcode : $language->language;
 
    // First, check for an array of customized strings. If present, use the array
    // *instead of* database lookups. This is a high performance way to provide a
    // handful of string replacements. See settings.php for examples.
    // Cache the $custom_strings variable to improve performance.
    if (!isset($custom_strings[$langcode])) {
        $custom_strings[$langcode] = variable_get('locale_custom_strings_' . $langcode, array());
    }
    // Custom strings work for English too, even if locale module is disabled.
    if (isset($custom_strings[$langcode][$string])) {
        $string = $custom_strings[$langcode][$string];
    }
    // Translate with locale module if enabled.
    //  elseif (function_exists('locale') && $langcode != 'en') {
    //!! itt figyeljük a magyar nyelvet, az alap string magyar, ezért nem fordítjuk
    elseif (function_exists('locale') && $langcode != 'hu') {
        $string = locale($string, $langcode);
    }
 
    if (empty($args)) {
        return $string;
    } else {
        // Transform arguments before inserting them.
        foreach ($args as $key => $value) {
            switch ($key[0]) {
                case '@':
                    // Escaped only.
                    $args[$key] = check_plain($value);
                    break;
 
                case '%':
                default:
                    // Escaped and placeholder.
                    $args[$key] = theme('placeholder', $value);
                    break;
 
                case '!':
                // Pass-through.
            }
        }
        return strtr($string, $args);
    }
}
4
0

-------------------------------
http://www.realdream.hu

Laci85 képe

Hosszas keresgélés után rájöttem a menü lefordításának megoldására.
Az oldalamon egy un. Superfish menü működik. Ez a menü nem támogatja az i18n modult valamilyen oknál fogva és ezért volt a duplikáció.

A megoldás:

Meg kell nyitni a superfish.module fájlt és a következő részt kell keresni benne:

$cache['menu'] = menu_tree_all_data($menu_name);

ezután be kell szúrni a következő sorokat:

  1. $tree = menu_tree_all_data($menu_name);
  2. // Localize the tree.
  3. if (module_exists('i18n_menu')) {
  4. $tree = i18n_menu_localize_tree($tree);
  5. }
  6. $cache['menu'] = $tree;

Újabb keresés erre:

  1. $var = array(
  2. 'id' => $id,
  3. 'menu' => $cache['menu'],
  4. 'depth' => $depth,
  5. 'trail' => superfish_build_page_trail(menu_tree_page_data($menu_name)),
  6. 'sfsettings' => $sfsettings
  7. );

Ha megvan, akkor alá beszúrni ezt:

  1. $tree = menu_tree_page_data($menu_name);
  2. // Localize the tree.
  3. if (module_exists('i18n_menu')) {
  4. $tree = i18n_menu_localize_tree($tree);
  5. }
  6. $var = array(
  7. 'id' => $id,
  8. 'menu' => $cache['menu'],
  9. 'depth' => $depth,
  10. 'trail' => superfish_build_page_trail($tree),
  11. 'sfsettings' => $sfsettings
  12. );

Mentés, feltöltés és kész. A superfish menü máris fordítható. Az eredeti fájlról nem árt előtte egy mentést készíteni.

0
0