[Brainstormin e parer] Modulo estrazione automatica variabili prensenti in $links

9 contenuti / 0 new
Ultimo contenuto
[Brainstormin e parer] Modulo estrazione automatica variabili prensenti in $links

salve, per motivi didattici sto cercando di realizzare un modulino che almeno fosse utile per i miei progetti in drupal per questo vi chiedo gentilmente di sparare le vostre opinioni a riguardo e fare un po' di braingstorming a riguardo.

DESCRIZIONE MODULO

PRIMA PARTE
-> Legge i dati che dovrebbero essere stampati dalla variabile $links nei file node.tpl.php;
-> Decidere secondo un array di entrara quali dei precedenti dati estrarre e conservare per eventuali usi futuri (del modulo stesso);
-> Deciudere secondo un'altro array o condiviso al precedente quali dei dati è necessario impostare su "unset" e quindi nasconderli alla visualizzazione di $links in node.tpl.php

SECONDA PARTE
-> Leggere in entrata l'array con i dati estratti dalla variabile $links, effettuata dalla prima parte del modulo;
-> Creare in modo ricorsivo "n" nuove variabili da utilizzare separatamente sempre in node.tpl.php

--------------------
in altre parole secondo alcuni dati di "configurazione" effettua un'estrazione e/o unsett in massa di "variabili" accorpate nell'unica Variabile $links utilizzabile in node.tpl.php

- Fin qui nessun probelam sia per la ricorsività che il funzionamento generale sono apposto, ma l'intero moduli è molto "Rustico" e molte delle operazioni di modifica e personalizzazione impongono la scrittura di molto codice sporco, vorrei quindi chiedervi a voi se dovvte utilizzare il seguente modulo quali parametri ritenete interessante tenere sotto mano o poter gestire agevolmente per un utilizzo veloce e centralizzato.

Vi faccio un esempio, per l'estrazione dei dati abbiamo bisogno:
- Nome Var (ad esempio 'Comment_Add')_;
- content Type su cui fare l'estrazione (es. Page, Story)
-- Il nome della nuova variabile l'ho reso standard non abbiamo bisono del nome della nuova var.

essenzialmente per impostare l'unset abbiamo bisogno di sapere i medesimi parametri.

1Punto importante, ritenete necessario rendere separate il lavoro di separazione e quello di unset? cioè se si estrae un dato non è detto che debba essere impostato su un set?

2Punto, come passeresete in "massa" le variabili che desiderate estrarre?

3Pensavo di creare una pagina di configurazione per ognuna delle cose sopra chieste, solo che si adatta ai Content Type presenti ed attivati, alle variabili presenti in $links ecc...

ditemi la vostra :D:D

mmm, scusa, ma invece di fare hack sulla variabile $link, che è output HTML e quindi un probabile mal di testa, perché non vai alla fonte, cioè $node->links?

aggiornamento ben accettato, ma l'idea è rendere il sistema "tema-indipendente", e fare meno modifiche possibili sul tema.

$node->link si presta bene nel "preprocess" e nei tpl.php ma nel momenti in cui entrano in gioco unset di alcune variabili di $node->link non saprei più dove andare a pescare determinate info.

Altra motivazione è che tutto ciò che faccio in template.php dovrebbe essere solo lavoro di visualizzazione, modifiche lievi...

[PS]= il sistema sta funzionando :D

dai in pasto un semplice array del tipo

<?php
$var
=
array(
'comment_add','page','story'),
array(
'node_read_more','page','story'),
);
?>

e ti spara fuori in node.tpl.php

<?php
print $link_node_read_more;
print
$link_comment_add;
?>

senza muovere un dito :D, dai forse non è di grande utilità ... ma solo la soddisfazione di vederlo funzionare è immensa! :D:D

Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.

WeBrain Solution | Pillsofbits Of Bits

Pinolo wrote:
mmm, scusa, ma invece di fare hack sulla variabile $link, che è output HTML e quindi un probabile mal di testa, perché non vai alla fonte, cioè $node->links?

comunque che è un mal di testa ... hai ragione.

Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.

WeBrain Solution | Pillsofbits Of Bits

Ma sopratutto non rendi il tutto indipendente dal tema perchè le tue variabili non verranno stampate perché il tuo tema non le conosce.

Ciao
Marco
--
My blog
Working at @agavee

mavimo wrote:
Ma sopratutto non rendi il tutto indipendente dal tema perchè le tue variabili non verranno stampate perché il tuo tema non le conosce.

In entrambi i casi il tema dovrà essere modificato. se se uso $node->links, sia se uso nuove variabili. Al momento il modulino è terminato e data loa sua scarsa utilità mgenerale lo terrò così com'è con le sue 20-30 righe di codice...

le considerazioni che posso fare sono, ultimamente sto ampliando garland per adattarlo ad un progetto che stiamo portando avanti, il punto è che se si vuol basare su garland sarebbe buona cosa "Aggiungere" roba e non midifcare il tutto.. così per aggiornare il tema basterà fare copia e incolla dei File extra, quelli base rimangono inalterati.

le motivazioni per cui lo sto perfezionando per un uso personale sono:
- il modulino mi permette di disattivare in massa molte variabili di $links, e di farlo anche su più contenttype semplicemente riempendo un array;
- - la modalità appena descritta mi permette di lasciare più pulito il tema, al max ci sarà qualche print $var che no stampa nulla;
-- Disattivando il modulo torna tutto come prima

-il modulino mi permette anche di estrarre, sempre in massa parecchie variabili di $links utilizzare secondo una nomenclatura pensata a priori, sempre riempendo un array dello stesso tipo di prima

- personalmente ho notato che per fare le stesse cose che faccio in 20-30 righe di codice di questo modulo, spesso utilizzavo molto codice e sporco spaso tra file tpl.php e template.php .... se malauguratamente mi appoggiavo su un'altro tema spesso l'espottazione delle modifiche era lunga ...
voi che ne pensate??

PS= non mi sto impuntando sull'utilità o meno del modulo, ma senza dubbio mi fà bene questo tipo di discussione.

Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.

WeBrain Solution | Pillsofbits Of Bits

Boh, secondo me la via più facile sarebbe modificare nel modulo $node->links e poi usare una funzione preprocess (sempre nel modulo) per spedire a $links solo i dati che ti servono. In questo modo, il tema proprio non lo tocchi, in quanto quello che viene stampato è sempre $links, ma con contenuti diversi.

Pinolo wrote:
Boh, secondo me la via più facile sarebbe modificare nel modulo $node->links e poi usare una funzione preprocess (sempre nel modulo) per spedire a $links solo i dati che ti servono. In questo modo, il tema proprio non lo tocchi, in quanto quello che viene stampato è sempre $links, ma con contenuti diversi.

ma tutto sommato è quello che sto tentando di fare:
$links lo modifico in modo tale da poterlo lasciare nel tema senza toccarlo, ma allo stesso tempo ci estraggo alcune informazioni da stampare altrove e impostare come "unset" queste info per non essere duplicaite...

Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.

WeBrain Solution | Pillsofbits Of Bits

dopo qualche commento discordante decido di pubblicare qui il codice che ho completato, avviso che non è un giogiello dell'ingegneria oppure un modulo che una volta installato vi fà anche il caffè, ma potrebbe tornare utile a qualcuno e soprattutto è motivo di spunto e discussione:

nome file: links_extractor.module

<?php
/* - version = "6.x-1.0.1"
 * - License = (Gplv2)+(Mit)
 * - Description: has supported only $links variable on node-*.tpl.php
 * - Author: Domenico Monaco / <a href="mailto:[email protected]" rel="nofollow">[email protected]</a>
 *    $node->linksextractor
 *
 *
 *
 */
function _leconfig($in) {
 
$output=array(); //output var
 
$mode=''; //Prototype,  don't have used
 
$vartoextract=
  array(
      array(
'comment_add', 'page', 'story'),
      array(
'node_read_more', 'page', 'story'),
      array(
'statistics_counter', 'page', 'story'),
   );
  
$vartounset=
   array(
      array(
'comment_add', 'page', 'story'),
      array(
'statistics_counter', 'page', 'story')
   );
 
//START PROCESSING
   
if($in=='vartoextract') {
     
$output=$vartoextract;
    }
    if(
$in=='vartounset') {
     
$output=$vartounset;
    }
   
//END PROCESSING
return $output;
}
function
links_extractor_link_alter(&$links, &$node) {
 
// IN VAR to extract
 
$vartoextract=_leconfig('vartoextract');
 
// print_r($invarextr);
 
foreach($vartoextract as $var) {
   
$s=array_search($node->type$var);
    if(
$s!=0) {
      if(
$node->type==$var[$s]) {
        if(isset(
$links[$var[0]])) {
         
$node->linksextractor[$var[0]]=$links[$var[0]];
        }
      }
    }
  }
 
$vartounset=_leconfig('vartounset');
 
// print_r($invarextr);
 
foreach($vartounset as $va) {
   
$t=array_search($node->type$va);
    if(
$t!=0) {
      if(
$node->type==$va[$t]) {
        if(isset(
$links[$va[0]])) {
          unset(
$links[$va[0]]);
        }
      }
    }
  }
}
function
links_extractor_preprocess_node(&$variables) {
 
$variables['linkextractor']=$variables['node']->linksextractor;
 
//$variables['link_comment_add']=$variables['node']->linksextractor['comment_add'];
 
$sizele=(sizeof($variables['node']->linksextractor));
  while(
$sizele!=0) {
   
$variables['linke_' . $sizele]='sdsjhg';
   
$sizele=$sizele-(1);
  }
  if(isset(
$variables['node']->linksextractor['comment_add'])) {
   
$variables['link_comment_add']=le_link($variables['node']->linksextractor['comment_add']);
  }
  if(isset(
$variables['node']->linksextractor['node_read_more'])) {
   
$variables['link_node_read_more']=le_link($variables['node']->linksextractor['node_read_more']);
  }
  if(isset(
$variables['node']->linksextractor['statistics_counter'])) {
   
$count=explode(' ',$variables['node']->linksextractor['statistics_counter']['title']);
   
$variables['link_statistics_counter']=$count[0];
  }
}
function
le_link($le) {
  if(!(isset(
$le['href']))) {
  return
$le['title'];
  }
 
$s=l($le['title'], $le['href'], $le);
return
$s;
}
?>

Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.

WeBrain Solution | Pillsofbits Of Bits