thamas képe

A demo oldal készítője a https://drupal.org/project/superfish modult használja a a lehulló menühöz. Honnan lehet tudni?

  1. A html kimenetben a superfish menüre jellemző class nevek vannak (pl. „sf-js-enabled”)
  2. Megkérdezed a smink issue queue-jában a drupal.org-on (support request-ként) ;)

A „nyilacska” megjelenése feltehetőleg a superfish modul beállításán múlik. Ugyanis a HTML-ben van egy erre szolgáló span tag (az „sf-sub-indicator” részt nézd):

  1. <li class="expanded active-trail">
  2. <a class="active-trail sf-with-ul" title="" href="/node/3">About
  3. <span class="sf-sub-indicator"> »</span>
  4. </a>
  5. <ul class="menu sf-js-enabled sf-shadow" style="display: none; visibility: hidden;">
  6. </li>

A dinamikusságra vonatkozó kérdésed én sem értem, a többi menüvel kapcsolatos kérdésre pedig valószínűleg szintén az a válasz, hogy a superfish modul beállításain múlik.

3
0

Üdvözlettel:
Hajas Tamás

Sk8erPeter képe

Alternatív - szerintem egyszerűbb - megoldás pár rettentő egyszerű sor lehetne egy modulban, például épp az, ami a hook_views_pre_render() hivatalos doksijában is szerepel példaként:

https://api.drupal.org/api/views/views.api.php/function/hook_views_pre_r...

  1. function hook_views_pre_render(&$view) {
  2. // Scramble the order of the rows shown on this result page.
  3. // Note that this could be done earlier, but not later in the view execution
  4. // process.
  5. shuffle($view->result);
  6. }

Ezt még természetesen ki kellene egészíteni egy egyszerű if($view->name == 'NÉZETED_NEVE') feltételblokkal, és abba beletenni a shuffle()-t, az összes view eredményeinek sorrendjét azért nem szeretnénk randomizálni.

3
0
etyike képe

Én készítenék egy saját modult, vele egy táblát, mely tartalmazza a blokkolt, engedélyezett menüpontokat illetve ip címeket, stb.

Ha meghívódik a menüpont, akkor egy "callback function"-ben ki lehet olvasni az engedélyeket és az eljárást magad adod meg.

Én ezt gondolom, remélem közel járok :)

-------------------------------------------------------------
 id |     path     |                  ip_address
-------------------------------------------------------------
 12 | tilos/latnod | a:n{white_list:{a..b};black_list{c..d}}
 
function *_menu_alter(&$items) {
    $items['tilos/latnod'] = array(
        // ...
        'page callback' => 'engedely_kerese_ip_alapjan',
        // ...
    );
// ...
function engedely_kerese_ip_alapjan() {
    // ... adatbázis kérések
    if ($ip == 'engedelyezett') {
        return;
    }
    else {
        drupal_access_denied();
    }
// ...
0
0

Kellemes és szép napot a továbbiakban
etyike

Razide képe

  1. { "entity_fetch" : {
  2. "USING" : { "type" : "user", "id" : [ "newuser:uid" ] },
  3. "PROVIDE" : { "entity_fetched" : { "entity_fetched" : "entity_fetched" } }
  4. }
  5. },
  6. { "data_set" : { "data" : [ "node:author" ], "value" : [ "entity-fetched" ] } },

A fenti módon sem sikerül authort beállítani. Az a legérdekesebb, hogy a newuser-nek nincs UID-je, ha kiíratom, akkor üres az érték.

0
0
Paal képe

Panels nélkül nincs élet? ;) Szerinted hogy lehetne megcsinálni másképpen?

Itt sem használtam a Panels modult: http://www.etyektaverna.hu/hu

A smink .info fájlában létrehozol 3 új régiót:

regions[contenttop] = Content top
regions[contentbottomleft] = Content bottom-left
regions[contentbottomright] = Content bottom-right

Ha jól emlékszek, és nincs definiálva régió egyáltalán az .info fájlában, akkor az összeset definiálni kell, nem elég csak az újakat. Pl.:

regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[contenttop] = Content top
regions[contentbottom] = Content bottom
regions[contentbottomleft] = Content bottom-left
regions[contentbottomright] = Content bottom-right
regions[footer] = Footer 

Lemásolod a page.tpl.php-t page-front.tpl.php-nak. Ebbe beilleszted a 3 régiót, valahogy így ,a <?php print $content ?> alá (vagy akár helyette):

 <!-- more content block -->
    	<!-- content-top -->
        <?php if ($contenttop) { ?>
          <div class="contenttop">
            <?php print $contenttop ?>
          </div><!-- end content-top -->
        <?php } ?>
    	<!-- bottom-left -->
        <?php if ($contentbottomleft) { ?>
          <div class="contentbottomleft">
            <?php print $contentbottomleft ?>
          </div><!-- end bottom-left -->
        <?php } ?>
   	<!-- bottom-right -->
        <?php if ($contentbottomright) { ?>
          <div class="contentbottomright">
            <?php print $contentbottomright ?>
          </div><!-- end bottom-right -->
        <?php } ?>
<!-- END more content block -->	

Írsz hozzá megfelelő css kódot. A felső régió az nem is annyira érdekes, inkább a két alsó:

.contentbottomleft {
float:left;
width:50%;
}
 
.contentbottomright {
float:right;
width:49%;
}

Így lett egyből három új régiód, ahova nyugodtan pakolhatod a kis Views-od által generált blokkokat.

Remélem hasznos volt.

0
0

--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan

bimbo000 képe

Sikeres kérdőív kitöltés végén a következő webform funkció hívódik meg:

function webform_submission_insert($node, $submitted) {
  global $user;
 
  $result = db_query("INSERT INTO {webform_submissions} (nid, uid, submitted, remote_addr) VALUES (%d, %d, %d, '%s')", $node->nid, $user->uid, time(), ip_address());
 
  $sid = db_last_insert_id('webform_submissions', 'sid');
 
  foreach ($submitted as $cid => $value) {
    // Don't save pagebreaks as submitted data.
    if ($node->webform['components'][$cid]['type'] == 'pagebreak') {
      continue;
    }
 
    if (is_array($value)) {
      $delta = 0;
      foreach ($value as $k => $v) {
        db_query("INSERT INTO {webform_submitted_data} (nid, sid, cid, no, data) VALUES (%d, %d, %d, %d, '%s')", $node->nid, $sid, $cid, $delta, $v);
        $delta++;
      }
    }
    else {
      db_query("INSERT INTO {webform_submitted_data} (nid, sid, cid, no, data) VALUES (%d, %d, %d, %d, '%s')", $node->nid, $sid, $cid, 0, $value);
    }
  }

Itt az első sorban betöltjük az aktuális user-t, és ehhez rendeli a webform a submission-t. Ez az amin változtatni szerettem volna, vagyis hogy egy általam meghatározott user-hez rendelje a submission-t, és ne az aktuális felhasználóhoz.

0
0
aboros képe

azért van a csodálatos sminkréteg és benne a sok csodálatos sminkfüggvény, hogy használjuk azokat. addig sztár, hogy hozzáadsz a tartalom típusodhoz egy filefield típusú mezőt. korlátlan értékűre állítod, engeded, hogy meg lehessen adni 'description' -t is az egyes elemekhez.

aztán fogod a sminked template.php -ját (ha nincs benne ilyen létrehozod) és szépen beleraksz valami ilyesmit. (sminkedneve_preprocess_node néven kell megvalósítanod. az én sminkemet playground -nak hívják, a példában a filefield mező neve myfield (tehát field_myfield))

és akkor így:

function playground_preprocess_node(&$vars) {
 
  # csak akkor lepunk akszioba, ha van a mezoben legalabb egy file

  if (isset($vars['node']->field_myfield[0]['filepath'])) {
    # kenyelmi okokbol egy valtozoba rakjuk a mezot
    $files = $vars['node']->field_myfield;
 
    # ezeket az oszlopokat akarjuk, ez a tablazat 'fejlece' lesz
    $header = array(t('Description'), t('Filename'), t('Size'), t('Date'));
    $rows = array();
 
    # szepen vegiglepkedunka a tombon es feltoltjuk a $rows -t a kello ertekekkel 
    foreach ($files as $file) {
      $rows[] = array($file['view'], $file['filename'], intval($file['filesize']/1024) . ' KB', format_date($file['timestamp'], 'small'));
    }
 
    # a $header es a $rows alkotta tablazatot a node content vegere varrjuk
    $vars['content'] .= theme('table', $header, $rows);
  }
}

a meződet a tartalom típusod szerkesztésénél a display fields fülön állítsad 'exclude' -ra, hogy ne kettőződjön a megjelenítés.
ha valami nem világos miért pont úgy, kérdezz bátran. az elv ez, innen a fantáziádra bízom, hogy finomhangoljad, lehet variálni a végtelenségig.

0
0

-
clear: both;

Sk8erPeter képe

Ezt az oldalt ajánlom a query-k Drupal 7-formára történő konvertálására:

http://upgrade.boombatower.com/tools/sql/inline

Ez alapján:

  1. Az első:
    db_query('DELETE FROM {gft_cache} WHERE forexid = %d', $currency['id']);

    átalakítva:

    db_delete('gft_cache')
      ->condition('forexid', $currency['id'])
      ->execute();
  2. A második:
    db_query("INSERT INTO {gft_cache} 
       (forexid, ask, bid, symbol, timestamp) VALUES
       (%d, %f, %f, '%s', '%s')", 
        $currency['id'], 
        $currency['ask'], 
        $currency['bid'],
        $currency['symbol'], 
        date('o-m-d h:i:s')
    );

    ÁTALAKÍTVA:

    $id = db_insert('gft_cache')
      ->fields(array(
        'forexid' => $currency['id'],
        'ask' => $currency['ask'],
        'bid' => $currency['bid'],
        'symbol' => $currency['symbol'],
        'timestamp' => date('o-m-d h:i:s'),
      ))
      ->execute();

    Hozzáteszem, itt a 'timestamp' elnevezés egy mezőnek nagyon rossz ötlet, mivel ez egy foglalt kulcsszó ([link], [link]).
    Így nem is tudom, ez a query megfelelően működik-e.
    A lefoglalt szavak közé tartoznak az olyanok is, mint a log, az ilyet többnyire query-ben érdemes így írni: `log`.

Remélem nem hibás a query-átalakítás, és valamennyivel közelebb vitt a megoldáshoz.

9
0

Fájl feltöltés folyamata?

Anonymous képe

Sziasztok!

Nekiálltam írni egy saját node modult (elektronikai termékeknek műszaki leírása). Az adatok mellé kéne egy kép is a termékről, ennek a feltöltését a következő képpen próbáltam:

Drupal-CVS

function dinrelay_form(&$node) {
  $output = '';
 
  if (function_exists('taxonomy_node_form')) {
    $output .= implode('', taxonomy_node_form('dinrelay', $node));
  }
 
  $output .= form_textfield(t('Type'), 'typeString', $node->typeString, 5,  5);
 
  $output .= form_file(t('Image'), 'image', $node->image, 40,  40);
 
  $output .= form_textfield(t('Manual URL'), 'manualUrl', $node->manualUrl, 10,  15);
Fórum: 

Hírforrások híreinek a kategorizálásánál, ha több lapos, akkor difis

porzo képe

Az volt a difim, hogy ha több lapos lett egy-egy hírcsatorna tartalma, akkor az utólagos kategorizálásnál, minden submit-olás után elfeledte, hogy melyik lapon is volt. Elég hosszadalmas gyötrődés után sikerült megoldani (?) a problémát. Ezt szeretném, most közzétenni, hogy a nálam profibbak is át tudják nézni. Szerintem ezt azért lenne jó komolyabban teszelni (v. profibban javítani), mert ez a difi, minden olyan lapon előjöhet, ahol a pager be van indítva és egy form tag van benne.

Az includes/form.inc-be módosítottam

<?php
Fórum: 
Drupal verzió: