Vai al contenuto
  • 0

php su pagine


trattore

Domanda

Salve, non capisco perche hanno bloccato il modo di interagire con le funzioni di ips del templare con il php che uno vuole inserire, quindi la domanda è, come capporo posso inserire codici php ad esempio sul global template, senza usare i blocchi php di page, che ritengo inutili visto che non sono in simbiosi con le funzioni ips.. boh uno si crea un codice a se? non ha senso.. ho provato a inserire questo banale cod su global

<php

echo 'ciao';

?>

e mi blocca cosi

--?php echo 'ciao'; ? --

ovviamente stampandomi tutto a video, perche non posso inserire il php, a quale scopo hanno limitato questa funzione

 

DOVREI FAR LAvorare questa variabile

{$html|raw}

dentro il php block ma mi rilascia l'errore

unexpected '|', expecting

 

Modificato da trattore
Link al commento
Condividi su altri siti

21 risposte a questa domanda

Messaggi raccomandati

  • 0
  • Admin
9 ore fa, trattore ha scritto:

ho trovato questo file

https://invisionpower.com/files/file/8441-doxygen-for-php-doc-ips-4/

mi dite a cosa serve il plugin?

 

 

Cita

Doxygen è una applicazione per la generazione automatica della documentazione a partire dal codice sorgente di un generico software.

È un progetto open source disponibile sotto licenza GPL, scritto per la maggior parte da Dimitri van Heesch a partire dal 1997. Doxygen è un sistema multipiattaforma (Windows, Mac OS, Linux, ecc.) ed opera con i linguaggi C++, C, Java, Objective C, Python, IDL (versioni CORBA e Microsoft), Fortran, PHP, C#, e D. Nell'ambito del C++, è compatibile con le estensioni Qt.

È il sistema di documentazione di gran lunga più utilizzato nei grandi progetti open source in C++. Due esempi per tutti, sono l'adozione di doxygen da parte di ACE e KDE. In Java invece, la posizione leader viene meno, in virtù della presenza del concorrente Javadoc. Il sistema estrae la documentazione dai commenti inseriti nel codice sorgente e dalla dichiarazione delle strutture dati.

 

21 ore fa, trattore ha scritto:

ovviamente stampandomi tutto a video, perche non posso inserire il php, a quale scopo hanno limitato questa funzione

Tutti i template Engine, passando da Smarty a Blade, non permettono l'inserimento di PHP nei template per evitare problemi di sicurezza e per tenere il codice il più pulito possibile, molti template infatti permettono l'uso di php solo nei tag {{ codice }} o {php} codice {/php}

  • Like 1
Link al commento
Condividi su altri siti

  • 0

{{$hello = "hello";}}

{$hello}

questo lo puoi fare... ma se inserisci una riga a capo per esempio:

{{$hello='hello';

$hello='edit'}}

{$hello} appare un errore o non risulta niente poichè il sistema non rileva esso come blocco php.

  • Like 1
Link al commento
Condividi su altri siti

  • 0
Inviato (modificato)

ciao ale, quindi mi devo sognare di far leggere la variabile 

{$html|raw}

?

sono bloccato a questo punto, sto cercando tramite il blocco con js o php in tutti i modi di estrapolare quel dato, ma se non riesco a lavorarci insieme mi sa che è impossibile... mi serve un miracolo davvero

Modificato da trattore
Link al commento
Condividi su altri siti

  • 0

Ragazzi secondo mè l'intoppo si trova qui:

\system\3rd_party\HTMLPurifier\HTMLPurifier\Lexer/PH5P.php

c'è un testo che dice

/* If the content model flag is set to either the RCDATA state or
            the CDATA state, and the escape flag is false, and there are at
            least three characters before this one in the input stream, and the
            last four characters in the input stream, including this one, are
            U+003C LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+002D HYPHEN-MINUS,
            and U+002D HYPHEN-MINUS ("<!--"), then set the escape flag to true. */

e sotto il codice

  if (($this->content_model === self::RCDATA || $this->content_model ===
                    self::CDATA) && $this->escape === false &&
                $this->char >= 3 && $this->character($this->char - 4, 4) === '<!--'
            ) {
                $this->escape = true;
            }

che sia questo l'inghippo? e se mettessi false? su  $this->escape = true;

Link al commento
Condividi su altri siti

  • 0

ancora non ho capito quale codice devi inserire nel globalTemplate, devi soltanto adottare il sistema dei template di ips convertire i tag di chiusura.

Link al commento
Condividi su altri siti

  • 0
Inviato (modificato)

Ciao ale no, non devo inserire nessun codice php nel templare, ma devo inserirlo su video che si trova in core > global >video  dove risiede questa variabile

{$html|raw}

che in sostanza genera un iframe questo

<iframe width="459" height="344" src="https://www.youtube.com/embed/jjeI5y6kg3E?feature=oembed" frameborder="0" allowfullscreen="true"></iframe>

dentro rigorosamente i div prestabiliti nel file parser.php e rigorosamente accetta solo contenuto specifico, io volevo prelevare quella caspita di variabile per lavorare sul iframe generato per creare uno spoiler carino che gira con php e js.. ma se non riesco a lavorare  sul codice rilasciato non riesco a fare un cavolo... quindi le cose sono due o riesco a inserire il codice su parser.php  dove richiama il codice precisamente qui: 

case 'video':
$response['html'] = str_replace( 'allowfullscreen', 'allowfullscreen="true"', $response['html'] );
return \IPS\Theme::i()->getTemplate( 'embed', 'core', 'global' )->video( $response['html'] );

oppure devo riuscire a far girare il php nelle pagine html, assurdo che mettono questi limiti non ho parole.. mettendo quel return in una variabile che poi o richiama un array o una stringa.. ma poi il nulla o mi appare il mio codice oppure l'iframe... cioe devo rinunciare a questa modifica perchè mettono dei cavolo di limiti i blocchi sia html che php non leggono nemmeno tutte le variabili  e  sinceramente mi sta passando la voglia di usare ips a queste condizioni

 

ho provato in tutti i modi 

Modificato da trattore
Link al commento
Condividi su altri siti

  • 0

puoi lavorare su $html ma non dentro al contenuto dell'iframe, solo con javascript.

puoi sostituire l'iframe con altro ma non so ora le ripercussioni, usando str_replace o preg_replace ottenendo l'url o altri dati con un pattern/regex specifico.

Link al commento
Condividi su altri siti

  • 0

a me interessa prendere quel linl, poi un iframe posso aggiungerlo io.... ho provato a usare html ma non restituisce nulla =(

Link al commento
Condividi su altri siti

  • 0

cosa ti occorre esattamente? sostituire l'iframe con un tuo codice?

EDIT: controlla come puoi fare qui -> http://sandbox.onlinephpfunctions.com/code/9dab057f6667f265513b0977efb3a5a42d67ac2b

{{preg_match('/src=["\'](.*?)["\']/', $html,$match);}}
{{$link = $match[1];}}

EDIT2: non ho tempo per testare ma sono sicuro che la modifica non avrà successo se non definisci quel div come segue:

<div data-controller="modificaeditor">...</div> questo è permesso da:

protected function _htmlPurifierModifyHtmlDefinition( \HTMLPurifier_HTMLDefinition $def )
if( \IPS\Settings::i()->editor_allowed_datacontrollers )
{
   $allowedDivDataControllers = array_merge( $allowedDivDataControllers, explode( ',', \IPS\Settings::i()->editor_allowed_datacontrollers ) );
}
$def->addAttribute( 'div', 'data-controller', new \HTMLPurifier_AttrDef_Enum( $allowedDivDataControllers, TRUE ) );

modificaeditor lo puoi cambiare come vuoi ma se usi un plugin lo dovrai rinominare in plugins.modificaeditor in modo che hai la possibilità di non andare in conflitto con altri plugins

trattore.png

Link al commento
Condividi su altri siti

  • 0
Inviato (modificato)

Ciao ale, grazie per il tempo a per rispondermi, cmq quello che voglio fare è prelevare il link che inserisce un ipotetico utente ad esempio 

https://youtu.be/VF4cVKdgBV4

e poi tramite quel link estrapolare dati come ad esempio id del video, sto creando uno spoiler che mi genera il contenuto dentro il

<div class="ipsEmbeddedVideo" contenteditable="false"><div>

dentro uno script poi se l'utente clicca sul titolo generato dallo script parte il codice dentro il div in automatico, in modo che non appesantisca troppo la bagina per chi usa gli stati in home page...sono bloccato proprio nell'estrazione del link, ho proceduto a fare così su embed ho inserito

{block="youtube-video"}{$html|raw}</li>';}</script></div>

dentro il blocco ho inserito questo:

// codice cifrato
$random_id_length = 20;
$rnd_id = crypt(uniqid(rand(),1));
$rnd_id = strip_tags(stripslashes($rnd_id));
$rnd_id = str_replace(".","",$rnd_id);
$rnd_id = strrev(str_replace("/","",$rnd_id));
$rnd_id = substr($rnd_id,0,$random_id_length);
$risultato = ereg_replace("[0-9]", "", $rnd_id);



echo "<div class='ipsEmbeddedVideo' contenteditable='false'><a href='javascript:" . $risultato . "()' class='GlobalLinkVideo'><img src='/uploads/file/youtube-video.png' />Video (Clicca per vedere)</a><div id='" . $risultato . " '></div><script>function " . $risultato . "() {document.getElementById('" . $risultato . " ').innerHTML='<li class='test'>";


e funziona benissimo mi mette il risultato sotto script alleggerenzo la pagina in modo tale che quando l'utente clicca su video (premi per vedere) lo script genera dentro il div con la variabile risultato il codice frame con il video, la variabile risultato lo messa per generare un id automatico diverso per ogni stato inserito

ora sono bloccato al titolo dove vorrei ustilizzare questo codice

// estrazione titolo
$text = '<iframe width="480" height="270" src="https://www.youtube.com/embed/oFkMFrhfPdo?feature=oembed" frameborder="0" allowfullscreen="true"></iframe>';
preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $text, $match);
$RisultatoImplode = implode(', ', $match[0]);
$TaglioUno = ereg_replace('https://www.youtube.com/embed/', '', $RisultatoImplode);
$TaglioDue = ereg_replace('[\?]', '', $TaglioUno);
$RisulatoFinale = ereg_replace('feature=oembed', '', $TaglioDue);
$video_id = $RisulatoFinale;
$url = "http://www.youtube.com/watch?v=".$video_id;
$page = file_get_contents($url);
$doc = new DOMDocument();
$doc->loadHTML($page);
$title_div = $doc->getElementById('eow-title');
$title = $title_div->nodeValue;
echo $title;

dove preleva appunto il titolo che ogni utente inserisce e lo vorrei mettere al posto di video (clicca per visualizzare)

ma non ci riesco finche non ho la possibilità di estrapolare il link che inserisce un utente.. =( devo arrendermi?

perchè volevo fare un tutorial cosi ogni utente non appesantisce le proprie pagine quando ci sono 10 video tutti insieme

 

Modificato da trattore
Link al commento
Condividi su altri siti

  • 0

Conoscevo già questo plugin, non mi piace per nulla, non voglio arrendermi, stavo pensavo di mettere un tasto sotto l'editor, che richiama un form il quale dentro un input l'utente inserisce il link e poi rilasci tutto quello che ho scritto sopra... speriamo bene

Link al commento
Condividi su altri siti

  • 0

mi sa che installo il plugin lazy... troppo sbattimento, voglio essere sicuro prima di comprare che giri anche negli stati, mipotete tradurre la frase

volevo informazioni in merito al plugin lazy, potresti dirmi se funziona anche negli stati?

grazie mille

Link al commento
Condividi su altri siti

  • 0

Non so se è sfiga o cosa, cmq ho acquistato il plugin lazy ecc e come volevasi dimostrare funziona solo nei post, negli stati nada, il bello e che mi ero pure informato e mi hanno confermato che funzionava, no comment 12 euro buttati

Link al commento
Condividi su altri siti

  • 0

HO mandato un email al realizzatore ma non penso che voglia farlo, ho aperto il file per dargli un occhiata e c'è pochissimo codice php , non e che saresti capace a convertire la modifica in modo che funzioni solo per gli stati ? intendo anche nei profili

Link al commento
Condividi su altri siti

  • 0

in poche parole crea condizioni usando direttamente il loro codice sul templare ad esempio ho creato questa condizione semplicissima

{{if \IPS\Member::loggedIn()->member_id == $member->member_id}}
{{else}}

{{endif}}

molto utile se volete far vedere qualcosa solo all'utente che si logga oppure ovviamente mettere sotto else per il contrario

Link al commento
Condividi su altri siti

  • 0

mi chiedevo se era possibile fare questo perche chi mette solo un video o una foto nella notifica del mi piace, arriva vuoto a pinco piace un aggiornamento di stato: e poi il nulla, legge solo il testo, mi chiedevo se era possibile inserire un immagine nelle notifiche o la foto del video se mettono mi piace al video

Link al commento
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un membro per lasciare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora
  • Chi sta navigando   0 utenti

    • Nessun utente registrato visualizza questa pagina.
×
×
  • Crea Nuovo...

Informazioni importanti

Abbiamo inserito dei cookies nel tuo dispositivo per aiutarti a migliorare la tua esperienza su questo sito. Puoi modificare le impostazioni dei cookie, altrimenti puoi accettarli cliccando su continua. to insert a cookie message.