2015-04-26 8 views
15

Muszę zidentyfikować przycisk Dodaj do koszyka i wyłączyć go (js i php) na podstawie identyfikatora produktu (to nie jest prawdziwy cel pytania, pogrubiony jest prawdziwy)
Ponieważ nie znalazłem żadnego rozwiązania, które myślałem, aby pozwolić administratorowi nacisnąć przycisk w sekcji admin dedykowane rozszerzenie tomy i przechwycić informacje o przycisku z js, a następnie zapisać je później.
Aby to zrobić, chciałbym wyświetlić główną treść strony produktu i jedną z kategorii dla każdego tematu w sekcji projektu.
ten sposób odzyskać tematów i pakiety:Magento - Wyświetl stronę główną produktu i kategorii dla każdego projektu w administratorze

//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']; 


Moim głównym problemem jest to, o śmiałej części, jest, jeśli jest to możliwe? Jak mam to zrobić?
Wystarczy być jasne: trzeba tylko czerwony prostokąt: enter image description here
Nad nim nie jest bułka tarta, a po prawej pasek boczny



Więcej szczegółów na
Kiedy administrator tworzy/edytować produkt może wybrać kraje, w których można sprzedać przedmiot.
Co się dzieje: kiedy strona wczytuje system, sprawdź, czy dany przedmiot może być sprzedawalny w kraju klienta, w przeciwnym razie usunie przycisk.
Teraz to przynieść pewne problemy:

  • Szerokie wsparcie motyw: Nie jestem pewien przycisk html jest taka sama domyślnego jeden
  • na tej samej stronie mogą istnieć produkty handlowej i nie-handlowej: zidentyfikuj przycisk poprawnego elementu na stronie kategorii, gdzie jest ich wiele, aby to zrobić, sprawdzam zachowanie przycisku: zwykle zawiera on: /checkout/cart/ plus product id w atrybucie onlick lub przycisk przesyła formularz, myślę, że jeśli Administrator "pokazuje" mi, co się dzieje, i po analizie będę mógł zidentyfikować przycisk i zastąpić go za pomocą id (secu re) lub class (nie tak pewne), ponieważ nie wszystkie sklepy użyć domyślnego btn-cart klasy

  • cache/system ZKP, które pobierał stronę: Nie wiem, czy będą one złapać js że wyłączyć przycisk lub jeśli klient usunął wszystkie skrypty (prawdopodobnie nie może nawet korzystać z witryny), jednak zwykle blok dodany do koszyka nie jest buforowany przez te programy (czasami, gdy element nie jest dostępny, przycisk jest ukryty)

  • Problem z SEO: gość nie jest zmuszony do wyboru kraju, ale próbuję go zidentyfikować za pomocą usługi zewnętrznej przy użyciu ip, więc prawdopodobnie wykryje boty jako użytkowników, nie wiem, czy to będzie problem (Nie sądzę), w przeciwnym razie muszę użyć JS do wywołania AJAX d następnie ukryć przycisk

chciałbym aby uniknąć zmienił do dowolnego pliku szablonu i stworzyć bardzo prosty sposób, aby użytkownik mógł skonfigurować moduł (kliknij przycisk jest mniej skomplikowana niż cała procedura tworzenia atrybut, opcje dla krewnych i powiązanie go z zestawami)
Zasadniczo: Jak wyświetlić stronę produktu i kategorii w zapleczu?

Odpowiedz

2

Co za pomocą logiki do usuwania następny przycisk od strony produktu:

  1. Dodaj nowy atrybut (na przykład: hide_button, typu tak/nie) do produktów w katalogu> Atrybuty> zarządzanie atrybutami. Domyślnie będzie to "nie", więc wszystkie produkty mają przycisk. Administrator może ustawić atrybut "Tak" dla potrzebnych produktów.

  2. Tworzenie obserwatora, który będzie złapać catalog_product_load_after zdarzenie:

    public function checkProduct(Varien_Event_Observer $observer){ 
        Mage::register('hide_button', $observer->getEvent()->getProduct()->getData('hide_button')); 
    
        return $this; 
    } 
    
  3. Utwórz obserwatora, który będzie złapać controller_action_layout_generate_blocks_after zdarzenia i wprowadzić swój kod js do wszystkich tematów:

    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. utworzyć plik js/hide -button.js, który usunie przyciski z klasą 'btn-cart' ze strony:

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

Nie przetestowałem kodu, to tylko pomysł.

+0

Przycisk należy usunąć, jeśli produkt nie nadaje się do sprzedaży w kraju klienta, gdy administrator tworzy/edytuje produkt, może wybrać kraje dozwolone lub nie, więc myślę, że atrybut tak/nie nie jest dostępny . – Razorphyn

+0

Możesz ustawić atrybut jako tekst, a następnie administrator może ustawić takie kody krajów jak: EN, DE, CH itp. (Oddzielone przecinkami). Następnie, w drugim kroku, możesz złapać kod kraju klienta, sprawdź, czy ten kod jest obecny w atrybucie i ustaw wynik w Mage :: registry ("hide_button"), aby ukrył przycisk kodów krajów. Możesz również uzyskać kraj z adresu klienta, jeśli się zalogował. – ToxaBes

+0

Mmmhhhhh Nie jestem pewien, myabe Brakuje mi kroku ... byłoby to przydatne, gdybym mógł dodać klasę do niesprzedawalnych produktów, a następnie wybrać je z js, inaczej nie mogę rozróżnić między dostępnym a nie, także nie jestem pewien, że przycisk ma klasę 'btn-cart' – Razorphyn