Übercart Catalog modul nem listázza ki a termékeket

mapdesign15 képe

Sziasztok!

Abba a problémába estem, hogy az "uc_catalog" modul (ami az "ubercart" egyik tartozéka) nem listázza ki a tartalmat. Blokkban sem jeleníti meg a taxonómia kifejezéseket, csak akkor ha a kezdőlapon vagyok. Ha rákattintok az egyik elemre, eltűnik minden. Ez akkor is igaz, ha szimplán a "/catalog"-ot lekérem.

Próbáltam gyökeresen újratelepíteni, nem segített. A szótár az alapértelmezett "Catalog" szótár, a tartalom típus is a "Product" ami az UC telepítésekor jön létre.

Megcsináltam, hogy jó pár modult ki-be kapcsoltam, hogy megnézzem nem-e valami kompatibilitási problémás modul okozza-e ezt. De nem, a hiba továbbra is fent állt.

Mivel elég macerás lenne az egész oldalt újrahúzni, ezért csak a hiba megtalálása lenne a cél. Ti hogyan debugolnátok ezt a hibajelenséget avagy van-e ötlet erre a problémára (járt-e már valaki így)?

A válaszokat előre is köszönöm.

Drupal verzió: 
mapdesign15 képe

Elfelejtettem mondani, hogy több taxonómia szótárat kötöttem a termékhez. Van a "Catalog", meg egy plusz a szín. De ez nem hiszem, hogy ennek problémát kellene okoznia.

0
0
Paal képe

Meg lehet valahol nézni ezt online?

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

mapdesign15 képe

http://217.21.31.35/uc/catalog

Most ez a views gondoskodik a megjelenésről, de ez így nem jó:
http://217.21.31.35/uc/termekek

0
0
mapdesign15 képe

Egy kis kutatás után sikerült megtalálnom a hiba forrását. Szóval elsőnek is pár szóban használom az alap ubercart-ot aztán az uc_advenced_catalog modult és egy másik modult ami az ÁFA-t csak akkor számítja ki, ha a termék hozzátartozik X taxonómiához (ami nem található a drupal.org-on)

Szóval a probléma itt van:

// uc_advanced_catalog.pages.inc on line 234
 
  $inner .= "  INNER JOIN {uc_products} AS uc_products ON n.vid = uc_products.vid \n";
  $where = " WHERE term_node.tid = %d \n";
  $and .= " AND n.status = 1 \n";
  $and .= " AND n.type IN (". db_placeholders($types, 'varchar') .") \n";
  $order = " ORDER BY " . $order;
 
  $sql = $select . $from . $inner . $where . $and . $order;
  $sql_count = $select_count . $from . $inner . $where . $and;
  $sql = db_rewrite_sql($sql);
  $sql_count = db_rewrite_sql($sql_count);
 
  foreach ($types as $type) {
    $sql_args[] = $type;
  }
  // dsm($sql);
  // dsm($sql_args);
  // pager query
  $result = pager_query($sql, $limit, 0, $sql_count, $sql_args);
  while ($node = db_fetch_object($result)) {
    $products[] = $node->nid;
  }
 
  // Valamiért ez itt nem fut le! Onnan tudom, hogy
  // ha a $products[] tömböt feltöltöm node id-kkel
  // kézileg, akkor megjelenik rendesen a "/catalog"
  // oldalon.

Az uc_advanced_catalog itt található:
http://drupal.org/project/uc_advanced_catalog

Míg az uc_tax_with_taxonomy itt található:
http://www.ubercart.org/files/issues/uc_vat_with_taxonomy.tar.gz

Őszintén szólva nem akarok belenyúlni az uc_catalog kódjába, így alternatív megoldást próbálok találni a hiba megoldására. Van egy tippem, hogy az uc_vat_with_taxonomy lesz a ludas, de akkor is fenn állt a probléma, amikor lekapcsoltam ezt a modult. Nem tudom mi lehet a baj. Szerintetek?

Ezeket a modulokat használom még:

http://drupal.org/project/uc_bank_transfer
http://drupal.org/project/uc_discounts_alt
http://drupal.org/project/uc_members_only
http://drupal.org/project/uc_minpercentrate
http://drupal.org/project/uc_pic_cart_block
http://drupal.org/project/uc_product_actions
http://drupal.org/project/uc_tablequote
http://drupal.org/project/uc_termsofservice
http://drupal.org/project/uc_vat
http://drupal.org/project/uc_views
http://drupal.org/project/unitsapi
http://drupal.org/project/taxonomy_hide
http://drupal.org/project/term_permissions
http://drupal.org/project/weight
http://drupal.org/project/page_title
http://drupal.org/project/nd
http://drupal.org/project/ds
http://drupal.org/project/cck
http://drupal.org/project/computed_field

0
0
gazsesz képe

Szerintem kapcsold ki az advanced katalog modult és próbáld a beépített catalog-ot használni, mert szerintem az kavar be. Az uc-ben sajnos sok olyan projekt van, amit lekezdenek, de aztán abba marad és ahogy nézem ez a modul is dev státuszban van 2009 óta.
Egyébként mi az, ami miatt szükséged van az advenced catalogra?

0
0

Gazsesz

mapdesign15 képe

Leginkább az elrendezés miatt van szükségem az advanced catalog-ra, mert sok plusz lehetőséget is kínál (mint: több fajta megjelenés, elrendezés).

Sajnos az alap "uc_catalog" modulja sem képes megfelelően működni, dettó nem fut le a MySQL parancs. Egyébként nagyban egyeznek is:

// uc_catalog.pages.inc on line 95
  $sql = "SELECT DISTINCT(n.nid), n.sticky, n.title, n.created, p.model, p.sell_price, p.ordering
    FROM {node} n
      INNER JOIN {term_node} tn ON n.vid = tn.vid
      INNER JOIN {uc_products} AS p ON n.vid = p.vid
    WHERE tn.tid = %d AND n.status = 1
      AND n.type IN (". db_placeholders($types, 'varchar') .") ". $order;
 
  $sql_count = "SELECT COUNT(DISTINCT(n.nid))
    FROM {node} n
      INNER JOIN {term_node} tn ON n.vid = tn.vid
      INNER JOIN {uc_products} AS p ON n.vid = p.vid
    WHERE tn.tid = %d
      AND n.status = 1
      AND n.type IN (". db_placeholders($types, 'varchar') .")";
 
  $sql = db_rewrite_sql($sql);
  $sql_count = db_rewrite_sql($sql_count);
  $sql_args = array($catalog->tid);
  foreach ($types as $type) {
    $sql_args[] = $type;
  }
  $catalog->products = array();
  $result = pager_query($sql, variable_get('uc_product_nodes_per_page', 12), 0, $sql_count, $sql_args);
 
  while ($node = db_fetch_object($result)) {
    $catalog->products[] = $node->nid;
  }

Nem tudom, hogy mi lehet a probléma. De a pager_query valamiért nem úgy fut le ahogy kellene.

0
0
mapdesign15 képe

Hát, ledöbbentem... egy kis piti hiba okozta az egészet...

Az oldal ügye 4 nyelvű és kérés volt, hogy a termékek mind a NÉGY nyelven jelenjenek meg. Így hát az adatbázis importálásakor értelemszerűen a nyelvfüggetlen opciót választottam.

Igen, ám de ha nyelvfüggetlen egy tartalom akkor a {node} táblába a language mezőbe üres érték kerül. Itt ugrik be a baki:

SELECT DISTINCT(n.nid), n.sticky, n.title, n.created, p.model, p.sell_price, p.ordering
    FROM {node} n
      INNER JOIN {term_node} tn ON n.vid = tn.vid
      INNER JOIN {uc_products} AS p ON n.vid = p.vid
      WHERE (n.language ='hu') AND (  
	n.status = 1 AND

Szóval, azért nem volt termék mert a catalog hozzátett egy "language = 'hu'" filtert (ahogy a drupal nevezné) és ezért nem történt meg a listázás.

Bár ez szerintem hiba, hogy a nyelvfüggetlen termékeket nem listázza a catalog.

Átmeneti megoldásként lefuttattam ezt az adatbázison:

UPDATE `node` SET `language` = 'hu' WHERE `type` = 'product'

Huhh... :D

0
0