(WooCommerce) Rimuovere la Sidebar solo nella pagina Singolo Prodotto

4 gen 2014, 04:59:43
Visualizzazioni: 28.1K
Voti: 1

Sto creando un tema e non voglio visualizzare la sidebar nella pagina del singolo prodotto.

Seguendo le raccomandazioni di WooCommerce, ho fatto una copia della cartella "templates" (presente nel plugin woocommerce) e l'ho installata in mytheme/templates, rinominando la cartella in "woocommerce". Nella root del mio tema, ho creato un file chiamato sidebar-shop.php.

Al momento ho la sidebar visualizzata sia nella pagina shop che nella pagina del singolo prodotto. Ho provato a rimuovere do_action('woocommerce_sidebar'); da woocommerce/single-product.php e ho anche provato a creare una condizione in woocommerce/shop/sidebar.php, qualcosa del tipo:

if (!is_page('single-product') { 
    get_sidebar('shop'); 
}

ma la sidebar rimane.

C'è un'opzione funzionante per rimuovere la sidebar solo nella pagina del singolo prodotto?

2
Commenti

penso che tu debba aggiungere questa riga anche nel file del template single-product - remove_action( 'woo_main_after', 'woocommerce_get_sidebar', 10)

Shazzad Shazzad
4 gen 2014 05:24:01

Provato ma non ha funzionato.

Rico Letterman Rico Letterman
4 gen 2014 05:55:42
Tutte le risposte alla domanda 3
4

Il tag condizionale per i singoli prodotti è is_product()

add_action('template_redirect', 'remove_sidebar_shop');
function remove_sidebar_shop() {
if ( is_product('add-page-i.d-here') ) {
    remove_action('woocommerce_sidebar', 'woocommerce_get_sidebar');
    }
}

Potresti anche voler cambiare il layout di quella pagina prodotto in larghezza completa per rimuovere lo spazio vuoto e ridurre la larghezza dell'area dei contenuti utilizzando una classe personalizzata per il body che puoi generare anche in modo condizionale.

Tag condizionali di WooCommerce http://docs.woothemes.com/document/conditional-tags/

4 gen 2014 11:46:21
Commenti

is_product() è semplicemente un wrapper per is_singular('product'). Quindi, entrambi funzionano esattamente allo stesso modo.

Abhik Abhik
4 gen 2014 14:31:32

Dovresti aggiungere lo slug della pagina del prodotto singolo if ( is_product('t-shirt') ) {

Brad Dalton Brad Dalton
4 gen 2014 14:36:04

E come faccio se voglio rimuoverlo per tutti i prodotti? Intendo, senza un ID specifico

Rico Letterman Rico Letterman
6 gen 2014 00:15:51

if ( is_product() ) {

Brad Dalton Brad Dalton
6 gen 2014 00:28:46
2

Ecco qui..

// Rimuove la sidebar dalla pagina singola del prodotto
function remove_sidebar_shop() {
    if ( is_singular('product') ) { // Verifica se è una pagina singola di prodotto
        remove_action('woocommerce_sidebar', 'woocommerce_get_sidebar'); // Rimuove l'azione della sidebar
    }
}
// Aggiunge l'azione durante il reindirizzamento del template
add_action('template_redirect', 'remove_sidebar_shop');
4 gen 2014 05:36:06
Commenti

Abhik, il codice sembrava promettente ma non ha funzionato comunque. Mi chiedo se "product" sia il vero ID della pagina single-product. Grazie comunque.

Rico Letterman Rico Letterman
4 gen 2014 05:58:18

@serranegra colpa mia. init è troppo tardi per rimuovere l'azione. Codice corretto e ora dovrebbe funzionare bene.

Abhik Abhik
4 gen 2014 08:34:52
0
// Funzione per rimuovere la sidebar in Storefront nelle pagine prodotto
function remove_storefront_sidebar() {
    if ( is_product() ) {  // Verifica se è una pagina singola prodotto
    remove_action( 'storefront_sidebar', 'storefront_get_sidebar', 10 );  // Rimuove la sidebar
    }
}
// Aggiunge l'azione all'hook get_header
add_action( 'get_header', 'remove_storefront_sidebar' );

Funziona con l'ultima versione di WooCommerce 2.5.2 È necessario anche il seguente CSS:

/* Stile per la pagina prodotto con sidebar destra */
.single-product.right-sidebar .content-area {
  float: none;        /* Rimuove il float */
  margin-right: 0;    /* Azzera il margine destro */
  width: 100%;        /* Imposta la larghezza al 100% */
}
12 feb 2016 03:06:07