Dahar képe

Igen, a commerce discount-ot használva rules képzi az akciós árat, az event a termék eladási árának kiszámítása. Ebben a konkrét szabályban 10% kedvezmény van egy 625-ös termbe tartozó termékekre:

  1. { "commerce_discount_rule_discount_prcent_10" : {
  2. "LABEL" : "prcent 10",
  3. "PLUGIN" : "reaction rule",
  4. "OWNER" : "rules",
  5. "TAGS" : [ "Commerce Discount", "Product discount" ],
  6. "REQUIRES" : [
  7. "commerce_discount_product_category",
  8. "commerce_discount",
  9. "commerce_product_reference"
  10. ],
  11. "ON" : { "commerce_product_calculate_sell_price" : [] },
  12. "IF" : [
  13. { "commerce_discount_product_category_has_specified_terms" : { "terms" : "625" } }
  14. ],
  15. "DO" : [
  16. { "commerce_discount_percentage" : {
  17. "entity" : [ "commerce_line_item" ],
  18. "commerce_discount" : "discount_prcent_10"
  19. }
  20. }
  21. ]
  22. }
  23. }
0
0
HF leon képe

Pont ezzel próbálkoztam.

A menüknél nem tudtam a régió nevét átadni csak attribútumként az alábbiak szerint:

  1. /**
  2.  * Implements hook_preprocess_HOOK() for block.html.twig.
  3.  */
  4. function MYskin_preprocess_block(&$variables) {
  5. $variables['content']['#attributes']['data-block'] = $variables['elements']['#id'];
  6. }
  7. /**
  8.  * Implements hook_theme_suggestions_HOOK_alter().
  9.  */
  10. function MYskin_theme_suggestions_menu_alter(array &$suggestions, array $variables) {
  11. // $menu_name = $variables['menu_name'];
  12. if (isset($variables['attributes']['data-block'])) {
  13. $block = \Drupal\block\Entity\Block::load($variables['attributes']['data-block']);
  14. $region = $block->getRegion();
  15. $suggestions[] = 'menu__' . $region;
  16. }
  17. }

Nekem viszont ez a megoldás nem szimpatikus, mert nem szeretnék a html kódban fölös tulajdonságot az elemhez fűzni.

Nem akart működni, amikor sima változót próbáltam a menühöz rendelni.

Van esetleg erre valamilyen működő megoldás, hogy ne attribútumként, hanem mondjuk egy menu_block nevű változóként tudnék a menükhöz fűzni?

Így a suggestions_menu_alter-nél fel tudnám használni a menu_block változót a blokk régiójának lekéréséhez, de a html kódba így nem kerülne bele.

0
0

advanced forum php probléma

joenavran képe

sziasztok

feltettem egy friss oldalra az advanced forumot, es minden szep es jol mukodik, kiveve a legmelyebb szinten, amikor a hozzazsolasokat jeleniti meg. akkor az alap drupalos forum jon elo. a forum hibaelharitasaban ki is emelik ezt a hibat, ezt irjak:
"Problem: The forum overview / topic list pages look fine but the individual threads look like stock Drupal.

Drupal verzió: 
Melyik modulhoz, modulokhoz kapcsolódik a téma?: 

menü <a> tagjebe class-t

gergely képe

sziasztok!

ugy esett hogy egy bizonyos flipv jquery plugint kell hasznalnom. ez ugy mukodik, hogy meg kell adni a szoveget korul vevo html tagnek, hogy class="flipv". mindezt egy ugy szeretnem, hogy hozzaadtam a drupalhoz egy uj menut, majd ezt blockban megjelenitve szeretnem sminkelni.
addig sikerult eljutni, hogy az

<?php
<ul class="menu">
<li class="leaf first flipv">
</li>
<li class="leaf flipv">
</li>
<li class="leaf flipv">
</li>
<li class="leaf last flipv">
</li>
</ul>
Fórum: 
Drupal verzió: 
Melyik modulhoz, modulokhoz kapcsolódik a téma?: 

Übercart e-mail küldés hiba

exitcode képe

Sziasztok!

Valamiért az Übercart nem tudja kiküldeni vásárláskor az értesítő emaileket a vevőknek. Nekem megjön a levél, de a vevőnek nem. Ezt látom is egy szép Mailer-daemon üzenetben. Amikor a vevő befejezi a vásárlást a lenti hibaüzenetet dobja ki neki a "köszönjük a vásárlást" szöveg fölé. A tárhely-szolgáltató véleményét kikértem, csatolom válaszát.

Drupal verzió: 

Levél küldés nem a megszokott módon

gepidak képe

Van egy drupalos oldalam, ahol csak egyetlen egy oldalt kellene rábírnom, hogy egy egyszerű megrendelés tartalmát elküldje. Igen csak ez az új site egy új serverre költözött és itt már csak autentikációval lehet levelet küldeni. Igaz a levélküldés nem kifejezetten drupallal motorjával történe, hanem, csak egy php kódot kellene lefuttatni. Tehát php kódolásra lenne szükség, és nem mondjuk valamilyen modul telepítésre. Tudna ebben valaki segíteni?

A php kód, amibe bele kellene illeszteni az autentikációt:

<?php
$cimzett = "[email protected]" ;
$targy   = "Megrendeles";
Fórum: 

D6 Image-cache PHP7

DTB képe

Nehezen szántam rá magam, de végül elkezdtem áttelepíteni a D6 alapú webáruházat egy új szerverre, ahol már php7 fut. A kezdeti csődök után megtaláltam a php7-re portolt D6 verziót, ami néhány hibától eltekintve probléma mentesen működik, viszont az image-cachenél valami nem kerek, bizonyos kép méretek egyáltalán nem jelennek meg, akár mit csinálok.
A modul beállításai jók, nem ír ki hibát.

Drupal verzió: 
Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
gülüke képe

szia.
az a baj, hogy a "beviteli" mezők az első 5 fieldsetben mindenféleképpen buttonök (image_button) kell legyen, mert a grafikus kicsit elszállt... szóval ott nem nagyon tudok behozni checkboxokat. tovább megyek: az ajax kihagyásával próbálkoztam és a #states-cel kínlódtam, háááát... nem volt az igazi.
egyébként css-sel kevés vagyok a dologhoz, mert ténylegesen "nem működőnek" kell bizonyos választások esetén néhány elemet kitennem (ilyenkor a #type=>'markup' lett a barátom)
De hogy lássatok néhány kódot is:

// a formból az eleje
function bidding_form($form, &$form_state){
 
    $form = array();
    $form['first'] = array(
        '#type' => 'markup',
        '#prefix' => '<div id="box">',
    );
 
    $form['adathordozo'] = array(
        '#type' => 'fieldset',
        '#title' => '1. Válasszon adathordozót:',
        '#collapsible' => FALSE,
        '#collapsed' => TRUE,
        '#attributes' => array('id' => 'edit-adathordozo', 'class' => array("not-selected")),
    );
    $form['felulettipus'] = array(
        '#type' => 'fieldset',
        '#title' => '2. Adathordozó felülettípusának kiválasztása:',
        '#collapsible' => FALSE,
        '#collapsed' => TRUE,
        '#attributes' => array('class' => array("not-selected"), 'id' => 'edit-felulettipus'),
    );
//...
// így töltöm bele az első fieldsetbe a tartalmat
$query = db_query('SELECT nid FROM {node} n WHERE n.type = :type', array(':type' => "adathordozo"));
 
    foreach($query as $adathordozo){
        $node = node_load($adathordozo->nid);
 
        $form['adathordozo']['submit'.$adathordozo->nid] = array(
            '#type' => 'submit',
            '#ajax' => array(
                'callback' => 'bidding_ajax_callback',
                'wrapper' => 'box',
            ),
            '#prefix' => '<div class="adathordozo item">',
            '#value' => 'submit'.$adathordozo->nid,
        );
 
        $form['adathordozo']['hidden'.$adathordozo->nid] = array(
            '#type' => 'markup',
            '#prefix' => '<div id="hidden-'.$adathordozo->nid.'">',
            '#suffix' => '</div>',
            '#markup' => '',
        );
        $form['adathordozo']['hidden2'.$adathordozo->nid] = array(
            '#type' => 'markup',
            '#prefix' => '<div id="hidden2-'.$adathordozo->nid.'">',
            '#suffix' => '</div>',
            '#markup' => '',
        );
        $filename = substr($node->field_selected['und'][0]['uri'], 9);
        drupal_add_css('#hidden2-'.$adathordozo->nid.' {background-image:url("/sites/default/files/'.$filename.'"); height: 1px; width: 1px; color: transparent;}', $option['type'] = 'inline');
        drupal_add_css('#selected-edit-submit'.$adathordozo->nid.' {background-image:url("/sites/default/files/'.$filename.'"); border: 0 none; height: '.$node->field_selected["und"][0]["height"].'px; width: '.$node->field_selected["und"][0]["width"].'px; color: transparent;}', $option['type'] = 'inline');
        $filename = substr($node->field_aktive['und'][0]['uri'], 9);
        drupal_add_css('#edit-submit'.$adathordozo->nid.' {background-image:url("/sites/default/files/'.$filename.'"); border: 0 none; height: '.$node->field_aktive["und"][0]["height"].'px; width: '.$node->field_aktive["und"][0]["width"].'px; color: transparent;}', $option['type'] = 'inline');
        $filename = substr($node->field_hover['und'][0]['uri'], 9);
        drupal_add_css('#hidden-'.$adathordozo->nid.' {background-image:url("/sites/default/files/'.$filename.'"); height: 1px; width: 1px; color: transparent;}', $option['type'] = 'inline');
        drupal_add_css('#edit-submit'.$adathordozo->nid.':hover {background-image:url("/sites/default/files/'.$filename.'"); border: 0 none; height: '.$node->field_hover["und"][0]["height"].'px; width: '.$node->field_hover["und"][0]["width"].'px; color: transparent;}', $option['type'] = 'inline');
        $form['adathordozo']['name'.$adathordozo->nid] = array(
            '#type' => 'item',
            '#title' => $node->title,
 
        );
        if (isset($node->field_buborek['und'][0]['value'])){
            $form['adathordozo']['buborek'.$adathordozo->nid] = array(
                '#type' => 'markup',
                '#prefix' => '<div class="buborek_wrapper"><div class="buborek">',
                '#suffix' => '</div><div class="nyulvany"></div></div></div>',
                '#markup' => $node->field_buborek['und'][0]['value'],
            );
        }
    }
// ...
// kirajzolok mindent (az első 5 fieldsetet) és utána lezárom a #box-ot
$form['last'] = array(
        '#type' => 'markup',
        '#suffix' => '</div>',    
    );
// sajnos nem jó ötlet volt itt a form #prefix, #suffix-e, mert az ugye az egészet csomagolja, max még a container type működhetett volna, de kb tök mindegy.
// és akkor a kapcsolat nevű fieldsetben itt a submit-om, ami nem működött, míg együtt renderelődött újra a teljes #box tartalmával.
    $form['kapcsolat']['ksubmit'] = array(
        '#value' => 'Ajánlatkérés elküldése',
        '#type' => 'submit',
        '#submit' => array('bidding_submit'),
        '#validate' => array('bidding_validate'),
        '#attributes' => array('id' => 'edit-ksubmit'),
    );
    return $form;
}
// ilyen callback függvényből van öt darab, mindegyikben valami "minimális" (de ugyanakkor fontos...) dolog változik, nem tudtam refaktorálni :'(
// egyébként ez hívódik meg és tölti újra a box tartalmát.
function bidding_ajax_callback($form, &$form_state) {
    $element['first'] = array(
        '#type' => 'markup',
        '#prefix' => '<div id="box">',
    );
    $element['adathordozo'] = array(
        '#type' => 'fieldset',
        '#title' => '1. Válasszon adathordozót:',
        '#collapsible' => FALSE,
        '#collapsed' => TRUE,
        '#attributes' => array('id' => 'edit-adathordozo', 'class' => array("ok-selected")),
    );
    $element['felulettipus'] = array(
        '#type' => 'fieldset',
        '#title' => '2. Adathordozó felülettípusának kiválasztása:',
        '#collapsible' => FALSE,
        '#collapsed' => TRUE,
        '#attributes' => array('class' => array("ok-selected", "just-now"), 'id' => 'edit-felulettipus'),
    );
//...
    return $element;
}

Szóval összességében elég szívás volt ez a cucc, az ajaxot meg nem tudtam hogy megkerülni :(
Amit írsz még PP, hogy gyorsabb lenne és működne is: a hostgatornál van a shared hoszting, ami este úgy 10 körül kb lehal egészen reggel 8-9ig. a normális 0.8-1.2 sec-kes generálási idők helyett nyom ilyen 5.6-14.2 (firebug konzol alapján) - egyébként pedig működik, csak győzd kivárni (meg néha megmagyarázhatatlan okokból - tök random - elszáll a system/ajax, csak pörög és semmi...)
Köszi a foglalkozást velem :)
Sziasztok, gülüke.
0
0
lili_ képe

Van 3 db táblám:

--szervegyseg
--munkakor
--munkakorok
--szemely

szerv_egyseg tábla:
------------------

id: szervezeti egység azonosítója

parent_id: a legtöbb szervezeti egységnek van szülő szervezeti egysége

name_hu: szervezeti egység neve magyarul

name_en: szervezeti egység neve agolul

www: weboldal címe

address: posta cím

phone: telefon száma

fax: fax száma

munkakor oszlopai rendre:
-------------------------

--id : munkakör id-ja

--name_hu: munkakör magyar neve

--name_en: munkakör angol megnevezése

munkakorok oszlopai rendre:
--------------------------

--intezmeny_id :melyik intézményen dolgozik az adott személy és milyen munkakörben,
van ez köti össze a "munkakorok" táblát a "szerv_egyseg" táblával

--szemely_id: ez köti össze a "szemely" táblát a "munkakorok" táblával

--munkakor_id: ez köti össze a "munkakorok" táblát a "munkakor" táblával

--exact_title_hu: munka magyar nyelvű megnevezése

--exact_title_en: a munka angol nyelvű megnevezése

--job_description: a munka magyar nyelvű leírása(mit is csinál)

--job_description_en: a munka angol nyelvű leírása

szemely tábla:
---------------
id: személy id-ja
name: személy neve
email: e-mail címe
phone: telefon száma
phone_ext: mellék száma
fax: fax száma
personal_caller: személyi hivó száma

***********************************************************************

a modulomban írtam egy rekurzív függvényt ami a "szerv_egyseg" táblát dolgozza fel,
megjeleníti az összes szervezeti egységet, annak nevét, e-mail címét, stb.
ezzel nincsen gondom

utána írtam egy olyan függvényt ami megjeleníti az adott szervezeti egységen belül
dolgozó személyeket, annak nevét, telefonszámát, stb

nézd meg itt:

http://php-dev.infocsop.dote.hu/drupaltanulo5/emberek/abc/T

szóval egy-egy emberke tud képet feltölteni ,
a képek nem adatbázisba kerülnek, hanem files/szemelyek/[id] mappába,
az útvonal végén lévő id, az adott személy "szemely" táblában lévő id-számát fogja jelenteni,
vagyis így tudom hogy melyik mappa kié

pl: Teszt Miklós id-ja: 1897, vagyis ő a files/szemelyek/1897 mappába töltheti fel a képét
id-t amúgy látható az URL-ben is

íme a kép feltöltésének megvalósítása:

<?php
/*******************************************************************************/
/*kép / file feltöltése*/
function emberek_kep(){
 
$pp= emberek_pathvars("emberek/kepfeltoltes/");
$id=$pp[0];/*SZEMELY ID*/
 
 
/*ebbe töltöm fel a file-t*/
$kep["ke"] = array(
		"#type" => "file",
		"#title" => t("File"),
		"#description" => t("Kérem töltse fel a képet."),
		"#size" => 40
	);
 
	$kep[] = array(
		"#type" => "submit",
		"#value" => t("Feltöltés"),
		//"#submit" => array("bab_new_for"),
		//"#validate" => array("ics_rapidshare_new_validate")
	);
 
 
	/*FONTOS*/
	/* ha ez kimarad, nem megy a fajlfeltoltes*/
  $kep['#attributes']['enctype'] = 'multipart/form-data';
 
 
 
$kep['#redirect'] = "emberek/abc/adatok/".$id;
 
	return $kep;
 
}
 
 
function emberek_kepfeltoltes(){
 
 
 
$se=drupal_get_form("emberek_kep");
$ra.=$se;
 
$ra.="<br/>"; 
$ra.="<hr/>";
$gu="Vissza a személyekhez";
$ru=l($gu,sprintf("emberek"));
$ra.=$ru;
$ra.="<hr/>";
 
return $ra;
 
}
 
function emberek_kep_submit($form_id, $form_values){
 
 
 
$pp= emberek_pathvars("emberek/kepfeltoltes/");
$id=$pp[0];/*SZEMELY ID*/
 
$egy="files/szemelyek/";
 
/*IDE KELL ELMENTENI A KÉPET*/
$save_path = "files/szemelyek/".$id;
 
/*utvonal vizsgalata*/
/*print($save_path);*/
 
/*HA A FILES/SZEMELYEK/ KÖNYVTÁR HA NEM LÉREZTIK AKKOR LÉTREHOZZA*/
if (file_check_directory($egy, FILE_CREATE_DIRECTORY))
	{
 
	/*HA A FILES/SZEMELYEK/ID KÖNYVTÁR HA NEM LÉREZTIK AKKOR LÉTREHOZZA*/
		if (file_check_directory($save_path, FILE_CREATE_DIRECTORY))
		{
 
		/*EZ MENTI EL A KÉPET, A KÉP NEVE: "KE"
                           UTVONAL:$SAVEPATH
 
    */
			$file = file_save_upload("ke", $save_path);
			/*VALÓBAN FEL LETT - E TÖLTVE A KÉP*/
			/*var_dump($file);*/
 
 
 
 
     }
	}
 
 
 
 
	}
 
 
/*kép megjelenítése ebben a függvényben valósul meg*/
ÉS MOST A KÉRDÉSEM FELÉD?
SZERINTEM AZT A DIV-ES RÉSZ IDE KELLENE, EBBE A FÜGGVÉNYBE BERAKNOM?
AHOL A KÉPET MEGJELENÍTEM NEM-E?
 
 
function emberek_hivas(){
 
$r="";
 
$s=drupal_get_form("emberek_new_form");
$r.=$s;
$r.="<br/>";
$r.="<br/>";
$r.="<hr/>";
$r.="MUNKAKÖRÖK:";
$r.="<hr/>";
$r.="<br/>";
 
$vi = emberek_pathvars("emberek/abc/");/*levágja az url elejéről ami nem kell nekünk*/
$masi = $vi[1]; /* ez tartalmazza az adott szemmély id-ját]*/
$r.="<br/>";
 
 
$tee = array();
$tee[] = array(
  /* itt lehet megadni h  mi szerepeljen majd a fejlécben*/
   array("data" => "Szervezeti egység neve ", "header" => true),
   array("data" => " ", "header" => true),
   array("data" => " ", "header" => true),
   array("data" => "Munkakör ", "header" => true),
   array("data" => " ", "header" => true),
   array("data" => " ", "header" => true),
   array("data" => " ", "header" => true),
   array("data" => " ", "header" => true)
 
   );
 
$mei =sprintf("SELECT m.name_hu as beosztas, s.name_hu as intneve, p.name as embernev, j.szemely_id as szi, j.munkakor_id as mi, j.intezmeny_id as iid FROM munkakorok j LEFT JOIN szemely p ON p.id=j.szemely_id LEFT JOIN munkakor m ON m.id=j.munkakor_id LEFT JOIN szerv_egyseg s ON s.id=j.intezmeny_id where j.szemely_id='%d' " ,$vi[1]);
$neni = db_query($mei);
$szu="";
$szu.="munkakör szerkesztése";
$ruzs="";
$ruzs.="munkakör törlése";
 
while($telei = db_fetch_array($neni)){
 
$tee[]=array(
array("data" => $telei["intneve"]),
array("data"=>"           "),
array("data"=>"  "),
array("data" => $telei["beosztas"]),
array("data"=>"  "),
//$vissza="Vissza a személyekhez";
 
 
 /*ALAPÉRTELMEZETT LEGYEN SELECTBEN KELL*/     
 /*át kell vinni a munkakor tábla szemely_id, intezmeny_id, munkakor_id*/      
     //  $hito.=l($vissza,sprintf("emberek"));
array("data"=>l($szu, sprintf("emberek/munkakorszerkesztese/%d/%d/%d", $telei["szi"], $telei["iid"], $telei["mi"]))),
array("data"=>"  "),
array("data"=>l($ruzs, sprintf("emberek/munkakortorlese/%d/%d/%d", $telei["szi"], $telei["iid"], $telei["mi"])))
 
);
 
 
 
}
$po .= theme("table", NULL, $tee);
$r.=$po;
 
$r.="<br/>"; 
$gue="Új munkakör hozzáadása";
$rue=l($gue,sprintf("emberek/ujmunkakor/%d", $vi[1]));
$r.=$rue;
$r.="<br/>";
$r.="<br/>";
$fele="Kép feltöltése";
$ole=l($fele,sprintf("emberek/kepfeltoltes/%d", $vi[1]));
$r.=$ole;
$r.="<br/>";
 
 
/*kép megjelenítése*/
/*$huh="";
$huh.="tel.jpeg";
$utvonal = "files/szemelyek/".$masi."/".$huh;
 
 
$eror.=theme_image($utvonal, '', '',NULL,TRUE);
$r.=$eror;
*/
 
 
/*KÉP MEGJELENÍTÉSE*/
$when="";
 
/*a könyvtár elérési útja*/
$konyvtar = "files/szemelyek/";
 
/*
 
file_scan_directory
 
Megkeresi a dir-ben rekurzív hívással a maskban lévo fileket, kizárja a keresésbol a nomask-ban lévo könyvtárakat.
  A $callback változóban egy fügvénynevet lehet átadni, ezt a fügvényt végrehajtja minden file-re.*/
 
 
                              /*mi a mappa útja*/ /*milyen típusú file-okat vegyen figyelembe*/
$larges = file_scan_directory($konyvtar.$masi,     ".(png|jpeg|gif)");
 
foreach($larges as $kep){
  $scr_file  =  $kep->filename;
  /*milyen elemeket tartalmaz a $larges tömb*/
 /* var_dump($kep);*/
 /*ez adja vissza képeket */
  $when=theme_image($scr_file, '', '',NULL,TRUE);
  $r.=$when;
  $r.="<br/>";
  $r.="<br/>";
 
 
 
}
 
 
 
return $r;
 
}
?>

NÉZD ITT:

http://php-dev.infocsop.dote.hu/drupaltanulo5/emberek/abc/adatok/1897

AZT KELLENNE MEGOLDANOM, HOGYHA A MEGJELENÍTETT KÉPRE VISZEM AZ EGERET AKKOR
A SZEMÉLY ADATAI MEGJELENJENEK A POPUP ABLAKOCSKÁBAN?

REMÉLEM ÉRTHETŐEN ÍRTAM LE.

lili_, szerkesztettem a hozzászólásod, máskor légyszi használd a kódszínezést (lásd a Beviteli forma c. tájékoztatót a beküldő űrlap alatt). Köszönjük. Illyés Edit

0
0

mini

Robert Petras képe

Mivel voltál olyan kedves és privát levélben elküldted a weblap elérhetőségét, sikerült egy rövid pillantást vetni a Nice menu modul által generált html szerkezetre és stílusra. Gyakorlatilag minden "li" felsorálás és minden "a" hivatkozás kap egy-egy stílust, azonosítót, stb. ezért úgy gondoltam, hogy én inkább nem piszkálok bele a munkádba.

Ettől föggetlenül ha érdekel, akkor szivesen megmutatom, hogy miképp lehet külső modul nélkül pusztán stíluslappal megoldani a többszintű menükezelést Drupal alatt.

Pusztán CSS segítségével a :hover állapotot felhasználva el lehet érni a kívánt hatást. Egyébként ez széleskörben elterjedt. A mobil tapogatós eszközökön is lehet használni, mert rendben megjelenik az almenü a tapasztalataim szerint.

Készítettem a számodra egy minta alsminket is a Stark téma alapján. Ezt felhasználva + egy kis módosítással akár 2-3 kattintással el lehet érni, hogy működjön az általad kíván menü és stílus.

TESZTKÖRNYEZETBEN HASZNÁLD ÉS PRÓBÁLD KI VAGY MÓDOSÍTSD!

A koncepció a következő:

  1. Installáld a Stark Alsminket amit belinkeltem a hozzászólásomban. Előfeltétel, hogy a Stark engedélyezve legyen a "Megjelenés" beállítási oldalon.
  2. A Stark Alsmink beállításánál kapcsold ki a "Főmenü" és "Másodlagos menü" opciót (sokat lehetne arról beszélgetni, hogy van-e valami értelme ennek funkciónak)
  3. A "Felépítés" » "Blokkok" beállításnál a Főmenü blokkot állítsd a Fejléc régióba (Header).
  4. A Főmenü blokk címének add meg "<none>" címkét, ezzel eltünteted a blokk címét, amire nincs szükségünk
  5. A menüpontokat szerkesztve, ragadd meg és húzd az egyik almenüt a szülő menüpont alá és gyakorlatilag ezzel kész is van a többlépcsős navigációs menü. Csak egy fontos dologra kell figyelni.
  6. A Címlap » Adminisztráció » Felépítés » Menük oldalt használva arra ügyelj, hogy egy egy menüpont aminek almenüt szeretnél adni úgy legyen beállítva ( » Hivatkozások listázása » Szerkesztés ), hogy a "Nyitott állapotban megjelenítve" kapcsoló mindig aktív állapotban legyen, így nyitott állapotban a menüpont gyermekei mindig látszani fognak.

Mindez amit fent írtam nem hekkelés vagy külső modul felhasználása, ilyen a Drupal 7 rendszer működése. A fenti menüpont beállítást manuálisan végezd el ott ahol kell, ne parázz, mert ezt csak egyszer kell megtenni, hiszen a menüszerkezet ritkán változik.

FELHASZNÁLÁSI TIPP:

  • A Stark Alsmink "style.css" kódját áttanulmányozva bátran felhasználhatod azt a weblapod elkészítéséhez.
  • A zöld és barna színeket az önkormányzati honlapod alapján használtam fel.
  • Egy kis CSS3-mal meg tudod úgy fűszerezni a menüt, hogy az pl. nyilakat tartalmazzon, az aktív állapot külön színt kapjon, elválasztó vonalakat, fentről-lefelé vagy balról-jobbra animálódjon, stb. Mindehhez ma már JavaScript sem kell csak alapos CSS ismeret.

Egy élő weblapot is tudok mutatni, ahol ezt a módszer alkalmaztam (igaz, hogy az ott látható kód nem valami mestermunka):

Remélem, hogy tudtam segíteni:

FORRÁSANYAG:

Stark Alsmink "starkalsmink.info" fájl:

  1. name = Stark Alsmink
  2. description = Ez egy alsmink gyakorlati célból létrehozva. További hasznos infó magyar nyelven: http://drupal.hu/node/15822
  3. package = Core
  4. version = 1.0
  5. core = 7.x
  6. engine = phptemplate
  7. base theme = stark
  8.  
  9. stylesheets[all][] = style.css

Stark Alsmink "style.css" fájl:

  1. /**
  2.  * sötétzöld: #3C8514;
  3.  * barna: #a52a2a;
  4.  */
  5.  
  6.  
  7. /* ÁLTALÁNOS
  8. ------------------------------------------------------------------------------*/
  9. body {
  10. background: #eee;
  11. }
  12.  
  13. #page {
  14. background: #fff;
  15. margin: 30px auto;
  16. width: 960px;
  17. }
  18.  
  19. /* MENU
  20. ------------------------------------------------------------------------------*/
  21. #header ul.menu {
  22. display: block;
  23. list-style-position: inside;
  24. margin: 0;
  25. padding: 0;
  26. position: relative;
  27. z-index: 100;
  28. }
  29.  
  30. /* Az elso szint menupontjai horizontálisan balrol jobbra tart */
  31. #header ul.menu li {
  32. display: block;
  33. float: left;
  34. margin: 0;
  35. padding: 0;
  36. position: relative;
  37. }
  38.  
  39. /* A masodik, harmadik es negyedik szint vertikalisan fentrol lefele tart */
  40. #header ul.menu li ul > li {
  41. float: none;
  42. }
  43.  
  44. /* Eltuntetjuk a nem kivant menuszinteket az inaktiv allapotvan */
  45. #header ul.menu li.expanded ul.menu,
  46. #header ul.menu li.expanded ul.menu li.expanded ul.menu,
  47. #header ul.menu li.expanded ul.menu li.expanded ul.menu li.expanded ul.menu {
  48. display: none;
  49. }
  50.  
  51. /* Menupont szine */
  52. #header ul.menu a {
  53. background: #3C8514;
  54. color: #fff;
  55. display: block;
  56. line-height: 1;
  57. margin: 0;
  58. padding: 10px;
  59. text-decoration: none;
  60. }
  61.  
  62. #header ul.menu a:hover {
  63. background: #a52a2a;
  64. }
  65.  
  66. /* 2. szint
  67. ------------------------------------------------------------------------------*/
  68. #header ul.menu li.expanded:hover ul.menu {
  69. display: block;
  70. left: 0;
  71. position: absolute;
  72. top: auto; /* FONTOS!!! */
  73. width: 240px;
  74. }
  75.  
  76. /* 3. szint
  77. ------------------------------------------------------------------------------*/
  78. #header ul.menu li.expanded ul.menu li.expanded:hover ul {
  79. display: block;
  80. left: 240px;
  81. position: absolute;
  82. top: 0;
  83. width: 240px;
  84. }
  85.  
  86. /* 4. szint
  87. ------------------------------------------------------------------------------*/
  88. #header ul.menu li.expanded ul.menu li.expanded ul.menu li.expanded:hover ul.menu {
  89. display: block;
  90. left: 240px;
  91. position: absolute;
  92. top: 0;
  93. width: 240px;
  94. }
3
0