Mam nową pracę, w której teraz codziennie ściśle pracuję nad Magento. Nie mam wcześniejszego doświadczenia z Magento, więc powiedzenie co najmniej było wyzwaniem!
Pozwól, że wyjaśnię krótko rozszerzenie, które budujemy.
Pozwoli nam pokazać okno Popup / Modal. Treść HTML Modala będzie przechowywana w
plikuStatic Block
STRONA ADMINISTRACYJNA
Dlatego panel administracyjny składa się z nowej karty w obszarze System/Confuration/
NOWA TAB
Panel administracyjny umożliwia wybranie z rozwijanej listy na tej NOWEJ STRONIE TAB domyślnych ustawień Static Block
dla tych sekcji ...
HOME PAGE
lub HOME PAGE w/Items in Shopping Cart
ALL CATEGORY PAGES
lub ALL CATEGORY PAGES w/Items in Shopping Cart
ALL PRODUCTS PAGES
lub ALL PRODUCTS PAGES w/Items in Shopping Cart
ALL CMS PAGES
lub ALL CMS PAGES w/Items in Shopping Cart
SHOPPING CART PAGE
lub SHOPPING CART PAGE w/Items in Shopping Cart
DOMYŚLNE NADMIERNE JAZDY
Następnie rzeczywiste strony CMS , CATEGORY i PRODUCT zezwalają na te same ustawienia, które ma strona panelu administracyjnego, z wyjątkiem tego, że pozwalają na ustawienie STATIC BLOCK
poszczególnych elementów i zastąpienie domyślnego ustawienia, które mieliśmy w ustawieniach administratora powyżej .
Do tej pory wykonaliśmy stronę administratora rozszerzenia. Mamy wszystkie karty administracyjne dla każdej sekcji ... produktu, kategorii, CMS i strony konfiguracji.
Następnym krokiem będzie dodanie tego samego rozszerzenia i Static Block
wstawienie na stronie. To Static Block
będzie odpowiedzialna za ... Pokazano poprawna Static Block
na każdej stronie na podstawie ustawień, które zostały ustawione w wyżej wymienionych obszarach .....
- Określanie strony, na której jesteśmy, i typu strony (cms, produkt, strona główna, kategoria)
- Będzie wtedy musiał przeczytać wszystkie ustawienia niestandardowe, które zostały ustawione w wyżej wymienionych obszarach.
- Jeśli zostanie ustalone, że jesteśmy na
Category
stronie, będziemy musieli uzyskać konkretną konkretną kategorię, w której się znajdujemy. Na przykładCategory 3
. Zobaczymy wtedy, czy istnieje określone ustawienie dla tej konkretnej kategorii. JeśliEnabled
wyświetli się informacja, sprawdzimy, któraStatic Block
pozycja jest zapisana dla tej kategorii i pokażemy ją w naszej głównejStatic Block
na stronie! - Jeśli powyższa kategoria specyficzna jest ustawiona jak
Disabled
dla naszej,Modal Window
wówczas spojrzymy wyżej w bardziej globalnych ustawieniach Modala i zobaczymy, czy Modal jest włączony dla wszystkich kategorii. Jeśli tak, zobaczymy, któryStatic Block
zestaw zostanie wyświetlony we wszystkich kategoriach. - Oprócz tego wszystko wykona ten proces dla każdego z głównych typów stron (produkt, kategorie, cms, strona główna, koszyk)
- Będziemy również musieli sprawdzić, czy koszyk jest pusty, czy nie. JEŻELI nie jest pusty ... wtedy będziemy musieli wziąć to pod uwagę powyżej, gdy wqe sprawdzają, które
Static Block
mają być wyświetlane dla tej strony, ponieważ każde ustawienie pozwalaStatic Block
ustawić dla pustego koszyka i 1 dla pustego koszyka! (Wiem, że jest to ogromne trudne i duże przedsięwzięcie, ale wykonujemy głównie stronę administracyjną. Wystarczy wykonać część, która bierze pod uwagę wszystkie te czynniki przy określaniu, któreStatic Block
z nich pokazać na konkretnej stronie.
Aby skierować mnie w dobrym kierunku, mam kilka mniejszych pytań ...
- Jak mogę wewnątrz mojego
Static Block
kodu (część PHP) określić, jakiego rodzaju STRONĘ używam. Jak wspomniałem muszę wiedzieć, czy jestem na .... STRONA , o CMS STRONY , A strony kategorii , o stronie produktu lub ZAKUPY PAGE CART ? - Oprócz TYPU STRONY muszę uzyskać aktualną stronę. Więc jeśli mam numer identyfikacyjny produktu 1234 , muszę mieć możliwość ustawienia (blok statyczny ustawiony dla tej strony) dla tej konkretnej strony.
Wiem, że był to długi i być może mylący post. Jeśli dotarłeś tak daleko, dziękuję za poświęcenie czasu na przeczytanie tego =)
Jeśli możesz mi pomóc z moim pytaniem, każdy mały fragment przybliża mnie do celu końcowego
Poniżej znajduje się schemat przepływu, który stworzyłem, jak mój moduł będzie musiał działać, aby określić, który blok statyczny należy wstawić na stronę
źródło
Mage_Widget
module, prawda?Mage_Widget
? Muszę też na to spojrzećOdpowiedzi:
Oprócz odpowiedzi na @benmarks :
Oto mały kod, aby sprawdzić niektóre z wymienionych warunków:
Aby sprawdzić, czy wózek jest pusty, czy nie należy go używać
Zapytałeś również, czy możesz sprawdzić bieżącą stronę w bloku CMS.
Prawdopodobnie nie jest to dobre podejście (musiałbyś dołączyć niestandardowe bloki, które nie spełniłyby celu użycia bloków CMS na pierwszej stronie).
Zamiast tego lepiej najpierw sprawdzić bieżącą stronę, a następnie wybrać blok CMS do wyświetlenia na tej podstawie.
EDYCJA : naprawiono
Mage::app()->getRequest()->getFullActionName()
tak,Mage::app()->getFrontController()->getAction()->getFullActionName()
jak wspomniano w @Joseph w komentarzach. Dzięki!źródło
Mage::app()->getRequest()->getFullActionName()
szablonu koszyka powoduje błąd krytyczny, a przynajmniej dla mnie w wersji 1.7.0.2.$this->getAction()->getFullActionName()
działało idealnie!Wiele podejść, które możesz zastosować. Polecam dodanie twojego bloku za pomocą
<default>
uchwytu aktualizacji układu, dzięki czemu byłby dostępny na wszystkich stronach. W_prepareLayout()
metodzie bloku możesz określić zasięg, pobierając bieżącą pełną nazwę akcji z obiektu żądania ($this->getRequest()->getFullActionName()
) i używając go do określenia kontekstu.Produkty i kategorie zostaną zarejestrowane w rejestrze. Twój blok może również patrzeć na uchwyty aktualizacji układu, które będą zawierać uchwyty identyfikatora produktu lub identyfikatora kategorii.
źródło
Aby wykryć stronę główną, musisz użyć ciągu identyfikatora (np. „Strona główna”) w celu dopasowania do wartości konfiguracji, a nie identyfikatora numerycznego:
Oto kilka innych:
Dzięki za pomocne informacje dla wszystkich!
źródło