Skocz do zawartości

Rekomendowane odpowiedzi

Witam

 

chciałem rozszerzyć dodawanie kategorii (pisząc moduł) o jedno pole typu "switch", zapisane wartości do bazy to 1 albo 0;

moje pytania:

1. Czy mogę utworzyć nową tabelę w bazie danych gdzie będę miał id, id_category, value, czy muszę bezwarunkowo zapisywać dodatkowe wartości do tabeli ps_category ?

2. Jeżeli mogę to zrobić za pomocą innej tabeli, w jaki sposób mam zapisać te wartości wykorzystując nadpisywanie kontrolera ?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Witam

 

chciałem rozszerzyć dodawanie kategorii (pisząc moduł) o jedno pole typu "switch", zapisane wartości do bazy to 1 albo 0;

moje pytania:

1. Czy mogę utworzyć nową tabelę w bazie danych gdzie będę miał id, id_category, value, czy muszę bezwarunkowo zapisywać dodatkowe wartości do tabeli ps_category ?

2. Jeżeli mogę to zrobić za pomocą innej tabeli, w jaki sposób mam zapisać te wartości wykorzystując nadpisywanie kontrolera ?

 

1 - możesz i tak i tak jeżeli to tylko jedna wartość 1/0 łatwiej będzie dodać to do ps_category (chociaż to już tylko od Ciebie zależy co tam budujesz).

2 - Pobrać wartość z pola

$switch = Tools::getValue( 'switch' )

i wyslac gdzie chcesz

$result = Db::getInstance()->insert( 'category', array('jakasnazwa'          => pSQL( $switch ),
) );

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Założenie jest trywialnie proste - jeżeli wartość przy danej kategorii jest 1 - wyswietl lewą kolumną jeżeli 0 - nie wyświetlaj

 

raczej chyba będę dłubał w kierunku nowej tabeli, nie wiem jak się będzie zachowywać przy aktualizacji sklepu

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

zdecydowałem utworzyć nową tabelę, z 3 kolumnami, id, id kategorii, wartość(1 lub 0);

nadpisałem kontroler do kategorii dodając dodatkowe pole;

dodałem moduł do actionCategoryAdd actionCategoryUpdate oraz actionCategoryDelete - zapisanie danych do nowej tabeli następuje bez kłopotów;

pytanie: jak pobrać wartość z nowej tabeli i gdzie zapisać kawałek kodu aby wyświetlić ustawienie przycisku w odpowiedniej pozycji - jeżeli 1 to przycisk włączony, jeżeli 0 - wyłączony

 

cat.jpg

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

To chyba najlepiej w konstruktorze klasy, zobacz jak np. w product.php ładuje różne informacje z innych tabel:

$this->tax_rate = $this->getTaxesRate(new Address($address));

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dzięki za odpowiedź ircykk, zrezygnowałem jednak z nadpisywania kontrolera, zrobiłem wszystko co potrzebowałem wykorzystując odpowiednie hook'i

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się

Komentowanie zawartości tej strony możliwe jest po zalogowaniu



Zaloguj się



  • Podobna zawartość

    • Przez mua
      Cześć,
      staram się konfigurować nowy sklep na presta 1.7. Nie mogę nigdzie znaleźć opcji z menu bocznym jako kategorii i menu górnym jako odnośnik np do cms'a.

      Ktoś może pomóc, bo wertowałem na 10 stronę i nic 
    • Przez dwojod
      Aby nadpisać szablon - np form.tpl - po stronie administracyjnej w module należy utworzyć plik form.tpl w takiej lokalizacji:
       
      \modulename\views\templates\admin\controllername\helpers\form\form.tpl
       
      w miejscu nazwy kontrolera podajemy jego nazwę ale musimy użyć znaku podkreślenia _ np. jeżeli mamy AbcProduct jako nazwę kontrolera, to nazwa naszego katalogu będzie brzmiała następująco abc_product 
       
      Jeżeli chcemy sprawdzić jak nazywa się nasz kontroler możemy użyć narzędzia jakie daje nam PrestaShop: Tools::toUnderscoreCase(substr($this->controller_name, 5));
       
      testowane tylko na 1.6
    • Przez dwojod
      jak mam usunąć inne rekordy w innej tabeli bazy danych podczas akcji submitBulkdelete - warunek kiedy akcja jest uruchamiana mam raczej poprawny bo np wysłanie roboczo maila działa, ale próba uruchomienia jakiejś metody nie działa...
      if(Tools::isSubmit('submitBulkdelete'.$this->table) || Tools::isSubmit('delete'.$this->table)) { mail('mail@gmail.com', 'Temat wiadomości', $message); } LUB if ($this->action == 'delete' || $this->action == 'bulkdelete') { mail('mail@gmail.com', 'Temat wiadomości', $message); } metodę do usuwania dodatkowych rekordów z bazy tworze następująco:
      -zapisuję pod zmienną instancję klasy podając parametr id $categorygallery = new CategoryGalleryModel((int)Tools::getValue('id_categorygallery'));
      -wywołuję metodę do usuwania $categorygallery->deleteObj();
       
       
      w momencie usuwania pojedynczych rekordów ta dodatkowa metoda deleteObj działa
    • Przez ircykk
      Żeby nie myło tu tak pusto dodam pierwszy prosty poradnik opisujący modyfikację sklepu pozwalającą przekierować klienta z kategorii zawierającej tylko jeden produkt bezpośrednio na stronę tego produktu.
       
      Na samym początku BACKUP!
       
      Tworzymy plik php o nazwie: CategoryController.php
      <?php class CategoryController extends CategoryControllerCore { public function initContent() { parent::initContent(); if(isset($this->cat_products) && count($this->cat_products) == 1) { header('HTTP/1.1 302 Moved Temporarily'); header('Cache-Control: no-cache'); header('Location: '.$this->context->link->getProductLink((int)$this->cat_products[0]['id_product'])); exit; } } } Plik umieszczamy w katalogu /override/controllers/front/ i czyścimy cache klas czyli usuwamy plik /cache/class_index.php. Po tej czynności modyfikacja powinna już działać. Jeśli w podanym katalogu istnieje już taki plik musimy je scalić, czyli skopiować tylko funkcję initContent() do pliku, jeśli i sama funkcja o takiej nazwie już tam jest to nie ma rady i trzeba wezwać fachowca na pomoc lub zapytać na naszym forum
       
      W załączniku gotowy plik.
      CategoryController.php
    • Przez Czarekplpl
      Witam.
      Nie mogę otworzyć zamówień.
      Pojawia mi się błąd:
      Fatal error: Call to a member function getTemplates() on a non-object in /var/www/html/kopia/override/controllers/admin/AdminOrdersController.php on line 137 Jak wyłącze Override to jest OK. 
      Jak to naprawić??
  • 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
      7 776
    • Postów
      37 066
×