Snippets nelle pagine: problemi con le functions

26 contenuti / 0 new
Ultimo contenuto
Snippets nelle pagine: problemi con le functions

Salve a tutti,

ho svilupapto diversi snippets per i siti che ho realizzato con Drupal ma ho un problemuccio.

se ad esempio in una pagina (non un blocco: una pagina) in formato PHP realizzo una funzione che deve "stampare" una risposta sulvideo, questa risposta va fuori templat ossia Drupal mi mostra una pagina bianca con stampata la risposta che voglio ma non dentro il template.
Come mai? Cosa posso fare ?
Ringrazio

È sconosciuto il problema?

Il problema e DOVE hai inserito questi Snippets ?

----------------------------------------
bI’Iqchugh’ yIvang !
Se sei triste, agisci!

Proverbio Klingon

Li ho inseriti in una pagina noramle. nel codice della pagina attivando il filtro PHP al posto dle normale html ...

Quote:
Puoi pubblicare codice PHP. Devi includere i marcatori
<?php
 
?>
.

esatto Bots, è ben quello che ho fatto.

il codice funziona tutto.
ma quando una funzione come ad esempîo ad esempio

<?php
function stampa() {
$pag = <<< FORM
<b>Hello World</b>
FORM;
echo
$pag;
}
?>

La funzione stampa viene eseguita ... ma la frase "hello World" viene stampata su schermo totalmente bianco .. ergo: totalmente fuori dal template ... perchè ?

a me così funge

<?php
function stampa() {
$pag = '<<< FORM
<b>Hello World</b>
FORM;
echo $pag;
}
return stampa();
?>

come dici tu non stampa nulla

Scusate la divagazione e l'atteggiamento censorio. Ma perché usate funge al posto di "funziona"? Anche l'italiano, come l'HTML ed il PHP, ha le sue regole.

1. è perfettamente italiano anche "funge"
2. è di tre caratteri più breve
3. a me piace
4. ma dico, con tutti i post sgrammaticati che ci sono in questo forum, vieni a fare le pulci proprio a me?

scusate la gravosa nota .. ma ritengo sia doverosa poichè solo Qui si può comprendere la testa di fungo ( che è il Presente, ved. tabella html linkss ).

Lavatrice ad ultrasuoni
Sito http://www.ultrasuoni.net > Client service and contacts: ultrasuoniindustrial@libero.it

Ritorniamo in topic. L'ho aperto non per la lingua ma per PHP!

Allora Bohz: lo so che non funziona ma se tu al posto di vedere solo la funzione, la chiamassi: fuznionerebbe come ho detto dato che il problema l'ho su siti on line e puoi verificare il tutto ... fai allora finta di fare così

<?php
if ( $_POST ) { stampa(); }
// OPPURE if ( !$_POST ) { stmpa(); ) ... inventane tu una basta che chiami la funzione.
function stampa() {
$pag = <<< FORM
<b>Hello World</b>
FORM;
echo
$pag;
}
return
stampa();
?>

e vedi cche fa esattamente come ho detto.

Dimostrazione???

http://www.arpabilanciata.it

vai alla pagina "Contacts" c'è un modulo ... evita di mettere i campi ... e vedi che ti manda ad una pagina totalmente bianca con le sole scritte.

In altre parole: PERDE IL TEMPLATE e lo scopo di questo topic è capire il perchè: dove sbaglio, cosa non tengo in consdirazione .. cosa devo fare e lo chiedo a voi che siete più esperti di me.

Non gli errori o presunti tali in "italiano" per i quali ho "perso tempo" a leggere le repliche al posto di concentrarsi sul problema in sè.

Ringrazio.

Tiziano:

Quote:
Li ho inseriti in una pagina noramle. nel codice della pagina attivando il filtro PHP al posto dle normale html ...

Quote:
Allora Bohz: lo so che non funziona ma se tu al posto di vedere solo la funzione, al chiamassi; fuznionerebbe come hod etto dato che il problem al'ho su siti on line e puoi verificare il tutto .. fai allora finta di fare così

Quote:
e vedi cche fa esattametne come hod etto.

Dimostrazione???

http://www.arpabilanciata.it

vai alla pagina "contacts" c'è un modulo ... evita di mettere i campi ... ev edi che ti madna ad una pagina totalmente bianca con le sole scritte.

In altre parole: PERDE IL TEMPLATE e lo scopo di questo topic è capire il perchè: dove sbaglio, cosa non tengo in consdirazione .. cosa devo fare e lo chiedo a voi che siete più esperti di me.

Non gli errori o presunti tali in "italiano" per i quali ho "perso tempo" a leggere le repliche al posto di concentrarsi sul problema in sè.

------
Ma aggiustati la tastiera che è meglio , e mi pare che il tempo lo fai perdere proprio tu : non si capisce niente o quasi di quello che stai scrivendo e ci vogliono minuti preziosi per Tradurti.
Beato Bohz che ti capisce.

Lavatrice ad ultrasuoni
Sito http://www.ultrasuoni.net > Client service and contacts: ultrasuoniindustrial@libero.it

Lorenzo: aggiustati la testa!
perchè come avrai notato: ho corretto i refusi.
Oltretutto mi sembra che da qualche ora a questa parte la gente entri solo per fare casino e distogliere l'attenzione dai topics.
Ma questo forum HA o NO dei moderatori?

Inoltre Lorenzoo: non ho parlato e non ho rivolto a te alcun messaggio.
Ti pregherei di risparmiare "caratteri" a me rivolti.

ot
ma è quello che chiedo io agli admin visto che ci sono e tu ne metti in dubbio pure l'esistenza e questo, in particolare, per le velate le minacce alla integrità della "testa altrui".
Ti consiglio di abbassare i toni e di scrivere il mio nome in modo idoneo la prossima : Lorenzo è con una sola "o" finale.
Per il resto confermo : ti commenti bene da solo, punto

Lavatrice ad ultrasuoni
Sito http://www.ultrasuoni.net > Client service and contacts: ultrasuoniindustrial@libero.it

Quote:
Oltretutto mi sembra che da qualche ora a questa parte la gente entri solo per fare casino e distogliere l'attenzione dai topics.
è perche mai ?
la tua aggressività Tiziano non ha senso , siamo qui per condividere voluntariamente .

Per me questo questo topic e chiuso.

----------------------------------------
bI’Iqchugh’ yIvang !
Se sei triste, agisci!

Proverbio Klingon

In non ho detto che "funge" non è un vocabolo corretto in italiano, ma che non ha niente a che vedere con "funziona" (che era il senso della parola nel messaggio di riferimento), come prova il link segnalato.
Capisco che per molti tutto questo è tempo sprecato,

Johnny: sono entrato ponendo una questione e sperando in un aiuto. Arriva il "professore d'italiano".
Riporto in topic: ritorna il docente d'italiano .
Non è un forum di docenti d'italiano. Si è qui e sono venuto per chiedere aiuto su un problema. Vedo invece che si pensa ben ad altro. Poi mi dici che divento agressivo?
Basta rimanere in tema ed evitare cretinate e l'agressività svanisce da sola.
Grazie!

mi sembra tu faccia molta confusione.
in OP non hai spiegato che l'errore si verifica all'invio di una form. hai solo detto che volevi inserire "snippets" nella pagina.
Drupal ha un livello di astrazione molto alto, non si può pretendere di modificare il comportamento di una form direttamente dal template.
devi conoscere almeno le basi della form API oltre che altre info di base su come funziona drupal sotto il cofano.

Ti consiglio di spiegare chiaramente quello che vuoi ottenere, invece di prendere le cose alla lontana.

detto questo, visto che anche io ne so poco di FAPI, non posso aiutarti.

Gentile utente Tiziano visto che insiste come un Troll le ripeto : le minacce alla mia testa se le tiene e se le rimette in tasca, e le Sue cretinate idem e uguale.
Poi finisco qui: perchè vedo che qui posta gente che accusa Bohz di non saper parlare mentre dovrebbe rivolgere le sue attenzioni agli strafalcioni ILLEGIBILI del "gentile utente Tiziano" il quale può andare benissimo altrove a sbollire le sue isterie mentali..

Se volete proprio continuare tutti e 2 nel dire "stupidaggini senza ne humor ne senso" e a tutti i costi:
Richiedo cortesemente e per la 2a volta a Drupalitalia di terminare qui le continue provocazioni e minacce dell'utente TIZIANO, chiudendo immediatamente questa discussione e la continuazione delle sue gravi offese nei miei riguardi.

Questo anche come già espresso dall'utente Johnny 13.

Grazie in anticipo

Lavatrice ad ultrasuoni
Sito http://www.ultrasuoni.net > Client service and contacts: ultrasuoniindustrial@libero.it

@franzda: hai ragione il link segnalato non riporta "funzionare" come sinonimo di "fungere".
se cerchi vedrai però che "funzionare" ha tra i suoi sinonimi "fungere".
La cosa è confermata da vari dizionari che ho consultato.

Continua a sfuggirmi perchè il fatto che io utilizzi questo termine ti infastidisca al punto da spingerti a partecipare alla seconda discussione in 2 anni su questo forum.

Ok Bohz credo di essermi spiegato male.

allora: ho creato una pagina con dentro un codice PHP che ha diverse funzioni atte solo a stampare frasi se si verificano alcune condizioni.
Il problema è che le frasi vengono si pubblicate, ma totalmente al di fuori del template.

In che modo inserisco il codice?

  • Creando la pagina, impostando il tutto come interprete PHP (la terza opzione tra HTML filtrato, HTML completo e PHP);
  • Inserendo il codice PHP tra <?php e ?>

Riporto ancora qui il codice di esempio. La condizione "if" può essere a piacere, l'importante è che chiami la funzione "stampa()" che attiva il print sullo schermo.

<?php
if ( $_POST ) { stampa(); }
function
stampa() {
$pag = <<< FORM
<b>Hello World</b>
FORM;
echo
$pag;
}
?>

Quando viene stampato "Hello World", viene stampato fuori dal template di Drupal.
Intendo dire che la frase viene stampata in questo modo:

  • Pagina nuova
  • Sfondo bianco
  • Solo la scritta
  • Niente traccia, quindi, del template

Quello che mi chiedo è appunto: come devo fare per evitare ciò e fare in modo che la scritta sia invece dentro al template che ho impostato su Drupal?
Che non mi appaia, cioè su nuova pagina completamente bianca (scritta a parte) ?

Spero di aver chiarito il problema. Nel caso vi siano altri punti oscuri, fammi sapere che magari riporto qui tutto il codice.
Ringrazio.

_______________________________________________________________
@Lorenzo: se vuoi continuare a fare il troll: continua pure finchè te lo permettono. Forse è meglio che investi le tue energie in "lavatrici" imparando a "lavarti" prima di comunicare con me. Lavandoti dalla strafottenza, frustrazione che ti caratterizza e ti rende cieco di fronte al "vedere" cosa conta: se un refuso o una serie di refusi dovuti a dislessia/disgrafia, o il contenuto di un messaggio e ti impedisce anche di vedere come nemmeno tu sia un "docente d'italiano" o di altra lingua.

@Tiziano: sinceramente mi ha stufato e le ripeto per l'ultima "vada a fare il Troll e a perdere tempo con la gente stupida e sua pari.
Non abbiamo tempo da dedicare ai cretini.
In quanto al " lavarsi " prima di parlare ancora del o con il Sottoscritto, si lavi la bocca dalla quale le escono continue e ripetute idiozie infantili, e si colleghi anche il cervello alla lingua che, a quanto vedo, è l'unico organo funzionale che le è rimasto.
Se il forum gradisce lasciar sfogare la sua follia congenita faccia pure ma l'avverto che abbiamo ottimi legali qualora dovesse passare il segno.

Vedo che ha imparato a scrivere o ha cambiato la tastiera: è già un primo passo. Intanto si curi con camomille e tisane o con medicine anticrisi nevrotiche e vada a lavorare, vedrà che ne trarrà miglior giovamento.

Buona Giornata.

Lavatrice ad ultrasuoni
Sito http://www.ultrasuoni.net > Client service and contacts: ultrasuoniindustrial@libero.it

Mi dispiace di aver sollevato un polverone immenso solo per aver aver suggerito un uso più appropriato di un verbo.
Pensavo che la cosa finisse lì e non costituisse un motivo per allontanare la discussione dal suo tema.
Il mio messaggo era, forse, un po' fuori posto; ma mi sembrava opportuno suggerire una maggiore precisione anche nell'esporre i problemi che incontriamo nell'uso di Drupal: non vedo la ragione per la quale ci si augura la massima precisione nell'indicare, ad esempio, parti di codice PHP (nel quale un ";" non può essere sostituito a piacimento con un "<") ed essere approssimativi per il resto.
E' vero che scrivo poco (e magari qualcuno che si sente disturbato da quello che dico potrebbe addirittura augurarsi che io lo facessi ancor più di rado). Forse mi guida il detto "chi parla semina, chi ascolta (o legge) raccoglie"; ammesso e non concesso, ovviamente, che ne sia capace.
Detto questo, eviterò per il futuro di fare osservazioni di questo tipo. Però, per cortesia, evitiamo le arrampicate sugli specchi per dire che, tutto sommato, fungere e funzionare non sono tanto dissimili: tra i due verbi c'è soltanto una lontanissima parentela.
Un saluto a tutti.

Grazie Franzda per il tuo chiarimento.

In ogni caso avevo mandato un PM a Bohz in quanto ho trovato una scappatoia, gliel'ho comunicata evitando di leggere ancora certe demenzialità da parte di taluni "utenti" che da dal mio ultimo intervento ignoro tassativamente.

FINE OT.

La scappatoia che ho trovato, e che permette di rimanere nel template, è questa:

Al posto del seguente codice contenente una funzione:

<?php
if ( $_POST ) { stampa(); }
function
stampa() {
$pag = <<< FORM
<b>Hello World</b>
FORM;
echo
$pag;
}
?>

ho provato ad inserire quest'altro inserendo "switch" al posto di creare una funzione:

<?php
if ( $_POST ) { $variablie=1; } else [ $variabile=0;}
switch (
$variabile) {
  case
1:
$pag = <<< FORM
<b>Hello World</b>
FORM;
echo
$pag;
      break;
  case
0:
      break;
}
?>

La stampa esce a schermo ma dentro il template.
Non so perché e non so se possa considerarsi LA soluzione, ma di certo risolve il mio problema, per cui ho aperto questo topic.

Ragazzi, pls teniamo la conversazione a livelli civili, grazie! :)

Per quanto riguarda il problema originale, se non mi sono perso qualche cosa nella discussione, mi pare di aver capito che ci sono degli snippet inseriti in una pagina del sito, e si cerca di richiamarli all'interno dei template del sito. Questo non è possibile per il fatto che il codice PHP degli snippet inserito è all'interno del DB e viene eseguito solo quando viene richiamata la pagina specifica che li contiene.

Se si tratta di snippet della parte theming che devono essere comuni conviene inserirli in template.php del tema (o tramite un include in questo file), in alternativa se devono essere accessibili "prima" di arrivare al tema, potrebbe essere conveniente creare un modulo contenente questi helper ed attivarlo. E' all'incirca quello che succede con molti moduli come autoloader, ctools, .. e anche la via più pulita per gestire la cosa.

Ciao
Marco
--
My blog
Working at @agavee

Ciao Mavimo,

ti ringrazio per la spiegazione del "perchè" accade quanto mi accade.
Ho risolto applicando la soluzione che ho descritto nel mio intervento precedente il tuo.

Riferendomi ad esso:
Non so quale sia la differenza, in termini di interpretazione, tra il primo codice (non funzionante a dovere in quanto "esce" dal template")) ed il secondo (che funziona benissimo e non esce dal template).
So solo che non dichiarando una funziona ma "sostituendola" (per così dire) con un "Switch", tutto è andato a posto.