Italian SMF

Supporto ElkArte => ElkArte 1.0 / 1.1 => Discussione aperta da: berethor il Domenica - 29 Luglio 2018 - 16:56

Titolo: Cambio logo ad ogni refresh
Inserito da: berethor il Domenica - 29 Luglio 2018 - 16:56
Avete presente quei siti o forum in cui il logo cambia (colore, forma, ecc.) ad ogni aggiornamento della pagina? Vorrei sapere se fosse possibile fare la stessa cosa con Elk, grazie.

Ho trovato questo cercando su google, ma non so se (e dove) possa inserirlo, o se abbia qualche utilità: https://stackoverflow.com/questions/31664952/new-logo-image-for-each-refresh-page-in-wordpress-using-css

La versione è 1.1.3
Titolo: Re:Cambio logo ad ogni refresh
Inserito da: Flavio93Zena il Domenica - 29 Luglio 2018 - 20:36
Hmm sì, non dovrebbe essere difficile modificare l'index.template per inserirlo.
Titolo: Re:Cambio logo ad ogni refresh
Inserito da: emanuele il Lunedì - 30 Luglio 2018 - 16:17
Quello che facevo io ai tempi, era di creare uno script php che inviasse direttamente l'immagine random e mettere questo come logo.

hmm... senza "qualcosa tipo", direi che questo è lo script che usavo:
<?php

/**
************************************
* Image Rotator Script
************************************
* Mewz0r!
*
* @copyright    Copyright (C) 2006, Jack Chapple
* @author        Jack Chapple <jack[AT]jcxp[DOT]net>
* @link            http://blog.jackchapple.com/
* @version        1.01
*/

// Directory Path where images are stored. Make sure the path has the trailing slash.
define 'DIRECTORY_PATH''./' );

// Never repeat the same image twice in a row? (true or false)
define 'NEVER_REPEAT'false );

// ==================================
//
// No need to edit below this line!
//
// ==================================

header"Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
header"Cache-Control: no-cache" );
header"Pragma: no-cache" );

//$last_file_path = './last_' . str_replace( '.', '-', $_SERVER['REMOTE_ADDR'] ) . '.txt';

$mime_types = array (
                    
"gif"  => "image/gif",
                    
"jpg"  => "image/jpeg",
                    
"jpeg" => "image/jpeg",
                    
"png"  => "image/png",
                    
"bmp"  => "image/x-windows-bmp"
);

if ( 
$handle opendir(DIRECTORY_PATH) )
{
    
$images = array();
    
    if ( 
NEVER_REPEAT == true AND file_exists$last_file_path ) )
    {
        
$last_file file_get_contents$last_file_path );
    }
    
    while ( 
false !== ($file readdir($handle) ) )
    {
        if ( !
preg_match"/\.(jpg)$/i"$file$matches ) )
        {
            continue;
        }
        
        
$images[] = array( $filestrtolower($matches[1]) );
    }
}
else
{
    die();
}

$image_rand $imagesarray_rand($images) ];

if ( 
NEVER_REPEAT == true AND $last_file AND $image_rand[0] == $last_file AND count($images) > )
{
    
// =============================
    // Ut-Oh! No repeats, thank you!
    // =============================
    
    
while ( $image_rand[0] == $last_file )
    {
        
// =============================
        // Keep looping until we get a "fresh" image
        // =============================
        
        
$image_rand $imagesarray_rand($images) ];
    }
}

$image_loc  DIRECTORY_PATH $image_rand[0];
$image_mime $mime_types$image_rand[1] ];

// =============================
// Record last shown image data
// =============================

/*$fp = @fopen( $last_file_path, 'w' );
@fwrite( $fp, $image_rand[0] );
@fclose( $fp );
*/
// =============================
// And output the 'rotica for all to see! *rejoices*
// =============================

$fp fopen$image_loc'rb' );
header'Content-Type: ' $image_mime );
header'Content-Length: ' filesize($image_loc) );
fpassthru$fp );
fclose$fp );
// *pharp*
?>


Metti lo script ad esempio in:
themes/default/loghi/ ("loghi" dovrai crearla perché non esiste)
e lo chiami "rnd.php".
Nella stessa directory gli metti le immagini che vuoi usare come loghi.
Poi vai nel pannello di admin e nelle impostazioni del tema metti come logo l'url dello script, quindi qualcosa tipo:
www.tuodominio.tld/forum/themes/default/loghi/rnd.php
fatto.
Titolo: Re:Cambio logo ad ogni refresh
Inserito da: berethor il Lunedì - 30 Luglio 2018 - 18:41
Non funziona. Ho provato a mettere come directory prima "http://urldelsito/forum/" ecc. e ho ottenuto questo errore:

failed to open dir: not implemented in /home/account/public_html/ecc. on line 41

Poi ho tentato con l'url "/home/account/" ecc. e ho ricevuto quest'altro errore:

Undefined index:  in /home/account/public_html/.../rnd.php on line 65
Undefined index:  in /home/account/public_html/.../rnd.php on line 84


Le righe in questione contengono ciò:

Linea 41
if ( $handle = opendir(DIRECTORY_PATH) )

65
$image_rand = $images[ array_rand($images) ];

84
$image_mime = $mime_types[ $image_rand[1] ];

Googlando ho letto in più siti che, al posto di opendir, dovrei fare l'accesso tramite account FTP. Ho provato, ma non è cambiato nulla.
Titolo: Re:Cambio logo ad ogni refresh
Inserito da: emanuele il Lunedì - 30 Luglio 2018 - 23:21
Se interpreto correttamente quello che stai dicendo, mi pare di capire che hai cambiato lo script sopra mettendo una directory.
Se così è, non è quello che ho scritto.
Lo script lo devo solo copiare ed incollare pari pari in un file di testo, non c'è niente da cambiare.
Titolo: Re:Cambio logo ad ogni refresh
Inserito da: berethor il Martedì - 31 Luglio 2018 - 18:16
Sì, spiego perchè l'ho fatto altrimenti sembra che sia impazzito ;D
Inizialmente avevo copia-incollato lo script esattamente come dici tu, ma ho ottenuto l'errore "Undefined index" e ho pensato di dover scrivere il percorso della directory.

L'errore è sempre l'undefined index e il log segnala sempre quelle 2 righe dove trovo:

$image_rand = $images[ array_rand($images) ];

e

$image_mime = $mime_types[ $image_rand[1] ];
Titolo: Re:Cambio logo ad ogni refresh
Inserito da: emanuele il Martedì - 31 Luglio 2018 - 22:14
Sei sicuro di aver messo le immagini nella stessa cartella dello script?
Titolo: Re:Cambio logo ad ogni refresh
Inserito da: berethor il Mercoledì - 01 Agosto 2018 - 16:45
Al 100%, ricontrollato per sicurezza giusto poco fa.
Titolo: Re:Cambio logo ad ogni refresh
Inserito da: emanuele il Giovedì - 02 Agosto 2018 - 07:33
Che formato sono?
Segno ma
Modificare qualcosa, lo script considera solo i file con estensione jpg.
Titolo: Re:Cambio logo ad ogni refresh
Inserito da: Flavio93Zena il Giovedì - 02 Agosto 2018 - 11:13
Citazione di: emanuele il Giovedì - 02 Agosto 2018 - 07:33
lo script considera solo i file con estensione jpg.
Non anche png, bmp e gif? Sono nell'array O.o
Titolo: Re:Cambio logo ad ogni refresh
Inserito da: Darknico il Giovedì - 02 Agosto 2018 - 11:37
Citazione di: Flavio93Zena il Giovedì - 02 Agosto 2018 - 11:13
Citazione di: emanuele il Giovedì - 02 Agosto 2018 - 07:33
lo script considera solo i file con estensione jpg.
Non anche png, bmp e gif? Sono nell'array O.o

Guarda meglio il codice, quello è solo un array per definire i mime types ;)
Dopo considera solo i jpg ;)
Titolo: Re:Cambio logo ad ogni refresh
Inserito da: emanuele il Giovedì - 02 Agosto 2018 - 13:37
Anch'io ero convinto li usasse tutti, poi mi sono accorto di:
if ( !preg_match( "/\.(jpg)$/i", $file, $matches ) )
se vuoi che legga anche altri formati c'è da cambiare quella riga in:
if ( !preg_match( "/\.(jpg|png|jpeg|gif|bmp)$/i", $file, $matches ) )
Dovrebbe supportare anche le gif animate.
Titolo: Re:Cambio logo ad ogni refresh
Inserito da: berethor il Giovedì - 02 Agosto 2018 - 16:05
Ok, il problema era quello. Grazie ^_^