CCK +imagefield

wildface86 képe

Van nekem a könyv tartalomtipus, amelyhez hozzáadtam az node reference mezőt. Minden úgy is megy ahogy a nagykönyveb megvan írva, amikor új tartalmat küldök be akkor ki tudom választani a hozzátartozó galériát, a galéria neve meg is jelenik majd a könyvlap alján link formájában. Az a kérdésem hogy meg lehet azt oldani, hogy a link helyet egy kép legyen ott?

Drupal verzió: 
pp képe

igen.

0
0
wildface86 képe

És hogyan?

0
0
aksza képe

A címed alapján már fent van az ImageField, akkor adj hozzá azzal egy image mezőt, lesz egy linked meg egy kép

0
0
wildface86 képe

nincs imagefieldem, hanem a bookhoz hozzáadtam egy node reference mezöt ami a gallériára hivatkozik(prog gallery)

0
0
aksza képe

Akkor rakd fel INNEN ha nincs és lesz egy image beviteli meződ.
Ha imege mezőt adsz a book típusú tartalmakhoz akkor ILYEN lesz a tartalom beküldés és ÍGY néz ki a beküldött tartalom.

0
0
wildface86 képe

Van imagfieldem csak nem használtam, mert nem ugy van felépítve a cucc. Könyv tartalomtipus node reference mezovel, amely mezovel a galériára hivatkozom(post gallery), a könyvlap alján meg is jelenik a tartalomhoz tartozó galériának a neve, amire ha rákattintok akkor elojon a galeria. De én azt szeretném ha nem a nevet látnám alul hanem egy képet

0
0
wildface86 képe

Vagy az is megfelel hogyha a galeria neve fölé egy képet oda tudnék rakni

0
0
aksza képe

Igen-igen értettem ezt, csak erre mondtam, hogy ha nem megy úgy akkor esetleg így megoldhatod szükségképpen.

0
0
aboros képe

ezt megteheted egy .tpl.php fileban is és egy előfeldolgozóban is, amelyik kényelmesebb. devel modul theme developer eszközével mutass rá a meződre és meg fogja mondani, milyen .tpl.php -kal és milyen sminkfüggvényekkel módosíthatod azt a kimenetet.

a node_reference egy node ID -t tárol, a tpl.php -ban (vagy a preprocessorban) be kell majd töltened ezt a node -ot node_load -al és kiszedni belőle egy képet, mondjuk az elsőt és azt kiíratni.

próbáld meg, kérdezz, ha elakadsz, ha elkezdted és írtál kódot és nem megy, akkor kopizzad ide majd azt, hogy lássam mi van.

0
0

-
clear: both;

wildface86 képe

Tehát az adott mezö a több tpl.phpt használ(content-field.tpl.php < theme_markup < theme_markup < node.tpl.php < page.tpl.php ). Nekem most mindegyikbe bele kell piszkálnom?

0
0
aboros képe

elvileg mutat "lehetséges" verziókat is a theme developer.
tegyük fel, hogy "linked_gallery" -nek nevezed ezt a meződet. akkor lemásolod a sminked könyvtárába content-field.tpl.php -t (a cck/theme -ben találod) és elnevezed content-field-linked_gallery.tpl.php -nak és kedvedre módosítod. ez a sablon lesz érvényben erre a mezőre, bármilyen tartalom típusban is jelenik meg.
ha csak könyvlap típusoknál akarod ezt a módosítást, mert máshol is használod a mezőt de ott az eredeti megjelenés kéne, akkor nevezd content-field-linked_gallery-book.tpl.php -nak.

miután létrehoztad, egyszer ürítened kell a smink regisztrációs tárat, hogy "észrevegye" a drupal a sablonodat.

0
0

-
clear: both;

wildface86 képe

hogyan kell űrítenem a smink regisztracios tárat?

0
0
aboros képe

legegyszerűbb, ha az admin/build/themes oldalon mentesz egyet. :)

0
0

-
clear: both;

Jenő képe

Ahogy ezt itt írtad is.

0
0
aboros képe

tehát a cck/theme -ből át kell másolni a content-field.tpl.php -t a sminked mappájába úgy ahogy az van és ezt a másolatot meghagyva erről egy újabb másolatot kell készíteni a megfelelő néven.

0
0

-
clear: both;

wildface86 képe

akkor az itt található függvényt( http://api.drupal.org/api/function/node_load/6) elég beleágyaznom a tpl.phpba, megadni a megfelelő paramétereket és kész is?

0
0
wildface86 képe

function node_load($g_nid = array(), $revision = NULL, $reset = NULL) {
  static $nodes = array();
 
  if ($reset) {
    $nodes = array();
  }
 
  $cachable = ($revision == NULL);
  $arguments = array();
  if (is_numeric($param)) {
    if ($cachable) {
      // Is the node statically cached?
      if (isset($nodes[$g_nid])) {
        return is_object($nodes[$g_nid]) ? drupal_clone($nodes[$g_nid]) : $nodes[$g_nid];
      }
    }
    $cond = 'n.nid = %d';
    $arguments[] = $g_nid;
  }
  elseif (is_array($g_nid)) {
    // Turn the conditions into a query.
    foreach ($g_nid as $key => $value) {
      $cond[] = 'n.'. db_escape_table($key) ." = '%s'";
      $arguments[] = $value;
    }
    $cond = implode(' AND ', $cond);
  }
  else {
    return FALSE;
  }
 
  // Retrieve a field list based on the site's schema.
  $fields = drupal_book('node', 'n');
  $fields = array_merge($fields, drupal_book('node_revisions', 'r'));
  $fields = array_merge($fields, array('u.name', 'u.picture', 'u.data'));
  // Remove fields not needed in the query: n.vid and r.nid are redundant,
  // n.title is unnecessary because the node title comes from the
  // node_revisions table.  We'll keep r.vid, r.title, and n.nid.
  $fields = array_diff($fields, array('n.vid', 'n.title', 'r.nid'));
  $fields = implode(', ', $fields);
  // Rename timestamp field for clarity.
  $fields = str_replace('r.timestamp', 'r.timestamp AS revision_timestamp', $fields);
  // Change name of revision uid so it doesn't conflict with n.uid.
  $fields = str_replace('r.uid', 'r.uid AS revision_uid', $fields);
 
  // Retrieve the node.
  // No db_rewrite_sql is applied so as to get complete indexing for search.
  if ($revision) {
    array_unshift($arguments, $revision);
    $node = db_fetch_object(db_query('SELECT '. $fields .' FROM {node} n INNER JOIN {users} u ON u.uid = n.uid INNER JOIN {node_revisions} r ON r.nid = n.nid AND r.vid = %d WHERE '. $cond, $arguments));
  }
  else {
    $node = db_fetch_object(db_query('SELECT '. $fields .' FROM {node} n INNER JOIN {users} u ON u.uid = n.uid INNER JOIN {node_revisions} r ON r.vid = n.vid WHERE '. $cond, $arguments));
  }
 
  if ($node && $node->nid) {
    // Call the node specific callback (if any) and piggy-back the
    // results to the node or overwrite some values.
    if ($extra = node_invoke($node, 'load')) {
      foreach ($extra as $key => $value) {
        $node->$key = $value;
      }
    }
 
    if ($extra = node_invoke_nodeapi($node, 'load')) {
      foreach ($extra as $key => $value) {
        $node->$key = $value;
      }
    }
    if ($cachable) {
      $nodes[$node->nid] = is_object($node) ? drupal_clone($node) : $node;
    }
  }
 
  return $node;
}
0
0