Skocz do zawartości
PrestaBegginer

Przeniesienie modułu - Problem

Rekomendowane odpowiedzi

Witam,

 

Mam problem z przeniesieniem darmowego modułu "crossselling". Defaultowo wyświetla się od pod każdym produktem, chciałbym zrobić tak, aby wyświetlał się również w zakładce koszyka ("zamowienie"), pod podsumowaniem zakupów.

 

W tym celu stworzyłem nowego hooka i umieszczam go w odpowiednim miejscu w pliku shopping-cart.tpl :

<div id="crosssellinghook">{hook h='crosssellinghook'}</div>

Następnie w pliku crossselling.php do funkcji install() dodałem 

$this->registerHook('shoppingCart') ||

ostatecznie wygląda ona w ten sposób:

 

 public function install()
    {
        if (!parent::install() ||
            !$this->registerHook('productFooter') ||
            !$this->registerHook('header') ||
!$this->registerHook('crosssellinghook') ||
            !$this->registerHook('shoppingCart') ||
            !$this->registerHook('actionOrderStatusPostUpdate') ||
            !Configuration::updateValue('CROSSSELLING_DISPLAY_PRICE', 0) ||
            !Configuration::updateValue('CROSSSELLING_NBR', 10)
        ) {
            return false;
        }
        $this->_clearCache('crossselling.tpl');


        return true;
    }

Kolejnym krokiem było dodanie na samym dole tego samego pliku funkcji:

 

public function crosssellinghook($params) 
{ 
 return $this->display(__FILE__, 'crossselling.tpl') ;
}

Hook się pojawił, wraz z zaczepionym modułem, aczkolwiek nie wyświetla się we wskazanym miejscu. Co może być tego powodem? 

 

Próbowałem również zwracać np 

return "hahaha"; 

co również nie dawało żadnego efektu, czy coś pominąłem? Ktoś coś? :)

 

Presta 1.6.1.4

 

 

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

robilem cos podobnego dla produtow powiazanych (OPIS I DEMO TUTAJ), ale troche czasu minelo zebym pamietal wszystkie szczegoly. w kazdym razie na pewno w samym module koszyka trzeba zdefiniowac zmienne produktow do wyswietlenia (poprzez override), bo w tym "rejonie" modul koszyka musial odczytac z produktow zakupionych te z nimi powiazane.... tez dla samego koszyka trzeba bylo utworzyc w module blockcart osobny szablon slidera produktow powiazanych oraz polaczyc go z json koszyka, zeby w momencie usuniecia z koszyka danego produkto jego powiazane tez zostaly usuniete. niby nie jest to skomplikowane ale troche kombinacji wymagalo

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Raczej tak:

public function hookCrosssellinghook($params) 

to to jedno, a drugie to to, ze nie ma mozliwosci zeby to zadzialao, bo co niby wyswietli w tymm hook ten zaimplementowaany szabon modulu? nie ma zadnych zmiennych.... czyli juz skazanie na wywalenie dziesiatkow bledow przez DEV_MODE ;)

 

inna sprawa, przegladnalem z ciekawosci ten konkretny modul i ten ma juz przypisany hook koszyka... hookshoppingCart, po cholere kombinowac? ma juz wybierane trsci do wysweitlenia, skierowane konretne zmienne do szablonu.... 

 

i nawet we wspomnianym pliku (w skorce default) jest umieszczony i dziala (do sprawdzenia na mojej stronie DEMO TUTAJ jako 'we recommended' np. po dodaniu do koszyka czarnej 'Blouse') :

 

<div id="HOOK_SHOPPING_CART">{$HOOK_SHOPPING_CART}</div>

pytanie tylko do @PrestaBegginer:

1. w konfiguracji modulu masz ustawiona ilsoc do wysweitlania?

2. w dodawanych produktach do koszyka na pewno masz produkty z grupy "klienci zakupili rowniez..." ?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dzięki za odpowiedzi. :)

 

Zmieniłem nazwę funkcji tak jak pisał @ircykk , niestety nic się nie wyświetla(nawet ciąg znaków).

 

@design4VIP

HOOK_SHOPPING_CART umieszczony jest tam od samego początku, i też się nie wyświetla, może jest to wina tego, że nie korzystam z defaultowej skórki? Końcówka mojego pliku:

<div id="HOOK_SHOPPING_CART">{$HOOK_SHOPPING_CART}</div>
<p class="cart_navigation clearfix">
{if !$opc}
<a  href="{if $back}{$link->getPageLink('order', true, NULL, 'step=1&back={$back}')|escape:'html':'UTF-8'}{else}{$link->getPageLink('order', true, NULL, 'step=1')|escape:'html':'UTF-8'}{/if}" class="pull-right btn btn-default standard-checkout" title="{l s='Proceed to checkout'}">
{l s='Proceed to checkout'}
</a>
{/if}
<a href="{if (isset($smarty.server.HTTP_REFERER) && ($smarty.server.HTTP_REFERER == $link->getPageLink('order', true) || $smarty.server.HTTP_REFERER == $link->getPageLink('order-opc', true) || strstr($smarty.server.HTTP_REFERER, 'step='))) || !isset($smarty.server.HTTP_REFERER)}{$link->getPageLink('index')}{else}{$smarty.server.HTTP_REFERER|escape:'html':'UTF-8'|secureReferrer}{/if}" class="pull-left btn btn-default" title="{l s='Continue shopping'}">
{l s='Continue shopping'}
</a>
</p>
<div class="clear"></div>
<div class="cart_navigation_extra">
<div id="HOOK_SHOPPING_CART_EXTRA">{if isset($HOOK_SHOPPING_CART_EXTRA)}{$HOOK_SHOPPING_CART_EXTRA}{/if}</div>
</div>

{strip}
{addJsDef deliveryAddress=$cart->id_address_delivery|intval}
{addJsDefL name=txtProduct}{l s='product' js=1}{/addJsDefL}
{addJsDefL name=txtProducts}{l s='products' js=1}{/addJsDefL}
{/strip}
{/if}

<div id="crosssellinghook">{hook h='crosssellinghook'}</div>

1. W konfiguracji modułu mam ustawioną liczbę 10 elementów do wyświetlania.

2. Tak, jest.

 

Link do sklepu(może wizualizacja pomoże ;)):

SKLEP

Powiązany produkt znajduje się np. w produkcie "Solar 2017". 

 

Pozdrawiam :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

tak czytam i czytam i nie bardzo rozumiem

standardowy moduł crossselling  domyślnie wyświetla produkty na hooku hookshoppingCart , który jest zaimplementowany w większości templetek.

 

Więc skoro są powiązane w zamówieniach produkty do dodanego do koszyka produktu to one się wyświetlą - of kors jeżeli moduł jest zainstalowany i działa poprawnie

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

a jeszcze zacznijmy od tego, skad wiesz, ze akurat ten produkt ma "crossseling" ? jakie np. produkty powinny byc w nim zawarte? bo juz na karcie produktu powinna byc grupa (slider) tych produktow. zobacz na moim DEMO na samym dole juz masz, u ciebie pustka... 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Faktycznie... pomyliłem ten moduł z modułem "powiązane produkty"... mhm... :oops:  W takim razie moje pytanie na teraz to, czy mam możliwość manualnego dodania produktów do " Klienci, którzy zakupili ten produkt kupili również", jeśli tak to jak ;)

 

 

 

Dzięki Panowie! ;)

 

edit:

 

Z cyklu ciekawostki:

Hook który wcześniej zrobiłem też zaczął się wyświetlać :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Faktycznie... pomyliłem ten moduł z modułem "powiązane produkty"... mhm... :oops:  W takim razie moje pytanie na teraz to, czy mam możliwość manualnego dodania produktów do " Klienci, którzy zakupili ten produkt kupili również", jeśli tak to jak ;)

 

z powiazanymmi nie jest tak hop. tak jak pisalem w pierwszym poscie (bo tak sie domyslalem, ze o to chodzi. czesto te bloki sa mylone) to tutaj juz trzeba by troche kombinacji w modulach i kontrolerach, a crosseling to juz sam naglowek bloku (modulu) mowi jak wysweitlic te przedmioty.... ktos musi zrobic zakupy z wiecej niz jednym przedmiotem w koszyku. modul odczytuje te produkty z tabeli FROM '._DB_PREFIX_.'order_detail', czyli ze szczegolow zamowienia. 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

z powiazanymmi nie jest tak hop. tak jak pisalem w pierwszym poscie (bo tak sie domyslalem, ze o to chodzi. czesto te bloki sa mylone) to tutaj juz trzeba by troche kombinacji w modulach i kontrolerach, a crosseling to juz sam naglowek bloku (modulu) mowi jak wysweitlic te przedmioty.... ktos musi zrobic zakupy z wiecej niz jednym przedmiotem w koszyku. modul odczytuje te produkty z tabeli FROM '._DB_PREFIX_.'order_detail', czyli ze szczegolow zamowienia. 

 

Coś nie mogę znaleźć tej tabeli, albo jej nie mam :P

 

Korzystam z takiego zapytania i pokrewnych(różne nazwy tabeli):

SELECT * FROM `._DB_PREFIX_.order_product` GROUP BY `order_id`

Table 'pearlbrand_4.._DB_PREFIX_.order_product' doesn't exist

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Odnalezione. Dało by radę wskazać modułowi w DB, które produkty ma połączyć ze sobą przez crosselling?  Mam na myśli żeby  w kolumnie odpowiedzialnej za pobieranie do crosselingu zaznaczyć zero-jedynkowo, czy produkt ma być pobierany, czy nie. Następnie ustawić takie samo ID_produktów, które mają być pobierane żeby połączyć je w 1 crosselling? Trochę już fantazjuje :P

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

fantazja to jedno, ale to co napisalem powyzej to dopiero jest fantazyjne.... ze cyli co z czym ma sie polaczyc? co za zero-jedynkowo? czyli, ze o co chodzi? mozecos prosciej bez fantazji? no i drugie pytanie, bo znowu sie zgubilem. o jakie polaczenia dkladnie chodzi? o crosseling (klienci kupili rowniez) czy akcesoria (produkty powiazane) ? 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Crosselling przypisuje produkty do siebie tylko w momencie kiedy klient zakupi więcej niż 1 produkt. (Odbywa się to poniekąd automatycznie)

Ja chciałbym robić to manualnie, czyli wybrać sobie dowolny produkt A i  dowolny produkt B i je scrossować. 

 

@endriu107

Tak jak piszesz działa crosselling, ale chodzi o to żeby móc ustawiać co z czym ręcznie.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



  • Przeglądający

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

  • Aktywni użytkownicy

    Nikt jeszcze nie otrzymał reputacji w tym tygodniu.

  • Statystyki forum

    • Tematów
      7493
    • Postów
      36212
×