2015-04-26 10 views
15

Ho bisogno di identificare il pulsante aggiungi al carrello e disabilitato (js e php) in base all'id del prodotto (questo non è il vero obiettivo della domanda, il grassetto è quello vero)
Dal momento che non ho trovato alcuna soluzione, ho pensato di lasciare che l'amministratore premesse il pulsante nella sezione admin dedicata alla estensione tomy e catturasse le informazioni del pulsante con js e poi le salvasse in seguito.
Per fare ciò, desidero visualizzare il corpo principale della pagina del prodotto e quello di una categoria per ciascun tema nella sezione di progettazione.
Questo è quanto ho recuperare i temi e pacchetti:Magento - Visualizza la body page del prodotto e della categoria per ogni progetto in admin

//Main package/theme 
Mage::getStoreConfig('design/package/name') 
//Reegex theme 
$ob=unserialize(Mage::getStoreConfig('design/package/ua_regexp')); 
foreach($ob as $key) 
    echo $key['value']; 


mia preoccupazione principale è per la parte in grassetto, è se è possibile? Come lo faccio?
Giusto per essere chiari: mi serve solo il rettangolo rosso: enter image description here
Sopra di esso c'è il pangrattato e sulla destra della barra laterale



MAGGIORI DETTAGLI
Quando l'amministratore crea/modifica un prodotto, può selezionare o meno i paesi in cui l'oggetto può essere venduto.
Cosa succede: quando una pagina carica il sistema controlla se l'articolo è commerciabile nel paese dei clienti altrimenti rimuove il pulsante.
Ora questo portare alcuni problemi:

  • supporto tema Wide: Non sono sicuro sul pulsante HTML è la stessa di quella di default
  • Nella stessa pagina può esistere prodotti commerciabili e non commerciabili-: identifica il pulsante dell'elemento corretto nella pagina della categoria dove ci sono più di essi, per farlo controllo il comportamento del pulsante: di solito contiene: /checkout/cart/ più product id nell'attributo onlick o il pulsante invia un modulo, penso che se l'amministratore "mi mostra" cosa succede e, dopo un'analisi, potrò identificare il pulsante e sostituirlo usando lo id (secu ri) o class (non così certo), dal momento che non tutti i negozi utilizzano il default btn-cart classe

  • cache di sistema/FPC che recuperare la pagina: non so se sono catturare i js che disabilitano il pulsante o se il cliente ha disassato qualsiasi script (probabilmente non può nemmeno usare il sito), tuttavia il blocco del carrello non viene memorizzato da quei programmi (a volte se l'elemento non è disponibile il pulsante è nascosto)

  • Problema SEO: gli ospiti non sono obbligati a selezionare un paese, ma cerco di identificarlo con un servizio esterno usando l'ip, quindi probabilmente rileverà anche i bot come utenti, non so se sarà un problema (Io non la penso così, altrimenti devo usare JS per fare una chiamata AJAX e d poi nascondere il pulsante

vorrei evitare qualsiasi modifica a qualsiasi file modello e creare un modo molto semplice per l'utente di configurare il modulo (fare clic su un pulsante è meno complicata di quanto l'intera procedura per creare un attributo, le opzioni relative e associarlo ai set)

In pratica: come posso visualizzare la pagina del prodotto e della categoria nel back-end?

risposta

2

Cosa succede ad usare la logica successiva per il tasto di togliere dal pagina del prodotto:

  1. Aggiungi nuovo attributo (ad esempio: hide_button, tipo sì/no) ai prodotti a catalogo> Attributi> Gestisci attributi. Di default sarà 'no', quindi tutti i prodotti hanno il pulsante. L'amministratore può impostare l'attributo su "Sì" per i prodotti necessari.

  2. Crea osservatore che cattura catalog_product_load_after evento:

    public function checkProduct(Varien_Event_Observer $observer){ 
        Mage::register('hide_button', $observer->getEvent()->getProduct()->getData('hide_button')); 
    
        return $this; 
    } 
    
  3. Creare osservatore che cattura controller_action_layout_generate_blocks_after evento e iniettare il codice js a tutti i temi:

    public function injectScript(Varien_Event_Observer $observer){ 
        if (Mage::registry('hide_button' == 1) { 
         $head = $observer->getEvent()->getLayout()->getBlock('head'); 
         $head->addItem('js', 'hide-button.js'); 
        } 
    
        return $this; 
    } 
    
  4. Creare il file js/nascondere -button.js che rimuoverà i pulsanti con la classe 'btn-cart' dalla pagina:

    Event.observe(window, 'load', function() { 
        $$("button.btn-cart").remove(); 
    }); 
    

Non ho testato il codice, è solo un'idea.

+0

Il pulsante deve essere rimosso se il prodotto non è commerciabile nel paese del cliente, quando l'amministratore crea/modifica il prodotto può selezionare i paesi consentiti o meno, quindi penso che un attributo sì/no non è un'opzione disponibile . – Razorphyn

+0

È possibile impostare l'attributo come testo, quindi l'amministratore può impostare i codici paese come: EN, DE, CH ecc. (Separati da virgola). Dopodiché, al secondo passaggio, puoi prendere il codice del paese cliente, controllare che questo codice sia presente nell'attributo e impostare il risultato in Mage :: registry ('hide_button') in modo che si nasconderà il pulsante per i codici paese. Inoltre puoi ottenere il Paese dall'indirizzo del cliente se ha effettuato l'accesso. – ToxaBes

+0

Mmmhhhhh Non sono sicuro, mi manca un passaggio ... sarebbe utile se posso aggiungere una classe ai prodotti non commerciabili e quindi selezionare con js, altrimenti non riesco a distinguere tra disponibile e non, inoltre non sono sicuro che il pulsante abbia la classe 'btn-cart' – Razorphyn