• Moderatore

    @milazzo87 Il concetto è che devi fare in modo di non caricare il css del tema genitore, per farlo devi deregistrarlo con la funzione dedicata che ti ho indicato sopra e questo si fa in php, quando è deregistrato quello del tema genitore dopo ti carichi il tuo css dal tema figlio (che sarà il css del genitore che hai modificato) come stai facendo ora.

    Come lo carichi il css dal tema figlio?


  • User Attivo

    Grazie mille overclock. Il tema child è stato creato così (copio dal functions.php, ho fatto tutto tramite un plugin):

    function orbisius_ct_riu_theme_child_theme_enqueue_styles() {
        $parent_style = 'orbisius_ct_riu_theme_parent_style';
        $parent_base_dir = 'storefront';
    
        wp_enqueue_style( $parent_style,
            get_template_directory_uri() . '/style.css',
            array(),
            wp_get_theme( $parent_base_dir ) ? wp_get_theme( $parent_base_dir )->get('Version') : ''
        );
    
        wp_enqueue_style( $parent_style . '_child_style',
            get_stylesheet_directory_uri() . '/style.css',
            array( $parent_style ),
            wp_get_theme()->get('Version')
        );
    }
    
    add_action( 'wp_enqueue_scripts', 'orbisius_ct_riu_theme_child_theme_enqueue_styles' );
    

  • Miglior Risposta
    Moderatore

    In quello snippet quello che viene fatto è caricare il CSS del tema genitore e poi caricare il CSS del tema figlio, quindi la parte che carica il CSS del tema genitore va tolta (il primo wp_enqueue_style()), poi devi mettere un array vuoto nel terzo parametro della funzione wp_enqueue_style(), dove c'è ora array( $parent_style ) per esempio puoi mettere [] (che è un array vuoto), nel tuo CSS poi incolli tutto il contenuto del CSS del tema genitore e modifichi quello.

    Poi ti devi assicurare che non venga caricato nessun CSS dal tema genitore, con i tasti CTRL U puoi guardare nel sorgente della pagina e nel caso toglierlo come ho detto sopra.


  • User Attivo

    Grazie mille @overclokk ! Ho provato tutto in locale e funziona perfettamente.

    Una sola domanda, visto che ho praticamente sostituito tutto il CSS del tema genitore, potrei avere qualche problema in caso di aggiornamenti di Storefront?


  • User Attivo

    EDIT: Mi tocca correggermi, alcuni elementi vengono ancora presi dal CSS del tema genitore. Copio e incollo la parte del mio functions.php relativa al tema child. Dove sbaglio?

    function orbisius_ct_riu_theme_child_theme_enqueue_styles() {
        $parent_style = 'orbisius_ct_riu_theme_parent_style';
        $parent_base_dir = 'storefront';
    
    
        wp_enqueue_style( $parent_style . '_child_style',
            get_stylesheet_directory_uri() . '/style.css',
            array( [] ),
            wp_get_theme()->get('Version')
        );
    }
    
    add_action( 'wp_enqueue_scripts', 'orbisius_ct_riu_theme_child_theme_enqueue_styles' );
    

    overclokk 1 Risposta
  • Moderatore

    @milazzo87 prima ti faccio solo una correzione, nel terzo parametro della funzione che ti ho detto ci va solo [] e non array( [] ).

    Poi installa Query Monitor (lo trovi sulla repo), poi quando è attivato nel front-end del sito sulla barra nera in alto dovresti vedere una nuova voce di menù, se ci passi sopra col mouse si apre una tendina, clicca su "Fogli di syle" o "Stylesheet", guarda nella lista se viene caricato anche il css dal genitore, se si scrivi la "handle" qui.


  • User Attivo

    Innanzitutto grazie per la pazienza infinita.

    Ora il mio functions.php è come di seguito, inoltre ho copiato tutto lo style.css del file genitore in style.css del mio tema child (correggendo il parametro che mi interessa, naturalmente.

    function orbisius_ct_theme_child_theme_enqueue_styles() {
        $parent_style = 'orbisius_ct_riu_theme_parent_style';
        $parent_base_dir = 'storefront';
    
    
        wp_enqueue_style( $parent_style . '_child_style',
            get_stylesheet_directory_uri() . '/style.css',
            [],
            wp_get_theme()->get('Version')
        );
    }
    
    add_action( 'wp_enqueue_scripts', 'orbisius_ct_riu_theme_child_theme_enqueue_styles' );
    

    Però, purtroppo, continuo ad avere elementi presi dal CSS genitore e, infatti, su Query monitor vedo il CSS di Storefront (Handle: storefront-style, Sorgente: wp-content/themes/storefront/style.css).

    Non so se ho fatto una cavolata, comunque ho provato anche a sostituire la riga [] con array(), ma il risultato non cambia.


    overclokk 1 Risposta
  • User Attivo

    Forse ho risolto aggiungendo a functions.php

    add_action( 'wp_enqueue_scripts', 'remove_default_stylesheet', 20 );
     function remove_default_stylesheet() {
         wp_deregister_style( 'storefront-style' );
    }
    

    Corretto? Ho copiato dalla pagina che mi hai linkato qualche messaggio fa.


  • Moderatore

    @milazzo87 ha detto in Cambiare breakpoint in Storefront:

    Non so se ho fatto una cavolata, comunque ho provato anche a sostituire la riga [] con array(), ma il risultato non cambia.

    Questa è una correzione perché com'era scritto era sbagliato.

    @milazzo87 ha detto in Cambiare breakpoint in Storefront:

    Corretto? Ho copiato dalla pagina che mi hai linkato qualche messaggio fa.

    Se ora lo stile non te lo carica più va bene.


  • User Attivo

    Lo stile non me lo carica, ma non mi caricava più neanche lo stile dei prodotti Woocommerce. Credo di aver risolto copianto del css del tema child anche tutto il contenuto /assets/css/woocommerce/woocommerce.css e ora sembra funzionare tutto (lo sto ancora testando in locale).

    Il problema che però mi pongo è il seguente: potrei avere problemi con eventuali aggiornamenti di Storefront, visto che ho tolto di mezzo due dei file css originali?


  • Moderatore

    Se non ti caricava più lo stile di WC è un problema diverso.

    In quel caso eviterei di mettere tutto nello stesso css, quanto pesa ora il file?

    @milazzo87 ha detto in Cambiare breakpoint in Storefront:

    Il problema che però mi pongo è il seguente: potrei avere problemi con eventuali aggiornamenti di Storefront, visto che ho tolto di mezzo due dei file css originali?

    Al massimo solo qualche elemento che potrebbe cambiare lo stile se dal genitore cambiano qualche classe css, risolvibile riapplicando lo stile mancante.


  • User Attivo

    Lo stile di Woocommerce non me lo caricava più una volta inserito wp_deregister_style( 'storefront-style' ) nel functions.php. Ora il file style.css pesa 122kb rispetto ai circa 40kb prima delle modifiche.

    Dici che avevo sbagliato qualcosa nel deregister? Cosa mi consigli di fare?


  • Moderatore

    Dovresti cercare nel tema genitore lo snippet che registra lo stile, che lo voglio vedere, mi sembra strano.


    M 1 Risposta
  • User Attivo

    Onestamente non saprei dove guardare, ti copio il functions.php di Storefront (sperando di aver quanto meno azzeccato il file giusto).

    <?php
    /**
     * Storefront engine room
     *
     * @package storefront
     */
    
    /**
     * Assign the Storefront version to a var
     */
    $theme              = wp_get_theme( 'storefront' );
    $storefront_version = $theme['Version'];
    
    /**
     * Set the content width based on the theme's design and stylesheet.
     */
    if ( ! isset( $content_width ) ) {
    	$content_width = 980; /* pixels */
    }
    
    $storefront = (object) array(
    	'version'    => $storefront_version,
    
    	/**
    	 * Initialize all the things.
    	 */
    	'main'       => require 'inc/class-storefront.php',
    	'customizer' => require 'inc/customizer/class-storefront-customizer.php',
    );
    
    require 'inc/storefront-functions.php';
    require 'inc/storefront-template-hooks.php';
    require 'inc/storefront-template-functions.php';
    require 'inc/wordpress-shims.php';
    
    if ( class_exists( 'Jetpack' ) ) {
    	$storefront->jetpack = require 'inc/jetpack/class-storefront-jetpack.php';
    }
    
    if ( storefront_is_woocommerce_activated() ) {
    	$storefront->woocommerce            = require 'inc/woocommerce/class-storefront-woocommerce.php';
    	$storefront->woocommerce_customizer = require 'inc/woocommerce/class-storefront-woocommerce-customizer.php';
    
    	require 'inc/woocommerce/class-storefront-woocommerce-adjacent-products.php';
    
    	require 'inc/woocommerce/storefront-woocommerce-template-hooks.php';
    	require 'inc/woocommerce/storefront-woocommerce-template-functions.php';
    	require 'inc/woocommerce/storefront-woocommerce-functions.php';
    }
    
    if ( is_admin() ) {
    	$storefront->admin = require 'inc/admin/class-storefront-admin.php';
    
    	require 'inc/admin/class-storefront-plugin-install.php';
    }
    
    /**
     * NUX
     * Only load if wp version is 4.7.3 or above because of this issue;
     * https://core.trac.wordpress.org/ticket/39610?cversion=1&cnum_hist=2
     */
    if ( version_compare( get_bloginfo( 'version' ), '4.7.3', '>=' ) && ( is_admin() || is_customize_preview() ) ) {
    	require 'inc/nux/class-storefront-nux-admin.php';
    	require 'inc/nux/class-storefront-nux-guided-tour.php';
    	require 'inc/nux/class-storefront-nux-starter-content.php';
    }
    
    /**
     * Note: Do not add any custom code here. Please use a custom plugin so that your customizations aren't lost during updates.
     * https://github.com/woocommerce/theme-customisations
     */
    
    

  • Moderatore

    Così mi dice poco, appena ho un attimo me lo installo e ci guardo


  • User Attivo

    Sei gentilissimo, @overclokk . Nel frattempo ho testato la soluzione di mettere tutto nello stesso file CSS e ho minificato e aggregato tutti i file CSS con Autoptimize. Per il momento non sembra dare problemi, quindi direi che una soluzione, quanto meno parziale, l'ho trovata grazie al tuo aiuto.


  • Moderatore

    Ciao, ho guardato un po' quel tema, direi di aver capito il problema, vediamo di risistemare tutto.

    Però mi serve sapere il flusso di come vuoi caricare il CSS.

    • storefront-gutenberg-blocks
    • storefront-style
    • storefront-icons
    • storefront-fonts
    • storefront-woocommerce-style [storefront-style, storefront-icons]
    • storefront-child-style

    Questi sono gli stili in ordine di caricamento, fra parentesi quadre sono indicati i CSS per gestire la dipendenza, ovvero, quali css devono essere caricati prima.
    Come ultimo c'è anche il CSS nella root del tema figlio, ovvero il tema genitore se esiste un tema figlio attivo carica lui alla fine della pila il CSS.

    Ora questo approccio ha diversi problemi quindi vediamo di fare un lavoro pulito e sistemare, fammi uno schemino sotto per come vorresti venisse caricato tutto.


    M 1 Risposta
  • User Attivo

    Onestamente non so rispondere alla tua domanda. Esiste un ordine "standard" di caricamento? Anche mantenere l'ordine di caricamento di Storefront immagino che nel mio caso possa andare bene...


  • Moderatore

    @overclokk ha detto in Cambiare breakpoint in Storefront:

    storefront-style

    Forse mi rispondo da solo, tu volevi sono cambiare il breakpoint qui storefront-style giusto?
    Tutto il resto doveva rimanere invariato?


  • User Attivo

    Sì, esatto. Scusa se sembro evasivo nelle risposte, ma ho sempre utilizzato temi starter proprio perché non saprei dove mettere le mani nella creazione da zero di un tema.