(WooCommerce) Eliminarea Sidebar-ului doar pe pagina Single-Product

4 ian. 2014, 04:59:43
Vizualizări: 28.1K
Voturi: 1

Creez o temă și nu doresc să afișez sidebar-ul pe pagina produsului individual (single-product).

Urmând recomandările WooCommerce, am făcut o copie a directorului "templates" (din plugin-ul woocommerce) și am instalat-o în mytheme/templates, redenumind directorul în "woocommerce". În rădăcina temei mele, am creat un fișier numit sidebar-shop.php.

Până acum am sidebar-ul afișat atât pe pagina de magazin cât și pe pagina produsului individual. Am încercat să elimin do_action('woocommerce_sidebar'); din woocommerce/single-product.php și de asemenea am încercat să creez o condiție în woocomerce/shop/sidebar.php, ceva de genul:

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

dar sidebar-ul rămâne.

Există vreo opțiune funcțională pentru a elimina sidebar-ul doar de pe pagina produsului individual?

2
Comentarii

cred că ar trebui să adaugi această linie și în fișierul template pentru single-product - remove_action( 'woo_main_after', 'woocommerce_get_sidebar', 10)

Shazzad Shazzad
4 ian. 2014 05:24:01

Am încercat, dar nu a funcționat.

Rico Letterman Rico Letterman
4 ian. 2014 05:55:42
Toate răspunsurile la întrebare 3
4

Eticheta condițională pentru produse individuale este 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');
    }
}

De asemenea, poți dori să modifici aspectul pe pagina respectivă de produs la lățime completă pentru a elimina spațiul liber și a reduce lățimea zonei de conținut folosind o clasă personalizată pentru body, pe care o poți genera și ea condițional.

Etichete condiționale WooCommerce http://docs.woothemes.com/document/conditional-tags/

4 ian. 2014 11:46:21
Comentarii

is_product() este doar un wrapper pentru is_singular('product'). Deci, ambele funcționează exact la fel.

Abhik Abhik
4 ian. 2014 14:31:32

Ar trebui să adaugi slug-ul paginii de produs individual dacă ( is_product('t-shirt') ) {

Brad Dalton Brad Dalton
4 ian. 2014 14:36:04

Și cum dacă vreau să îl elimin pentru toate produsele? Adică, fără un ID specific

Rico Letterman Rico Letterman
6 ian. 2014 00:15:51

if ( is_product() ) {

Brad Dalton Brad Dalton
6 ian. 2014 00:28:46
2

Aici este..

function remove_sidebar_shop() {
    if ( is_singular('product') ) { // verifică dacă este o pagină singulară de produs
        remove_action('woocommerce_sidebar', 'woocommerce_get_sidebar'); // elimină bara laterală WooCommerce
    }
}
add_action('template_redirect', 'remove_sidebar_shop'); // atașează funcția la acțiunea template_redirect
4 ian. 2014 05:36:06
Comentarii

Abhik, codul părea promițător dar nu a funcționat nici el. Mă întreb dacă "product" este ID-ul real al paginii de produs single. Oricum, mulțumesc.

Rico Letterman Rico Letterman
4 ian. 2014 05:58:18

@serranegra greșeala mea. init este prea târziu pentru a elimina acțiunea. Codul a fost corectat și ar trebui să funcționeze bine acum.

Abhik Abhik
4 ian. 2014 08:34:52
0
function remove_storefront_sidebar() {
    if ( is_product() ) {
    remove_action( 'storefront_sidebar', 'storefront_get_sidebar', 10 );
    }
}
add_action( 'get_header', 'remove_storefront_sidebar' );

Funcționează cu ultima versiune WooCommerce 2.5.2 De asemenea, este necesar CSS:

.single-product.right-sidebar .content-area {
  float: none;
  margin-right: 0;
  width: 100%;
}
12 feb. 2016 03:06:07