Modificarea unui fișier JS cu date din setările pluginului

14 aug. 2010, 22:02:03
Vizualizări: 2.38K
Voturi: 9

Am un plugin care, printre altele, are un fișier javascript care necesită câteva setări specifice utilizatorului. Care ar fi cea mai bună metodă de a obține acele setări în javascript din parametrii de setare ai pluginului?

Cu alte cuvinte, dacă fac acele setări parte din pagina de setări unde utilizatorul le poate introduce, cum aș putea să obțin aceste valori în javascript? Ar trebui să folosesc ceva pentru a adăuga niște tag-uri script și să le setez via PHP la fiecare încărcare de pagină? Ar fi mai bine să setez un cookie pentru asta?

1
Comentarii

Aceasta este o întrebare foarte bună și una pe care am avut de gând să o adresez. Mulțumesc că ai pus-o!

MikeSchinkel MikeSchinkel
15 aug. 2010 00:46:34
Toate răspunsurile la întrebare 2
5
10

mai bine este să folosești funcțiile WordPress pentru asta, un exemplu pentru multilingvism:

    add_action( 'admin_enqueue_scripts', 'add_scripts' );
    function add_scripts($where) {
        wp_localize_script( 'post2media', 'post2media_strings', $this->localize_vars() );
    }
    function localize_vars() {

        $strings = array(
                'btntext'    => __( 'Legătură cu articolul', INPSYDE_P2M_TEXTDOMAIN ),
                'txtallnone' => __( 'Include în galerie:', INPSYDE_P2M_TEXTDOMAIN ),
                'txtall'     => __( 'Toate', INPSYDE_P2M_TEXTDOMAIN ),
                'txtnone'    => __( 'Niciunul', INPSYDE_P2M_TEXTDOMAIN ),
                'ttlcb'      => __( 'Include imaginea în această galerie', INPSYDE_P2M_TEXTDOMAIN )
            );

        return $strings;
    }

folosește asta în fișierul js:

jQuery(function ($) {
buttonaddfunc = function() {
    btntext = post2media_strings.btntext;

    reg = /\d+/;
    $( '.savesend > .button' ) . each( function() {
        inputname = $( this ) . attr( 'name' );
        number = reg . exec( inputname );
        $( this ) . after( '<input type="submit" value="' + btntext + '" name="link[' + number + ']" class="button">' );
    } );
    $( '.describe-toggle-on' ).unbind( 'click', buttonaddfunc );
};
$( '.describe-toggle-on' ).bind( 'click', buttonaddfunc );

} );

Vezi și articolul de la Otto

14 aug. 2010 22:43:40
Comentarii

Nu am înțeles prea bine codul tău, dar am găsit link-ul foarte util.

Ryan Elkins Ryan Elkins
14 aug. 2010 23:26:07

Acest lucru este într-adevăr excelent, mulțumesc! M-am întrebat cum să fac asta de foarte mult timp; mulțumesc! Am vrut să întreb pe lista wp-hackers dar nu am făcut-o niciodată. Mulțumesc din nou.

MikeSchinkel MikeSchinkel
15 aug. 2010 00:52:15

Puteți vedea pe ultimul meu plugin post2media (http://wordpress.org/extend/plugins/post2media/) pentru a vedea un exemplu de plugin live; plugin-ul nu are prea mult cod sursă și cred că este minunat pentru citirea codului sursă și înțelegerea soluției.

bueltge bueltge
15 aug. 2010 13:01:46

Iată un exemplu mai simplu care se reduce la elementele de bază (în exemplul tău se întâmplă prea multe): http://www.prelovac.com/vladimir/best-practice-for-adding-javascript-code-to-wordpress-plugin

Viper007Bond Viper007Bond
17 aug. 2010 05:55:13
1

Există câteva moduri în care ai putea face acest lucru, unul dintre ele l-am folosit anterior, iar celălalt nu, dar l-am utilizat pentru fișiere de configurare XML.

Prima metodă este să incluzi variabilele într-un tag script în header-ul sau footer-ul WP, înainte de tag-ul script unde incluzi fișierul tău JS, de exemplu:

<script type="text/javascript">
    var test = "<?php echo "hello world"; /* codul PHP relevant pentru a afișa datele necesare */ ?>";
    var slider_type = "<?php echo "nivo"; /* la fel ca mai sus */ ?>";
</script>
<script type="text/javascript" src="<?php bloginfo("template_url"); ?>/js/your_js_here"></script>

Cealaltă alternativă ar fi să incluzi JS-ul într-un fișier PHP care este inclus în interiorul unui tag script.

<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/javascripts.php"></script>

În acest fișier ai putea include javascript-ul tău, iar cum PHP ar parsa fișierul, ai putea include apeluri PHP într-un mod similar cu cel de mai sus, pur și simplu afișând datele/opțiunile de care ai nevoie. Un lucru de notat este că poate fi necesar să setezi headerele pentru output ca text/javascript.

Personal, prefer prima metodă și este ceea ce folosesc atunci când am setări modificabile de utilizator care afectează fișierele javascript.

14 aug. 2010 22:25:09
Comentarii

Scriere excelentă. Exact asta am făcut și eu. Pe de altă parte, @bueltge are răspunsul pe care probabil îl căutam cu toții; știu că eu l-am căutat.

MikeSchinkel MikeSchinkel
15 aug. 2010 00:47:59