Pasqualle képe

a parametereket az adott sorrendben es mindet ki kell tolteni..

function szotar_delete(&$form_state, $szotarid) {
  $form['#szotarid'] = $szotarid;
  return confirm_form($form, 'Biztos törlöd?', '/valahova', NULL, t('Delete'));
}
 
function szotar_delete_submit($form, &$form_state) {
  $form_state['redirect'] = '/valahova'; 
  // SQL delete
  db_query("DELETE FROM {table} WHERE szotarid = %d", $form['#szotarid']);
  drupal_set_message( 'Bejegyzés törölve.' );
}

es ilyet ne csinalj

'Biztos törlöd a/z/ ' . $SZOTARID . ' azonosítót?',

hogy beszursz a szovegbe valamit ami az url-bol jon, mert nagyon nagyon veszelyes. hasznald helyette a t() fuggvenyt.
0
0
aboros képe

nagyon egyszerű!

hirtelen nem is jut eszembe egyszerűbb módja annak amit csinálni akarsz.
a legegyszerűbb az lenne, ha egy saját modulban megvalósítva a hook_nodeapi hurkot az insert opnál lefuttatnád a dolgaidat.

ez most így lehet földönkívüliül hangzik, úgyhogy össze is ütök neked egy ilyet, mint egy rántottát, kb addig is tart amúgy :) figyedoda:

csinálj a sites/all/modules alatt egy mappát a leendő modulkánknak, legyen a neve mondjuk myinsert. (ez lesz a modul neve is!)
ebbe a mappába két file lesz, rendre ezek, itt a tartalmuk is.

myinsert.info:

name = MyInsert
description = Fires custom php code on node insert with hook_nodeapi.
package = Other
core = 6.x

myinsert.module:
/* implementation of hook_nodeapi() */
function myinsert_nodeapi($node, $op) {
	switch($op) {
	case 'insert':
		drupal_set_message('yahoo, it works!');
                /* figyedoda, itt kell csinalnod a zsivanysagot */
		break;
	}
}

mindegyiket mented, admin felüleleten, modulok között az egyéb részben megtalálod, bekapcsolod, kész. nem egy agyátültetés. :) persze ez így még semmit nem csinál, csak amikor egy _bármilyen_ node létrejön (amikor már létező node frissül, akkor nem!!!) szóval amikor létrejön egy _bármilyen_ node, akkor kiíratja a drupallal a 'yahoo, it works!' üzenet. szóval ez inkább csak egy 'így kell csinálni azt' modulembrió. :)

arra kell még figyelni, hogy a .module fileokban mindig van php nyitó teg 'kacsacsőr-kérdőjel php', de soha nincs záró teg, azaz a végén nincs kérdőjelkacsacsőr. (most itt a hozzászólásomban azért van, mert anélkül nem menne itt a php szintaksz színező)

kicit több magyarázat találsz a hook_nodeapi hurokról itt:
http://api.drupal.org/api/function/hook_nodeapi/6

jóétvágyat! csemegeubi? ;)

0
0

-
clear: both;

eMeLA képe

Úgy, hogy írsz egy script-et, ami a files táblában lévő útvonalakat átírja az új útvonalakra.
"Véletlenül" volt kéznél egy ilyen script:

include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
 
$sql = db_query('SELECT * FROM {files}');
 
while ($t = db_fetch_object($sql)) {
 
    if(strpos($t->filepath, 'iles/')) { // na igen ez bénuska, meg ciki is ha van iles/ alkönyvtár :)
    	$ki = 'UPDATE {files} SET filepath = "sites/all/'.$t->filepath).'" WHERE fid = '.$t->fid;    	
    	print $t->filepath." ----> ".$ki."<br>";
    	//db_query($ki);
    }    
}

1. előtte adatbázis mentés
2. lefuttat, és megnéz, hogy az adatbázis műveletek megfelelőek-e
3. a //db_query($ki); elöl kiveszi a kommentet, és újra fottat
4. megnézi az oldalon, hogy minden jó-e, ha nem adatbázis vissza, script javít és 2. ponttól újra

(nem vagyok programozó, bizonyára lehet szebben is megírni a scriptet, aki tudja szépítse ;)

0
0

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

szantog képe

Ez nem tudom milyen smink, de több sebből is vérzik, illetve nagyon nem "drupalisch" megoldások vannak benne.

a <span class="submitted">Posted on <?php echo date("d. M, Y", $created).t(' by ').$name; ?></span>-ot cseréld le erre:

<span class="submitted"><?php print t('Posted on') . ' ' . $created) . ' ' t('by') . ' ' . $name; ?></span>

De méginkább:

<span class="submitted"><?php print $submitted ?></span>

Akkor hogy miért is rossz, ami benne van, csak mert most kedvem van ilyeneket írni. :)
A t függvény mindenképpen használandó, ha nem akarunk fixen beégetett fordíthatatlan szövegeket, márpedig drupal oldalban ilyet nem akarunk. Volt benne egy ilyen, hogy t(' by ') ez viszont egy érdekes kérdés, mivel _általában_ kezdő, záró szóközöket nem teszünk t-be, ebben az esetben azonban érdekes lehet a magyar fordítás.

A másik hatalmas hiba, hogy drupalban nem írunk ki direkt dátumformatumot, hanem használjuk a format_date függvényt.

Szóval a legtutibb az, hogy a második verziót írod a sminkedbe, és ha az így kapott szöveg nem tetszik, akkor a sminkedbe szépen bemásolod sminkedneve_node_submittedként ezt a függvényt: http://api.drupal.org/api/drupal/modules--node--node.module/function/the... és ott úgy alakítod, ahogy akarod.

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.

Den képe

István ezt ajánlotta:

<span class="submitted"><?php print t('Posted on @created by @name', array('@created' => $created, '@name' => $name)); ?></span>

Jó megoldás, mert egyetlen stringet kell majd lefordítani: 'Posted on @created by @name' - ahova a fordítási alrendszer a @created helyére dátumot, a @name helyére meg a szerzőt fogja betenni.

Ezt a két paramétert itt biztosítjuk neki:

array('@created' => $created, '@name' => $name)

Mint látod, a @created értéke a te $created változóddal értékével lesz feltöltve, ahogy az van, úgy fog bekerülni a fordításba - unix timestampként - az unix 0 időszámítástól kezdve eltelt másodpercek száma.

Mivel neke ez nem jó, cseréld a paramétert az eredeti node.tpl-edben (te küldted be) lévő date("d. M, Y", $created) - formátumra.

<?php print t('Posted on @created by @name', array('@created' => date("d. M, Y", $created), '@name' => $name)); ?>

Ennyi lenne.. A span-eket tedd köré, és máris fordítható a szöveg:

0
0
Illyés Edit képe

Minek vacakolni &uid= és hasonlókkal? (Ha ragaszkodsz hozzá, akkor az urlencode() környékén nézz szét, ott lesz a hiba.)

<?php
$url = 'valami/eleresiutvonal';
$query = $uid .'/'. $username;
$url = l($linktext, $url, NULL, $query);
?>

Ebből csinál neked az l() egy ilyen útvonalat: valami/eleresiutvonal?122/pistike. Ha pedig a másik oldalon kellenek az adatok, akkor szétrobbantod a kérdőjelnél:

<?php
$url = request_uri();
$query = explode('?', $url);
$data = explode('/', $query[1]);
$uid = $data[0];
$username = $data[1];
?>
0
0
Sk8erPeter képe

Kicsit régi topic, de épp ilyesmi kellett nekem, szóval akkor már leírom, hogy meglegyen az utókornak.

Dokumentáció:

http://drupalcode.org/project/colorbox.git/blob_plain/refs/heads/7.x-1.x...

iframe megjelenítése

"Enable Colorbox load" beállítása után ilyesmi linkkel:

  1. <?php
  2. $query_params['iframe'] = 'true';
  3. $query_params['width'] = 1000;
  4. $query_params['height'] = 800;
  5.  
  6. $url = url('blablabla/cim/123', array('query'=>$query_params));
  7.  
  8. ?>
  9. <p><a href="<?php echo $url;?>" class="colorbox-load"><?php echo t('View blablabla in an overlay') ?></a></p>

Ilyen jellegű címet fog generálni:

http://example.com/blablabla/cim/123?iframe=true&width=1000&height=800

Szerk.: ha valakiben felmerülne, miért nem dobom be egyszerűen a href-be a címet (pl. <a href="/blablabla/cim/123" class="colorbox-load">...</a>), akkor a magyarázat:

  1. a Drupal lehet alkönyvtárban is (én pl. most épp az egyik projektnél így használom), tehát ha a http://example.com/drupal alkönyvtárban helyezkedik el a Drupal, akkor is helyes hivatkozási címet fog generálni az url() függvény a $base_url-hez képest, pl.:

    <a href="http://example.com/drupal/blablabla/cim/123?iframe=true&width=1000&height=800" class="colorbox-load">...</a>

  2. További indok az url() használatára: a $query_params tömb akár ki lehet bővítve további query stringekkel, pl. akár a $_GET tömbből; képzeljünk el mondjuk egy view-t, sok-sok exposed filterrel, és vegyük azt az esetet, hogy az immár szűrt query stringeknek megfelelően szeretnénk linkelni egy ColorBoxos iframe-ben megjelenő view-t (pl. lásd ezt).
3
0
jabba306 képe

Természetesen tudok kódot mutatni.
A feladat, amit meg kell valósítanom az az, hogy egy field collection-ben mező szerepel. Korlátlan field collection-t hozzá lehet adni a node-hoz.
Az egyik mezőt, csak létrehozni és megmutatni lehet, szerkesztést nem lehet engedélyezni.

Viszont a FC-ben lévő többi mező szerkeszthető, de a beállítás függ a nem szerkeszthető mezőtől. A node-edit oldalon ugyanakkor az előbb említett mező nem jelenik meg. Ezért telepítettem a markup modult és próbáltam a markup-nak átadni az említett mező értékét, hogy megjelenjen. Ez működik is, de amít úgy field collectiont adok hozzá a beállított markup érték az ajax hívás miatt visszaáll.

A kód, amit eddig írtam így néz ki:

function mymodule_form_alter(&$form, &$form_state, $form_id) {
   if ($form_id == 'ingatlan_node_form') {
 
		if ($node = menu_get_object()) {
		// Get the nid
		$nid = $node->nid;
		}
 
		$query = db_select('field_data_field_feladat', 'f');
		$query->join('field_data_field_leiras', 'l', 'f.field_feladat_value = l.revision_id');
		$query->fields('f', array('delta'));
		$query->fields('l', array('field_leiras_value'));
		 $query ->condition('f.entity_id', $nid, '=');
		 $query ->orderby('f.delta', 'ASC');
		$result = $query->execute();
 
		foreach($result as $row) {
			$form['field_feladat'][LANGUAGE_NONE][$row->delta]['field_sz_veg'][LANGUAGE_NONE]['0']['markup']['#markup']=$row->field_leiras_value;
 
 
		}
	}	  
return $form;
}
0
0

A Drupal.hu és a kézikönyv licence

Hojtsy Gábor képe

A Magyar Drupal Kézikönyv és a Drupal.hu más tartalmai a Creative Commons Attribution-ShareAlike 2.0 (magyarul Creative Commons Nevezd meg! - Így add tovább! 2.0) licenc szerint érhetők el, és használhatók fel. Ez röviden azt jelenti, hogy a dokumentum újrahasznosításakor az eredeti szerzőket mindenképpen ki kell emelni, és a keletkező dokumentum más licenc alatt nem terjeszthető.

Kézikönyv: 

Gallery2 nem működik

Luki képe

Sziasztok!

Gallery2-t szeretnék integrálni a portálomba.
Letöltöttem és engedélyeztem a filestore2 és fscache modulokat (ha jól vettem ki, akkor ezekre szükség van). Letöltöttem és telepítettem a gallery-cvs modult.
Letöltöttem a gallery-2.0-alpha-4.tar.gz csomagot, és kitömörítettem a drupal könyvtárába. Amikor elindítom a telepítést (http://www.example.com/drupal/gallery/install/index.php) a következő hibaüzenetet kapom:

Fatal error: session_start(): Failed to initialize storage module: user (path: /var/lib/php4) in /var/www/gy-s-web.hji.local/drupal/gallery2/install/index.php on line 73