pager_query helyett db_query-t használj
a pager_query mint ahogyan a nevében is benne van lapokat tölt csak be, tehát az sql kérés végére oda rakja a megfelelő záradékot.
pár javaslat:
- a tábla neveket mindig tedd {} közé így akkor is fog működni a programod, ha tábla előtagokat használsz, vagy esetleg másik adatbázisban van pár táblád.
- ha db_rewrite_sql-t használsz, akkor a helyes használat 'FROM {node} n' majd a későbbiekben node.akarmi helyett a n.akarmi használata. A db_rewrite_sql lehetővé teszi ugyanis, hogy a moduloddal beépülj más modulok lekérdezésbe, vagy hogy más modulok legyenek hatással a te lekérdezéseidre (pl taxonomy_access). Ilyenkro feltételezi a rendszer, hogy a node táblára n néven hivtakozhat majd.
- db_rewrite_sql esetén ne használd a FROM tábla1, tábla2 formációt helyett inkább JOIN-t használj!
- teljesen felesleges a cikluson belül még egy node_load utasítást is kiadnod, ezzel jócskán megnövelve a feldolgozási idejét. A szükséges adatok ugyanis már ott vannak, csak a SELECT utáni részbe fel kell venni a field_szam_value oszlopot is
- csak így nem teszünk bele változót a lekérdezésbe
- link készítésére meg használd az l függvényt, ami ha be van kapcsolva a rövid webcím akkor is jól működik, no meg az aktuális linkhez is egy osztályt hozzáad. ;)
egyébként teljesen korrekt
a kód picit tupírozva:
$content_type = 'teszt_tartalom'; $output = ''; $result = db_query (db_rewrite_sql ("SELECT n.nid, cttt.field_szam_value FROM {node} n INNER JOIN {content_type_teszt_tartalom} cttt ON n.nid = ctt.nid WHERE n.type = '%s' AND n.status = 1 ORDER BY cttt.field_szam_value ASC"),$contet_type); while ($node = db_fetch_object($result)) { $output .= l($field_szam_value, 'node/' . $node->nid) . '<br>'; } print $output;
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
nem alap
A Drupal 5-ben ez a kód állítja elő az űrlapnak ezt a részét:
$period = drupal_map_assoc(array(3600, 10800, 21600, 32400, 43200, 86400, 172800, 259200, 604800, 1209600, 2419200), 'format_interval'); $period['1000000000'] = t('Never'); $form['watchdog_clear'] = array( '#type' => 'select', '#title' => t('Discard log entries older than'), '#default_value' => variable_get('watchdog_clear', 604800), '#options' => $period, '#description' => t('The time log entries should be kept. Older entries will be automatically discarded. Requires crontab.') );
Itt maximum a 2419200-as elem szerepel, ami pont a 4 hét. Megpróbáltam rákeresni a Drupal kiegészítések kódja között, de nem találtam olyat, amiben úgy tűnik, mintha az alap watchdog űrlapot változtatná a modul. Volt pár modul, ami használja ezt a 16 hetes értéket más időtartamok beállítására, de az más kérdés.
Keress rá, hogy a webhelyed melyik fájljában szerepel a 9676800-as szám. Valamelyikben ott kell lenni. Inkább valami rendes megoldást találjuk a barkácsolás helyett.
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
theme_menu_local_task()
ezt írnám a template.php -ba:
function a3_atlantis_menu_local_task($link, $active = FLASE) { //ha /user/% oldalon vagyok es nincs joga felhasznalok adminisztraciojahoz es a link /track akkor extra class adok if (arg(0) == 'user' && is_numeric(arg(1)) && !user_access('adminster users') && strpos($link, '/track')) { return '<li class="tracker no-admin">'. $link ."</li>\n"; } //ellenkezo esetben marad az eredeti felallas, ha aktiv a tab, akkor active classt kap return '<li '. ($active ? 'class="active" ' : '') .'>'. $link ."</li>\n"; }
ezután a cssből így céloznám:
li.tracker.no-admin { display: none; }
a kerdezo konkret sminkje az a3_atlantis amire az eddigi megoldas nem is mukodik.
ez szerintem nem lehetséges, a theme_menu_local_task() miért ne működne a3 atlantis (vagy bármilyen egyéb) sminkkel?
-
clear: both;
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
hibák
Szia! Nincs szükség itt mysql_connect-re, és a mysql_db_query-t se használd, ezekre a drupal api mind megoldást nyújt!
Ezenkívül a $sor nevű tömbödet is rosszul akarod feltölteni, ez a ciklus így nem csinál semmit.
Valamint a teszt_select form elemnél az '#options' rész is rosszul van megadva.
Ezt a kódrészletet:
<?php mysql_connect("localhost", "root"); $eredmeny = mysql_db_query ("db_name","SELECT nid FROM node LIMIT 0 , 30 "); while ($sor = mysql_fetch_array ($eredmeny)); ?>
cseréld le erre:
<?php $queryResults = db_query("SELECT nid FROM {node} LIMIT 30"); while($line = db_fetch_object($queryResults)) { $list[] = $line->nid; } ?>
És a már említett '#options'-ös sort erre:
<?php '#options' => $list, ?>
Így már működni fog.
Az itt használt számodra ismeretlen függvényekre rákereshetsz az api.drupal.org-on.
- A hozzászóláshoz regisztráció és bejelentkezés szükséges


Palócz Paal Pál, a drupal.hu admin csoportjának tagja




node vagy lista?
Itt mit vizsgálsz? Mi az a "nem"?
Kell a perjel az útvonal elé:
Ez a feltétel csak akkor fog lefutni, ha a /fooldal címen nem node található, hanem valamilyen lista.