Sviluppo

Qual'è la tecnica giusta per fale le SQL INSERT?

Per fare le sql INSERT utilizzo questo script per verificare l'ultimo id inserito

$sql = db_query("SELECT rid FROM {role} ORDER BY rid DESC LIMIT 1");
      if ($sql) {
          $row = db_fetch_array($sql);
          $rid = $row['rid'];
          $rid++;
      } else {

Argomenti:

Sviluppo di Drupal 6 - Generatore di codice

Questo modulo scritto inizialmente per vedere le phpinfo è statto da me trasformato in un generatore di codice per Drupal 6.x. Tutti gli sviluppatori che sono alle prese con query e form possono utilizzarlo. Il funzionamento è semplice: date le tabelle del database in uso restituisce le funzioni selezionate. Provatelo e se trovate bug fatemelo sapere!!

In allegato il modulo informationphp-6.x-1.1.zip

Argomenti:

Mini HOWTO: come usare un nodo per la descrizione di un termine (senza moduli aggiuntivi)

In questo howto prendo in considerazione l'use case in cui vi sia la necessità di una descrizione più articolata e flessibile per un termine; la procedura descritta da per scontato che si utilizzi una vista per sovrascrivere le pagine dei termini della tassonomia (taxonomy/term/TID) e che il vocabolario in esame sia a selezione singola e non multipla.

Obiettivo: la pagina di ciascun termine (appartenente ad un dato vocabolario, in questo caso) deve includere, oltre che la lista dei nodi taggati con tale termine, anche una descrizione articolata del termine stesso da poter inserire come blocco, allegato o come tab aggiuntiva alla pagina del termine.

Procedura:

  • Creare un nuovo tipo di contenuto "descrizione"
  • Associare questo tipo di contenuto al vocabolario ai cui termini vogliamo associare la descrizione
  • Abilitare la vista taxonomy_term che "sovrascrive" la visualizzazione delle pagine della tassonomia di default
  • In questa vista aggiungere un display (il tipo lo vediamo tra poco) con stile riga = campi; è importante sovrascrivere (override) almeno le sezioni "Filtri" e "Campi" per questo display, gli "Argomenti" dovrebbero invece restare concordi con la vista di base (Pagina con path taxonomy/term/%)
  • Tra i campi, aggiungere nodo:corpo
  • Aggiungere un filtro per nodo:tipo = descrizione
  • Caso 1 : display di tipo Allegato; allegare la vista descrizione "sopra" la vista pagina
  • Caso 2: display di tipo pagina da mostrare come tab (taxonomy/term/TID/descrizione) o come pagina separata; nel path della vista inserire "taxonomy/term/%/descrizione" e selezionare "normal menu tab" per il menu

A questo punto, una volta creati i nodi descrizione, la pagina di ciascun termine dovrebbe mostrare la descrizione del termine come allegato o come tab (o anche come blocco).

Argomenti:

Tutti gli utilizzi della funzione <b>tablesort_sql </b>in Drupal 6

tablesort_sql($header, $before = '')

modules\comment\comment.admin.inc (60): $result = pager_query('SELECT c.subject, c.nid, c.cid, c.comment, c.timestamp, c.status, c.name, c.homepage, u.name AS registered_name, u.uid, n.title as node_title FROM {comments} c INNER JOIN {users} u ON u.uid = c.uid INNER JOIN {node} n ON n.nid = c.nid WHERE c.status = %d'. tablesort_sql($form['header']['#value']), 50, 0, NULL, $status);

modules\dblog\dblog.admin.inc (66): $tablesort = tablesort_sql($header);

modules\dblog\dblog.admin.inc (111): $result = pager_query("SELECT COUNT(wid) AS count, message, variables FROM {watchdog} WHERE type = '%s' GROUP BY message, variables ". tablesort_sql($header), 30, 0, "SELECT COUNT(DISTINCT(message)) FROM {watchdog} WHERE type = '%s'", $type);

modules\forum\forum.module (575): $sql .= tablesort_sql($forum_topic_list_header, 'n.sticky DESC,');

modules\node\node.module (1622): $query .= tablesort_sql($header);

modules\path\path.admin.inc (38): $sql .= tablesort_sql($header);

modules\poll\poll.pages.inc (37): $result = pager_query("SELECT pv.chorder, pv.uid, pv.hostname, u.name FROM {poll_votes} pv LEFT JOIN {users} u ON pv.uid = u.uid WHERE pv.nid = %d". tablesort_sql($header), 20, 0, NULL, $node->nid);

modules\statistics\statistics.admin.inc (20): $sql = 'SELECT a.aid, a.path, a.title, a.uid, u.name, a.timestamp FROM {accesslog} a LEFT JOIN {users} u ON u.uid = a.uid'. tablesort_sql($header);

modules\statistics\statistics.admin.inc (55): $sql .= tablesort_sql($header);

modules\statistics\statistics.admin.inc (85): $sql = "SELECT COUNT(a.uid) AS hits, a.uid, u.name, a.hostname, SUM(a.timer) AS total, ac.aid FROM {accesslog} a LEFT JOIN {access} ac ON ac.type = 'host' AND LOWER(a.hostname) LIKE (ac.mask) LEFT JOIN {users} u ON a.uid = u.uid GROUP BY a.hostname, a.uid, u.name, ac.aid". tablesort_sql($header);

modules\statistics\statistics.admin.inc (120): $query .= tablesort_sql($header);

Argomenti:

Visualizzazione pagine dei termini della tassonomia Drupal 6

E' possibile fare in modo che drupal visualizzi le pagine dei termini della tassonomia solo se questi contengono dei nodi, altrimenti no. Ecco come:

<?php function taxonomy_list_vocabularywithnode() {
//la variabile language occorre se si vogliono mostrare contenuti divisi per lingua
global $language;
//impostazione dell'intestazione della tabella, con ID per ultimo in modo che si ha questo ordinamento: nid desc
$header = array(
array('data' => t('Operazioni')),
array('data' => t('Tipo'), 'field' => 'n.type', 'sort' => 'desc'),
array('data' => t('Titolo'), 'field' => 'n.title', 'sort' => 'desc'),
array('data' => t('Termini')),
array('data' => t('Creato'), 'field' => 'n.created', 'sort' => 'desc'),
array('data' => t('ID'), 'field' => 'n.nid', 'sort' => 'desc'),
);
//sql inner join: L'INNER JOIN restituisce le righe delle tabelle se c'è un legame, altrimenti non le mostra. DISTINCT mostra solo una volta
$query = "SELECT DISTINCT n.nid, n.type, n.title, n.created FROM {node} AS n INNER JOIN {term_node} AS t ON n.vid = t.nid WHERE n.nid = t.nid";
//paginazione della query con le api di Drupal 6
$query .= tablesort_sql($header);
$result = pager_query($query, 30);
//ciclo dei reord
while ($row = db_fetch_array($result)) {
$nid = $row['nid'];
$timestamp = $row['created'];
//funzione di php che mostra la data leggibile e non timestamp
$created = date("Y-m-d H:i:s", $timestamp);
//sottosql che pesca i relativi termini relazionati alle pagine
//Il LEFT JOIN restituisce tutte le righe della
//prima tabella, anche se non ci sono corrispondenze nella seconda tabella
$res = db_query("SELECT {term_data}.name, {term_data}.tid
FROM {term_data}
LEFT JOIN {term_node} ON {term_node}.tid = {term_data}.tid
LEFT JOIN {node} ON {node}.nid = {term_node}.nid

Argomenti:

Tutti i modi per scrivere la funzione l() e la funzione t() di drupal 6

Ecco un elenco abbastanza completo su come scrivere la funzione l(). Chi ha dimestichezza con php e ha presente la api di Drupal può trarne spunto per sviluppare del codice personalizzato.

l($text, $path, $options = array())

<?php $output .= 'link) .'">'. check_plain($item->title) ."\n";
$output .= '

  • tid).'">'.$data->name.'
  • ';
    l(
    t('My link'),
    'node/56',
    array(
    'attributes' => array(
    'class' => 'widelink',
    'rel' => 'lightbox',
    )
    )
    );

    l(t('Title'),$url, array('attributes' => array('target' => '_blank')));
    l(t('Link text'), 'about-us', array('attributes' => array('class' => 'about-link')));
    l(t($user->name), 'user/'.$user->uid, array('attributes' => array('class' => 'link', 'id' => 'xxx', 'title' => 'Title')));

    $link = l(t($title), $path, array('language' => 'pl'));

    l(t('Title'), $url, array('attributes' => array('onclick' => 'window.open(this.href); return false;')));

    //To create a link to a named anchor (e.g. #namedanchor ) you will need to use a small work-around.
    l('linktext', '', array('fragment' => 'namedanchor', 'external' => TRUE));

    //To create a hash-only link (to #) you'll need to adapt it to:
    l('linktext', '', array('fragment' => ' ', 'external' => TRUE));

    //To clarify for those who want their module to support the 'Clean URLs' option.
    $var = l("Click Text", "ModuleName"); returns a link complete with ';
    l($img, 'user/3', array('html' => 'true'));

    Argomenti:

    Estrarre tutti i nomi utente in tabella ordinabile e paginabile

    Creare al volo un piccolo modulo Member List, creato e testato per Drupal 6.x:
    FILE INSTALL:

    <?php
    // $Id: member_list.install,v 1.1 2010/11/20 14:11:59 danzisiweb Exp $
    /**
    * Implementation of hook_install().
    * Inserts the member_list module's schema in the SQL database.
    */
    function member_list_install() {
      drupal_set_message(t('All install correctly member_list'));
      watchdog("faq","All install correctly member_list");
    }
    /**

    Argomenti:

    Script che genera sql codice per cambio charset delle tabelle e database Mysql

    La pagina è completamente finzionante basta farla girare sul sever, bisogna però cambiare nello script nome password e host del database in uso.

    Argomenti:

    Forms Control - interessante esempio per poter scrivere i vostri form dati

    In questa pagina di documentazione viene riportato il codice per la costruzione di un form dati. Gli input form vanno dal button al campo data con intervallo prestabilito, il bottone submit e il bottone reset, il campo password e la textarea. Lo script sotto non è testato riporta solamente un esempio su come scrivere gli input form, la validazione e il ritorno di variabili.

    Argomenti:

    Popolazione della select con tabelle del database per modulo generatore di codice e sql

    Generatore di codice per Drupal 6.18. Questo codice funziona perfettamente. Il problema che ho incontrato consiste nella popolazione della select con il nome delle tabelle del database nonchè il valore passato. Ho risolto con $table_name = current($table_name); che restituisce l'elemento corrente di un array. Osservando moduli già fatti come db_maintenance ho potuto sviluppare questo modulo per la generazione di codice del tipo:

    Argomenti:

    Pagine

    Abbonamento a RSS - Sviluppo