dodatkowa funkcja w liscie produktow admina

xGZx

Avatar: xGZx

2010-04-22 17:51

Witam, siedze nad tym juz troche i nie wiem...
Chciałbym moc zmieniac z poziomu listy produktów w adminie np. strony do których przypożądkowany jest dany produkt i inne... ale jesli ktos mi poda sposob na to bede bardzo wdzieczny... Wiem jak wyświetlic te strony w liscie... ale po zmianie nic sie nie zapisuje... kombinowalem juz na różne sposoby i nie wiem.
Prosze o pomoc, pozdrawiam.

» Quick.Cart v3.x

Makaron

Avatar: Makaron

2010-04-23 17:08

To niestety nie takie łatwe, bo będzie to połączenie dwóch baz danych. Wątpię, żeby na forum ktoś podał Ci gotowe rozwiązanie jak to zrobić.

Mak-Web.pl - Modyfikacje skryptów Q.Cart i Q.Cms

xGZx

Avatar: xGZx

2010-04-24 12:14

No tak... faktycznie te dane sa zapisywane w innej bazie... ale może np ktos mi poda sposob jak zmienic opis produktu z pozycji listy produktow w menu admin? Tez wiem jak wyswietlic pole tekstowe z opisem krótkim.. ale gdy chce zapisac nic sie nie zmiania...
Prosze o pomoc.

boboo

Avatar: boboo

2010-04-24 14:00

To akurat (opis krótki) powinno być proste.
;-)
Rzut okiem na:
actions_admin/products.php
mówi nam, że guzik "zapisz" na liście produktów uruchamia funkcję "saveProducts()",
a guzik "zapisz" na stronie pojedynczego produktu uruchamia "saveProduct()".
(czyli jedna ma "s" na końcu, i to ona nas interesuje).
Obie mają ten sam parametr ($_POST), czyli biorą wszystkie "inputy" z danego formularza.
Na początku napisałem, że powinno być proste, bo "sDescriptionShort" jest w tej samej "tabeli", co inne dane wyświetlane na liście produktów (status, lp, nazwa, cena,...).

Aby wyświetlić krótki_opis w tabeli na liście produktów musiałe(a)ś dodać trochę w: templates/admin/products.tpl
w tabeli listy produktów.
Jakiś "input" typu text lub "textarea". Trzeba jeszcze go odpowiednio nazwać.
np.: name="aShortOpis[$aData[iProduct]]"
(to w kwadratowych nawiasach ważne!!!)

Przejdźmy teraz do funkcji "saveProducts()" w:
core/products-admin.php

Co tam widzimy? Oprócz formatowania i trymowania, reakcje na zmiany w polach formularza!
I jeśli porównasz pole z formularza (aShortOpis[$aData[iProduct]]) z zawartością wpisu w bazie (sDescriptionShort), czyli:
if( $aForm['aShortOpis'][$iProduct] != $aData['sDescriptionShort'] ) {
[jeśli "shortopis" nie jest równy "descriptionshort" to:]
$aChange[$iProduct]['sDescriptionShort'] = $aForm['aShortOpis'][$iProduct]; }
[przydziel polu sDescriptionShort z bazie wartość odczytaną z formularza z pola ShortOpis.]

U mnie działa (QC 3.4) na zwykłych "inputach textowych" bez problemu (a dołożyłem sobie różne "kwiatki" do tabeli w liście produktów). Faktem jest, że z textarea i sDescritionShort nie próbowałem, tylko z dostępnością, wagą, kalibrami.

Całość wygląda tak:

if( $aForm['aShortOpis'][$iProduct] != $aData['sDescriptionShort'] ) {
$aChange[$iProduct]['sDescriptionShort'] = $aForm['aShortOpis'][$iProduct];
}

I trzeba ją wstawić w tę "drabinę" zapytań "if" w funkcji "saveProducts($aForm)" tak, aby nie zmienić struktury tej drabiny.

Pochwal się, jeśli zadziała ;-)

boboo - skupienie.kimla.de

xGZx

Avatar: xGZx

2010-04-26 14:01

:) Dzieki boboo, w prawdzie robilem podobnie wszystko ale to co napisales utwierdzilo mnie w przekonaniu ze dobrze robie i zmusilo mnie do ponownego przeanalizowania kodu i znalazlem literówke w funkcji saveProductsData z core/products-admin.php. Teraz juz wszystko dziala... dopisalem wiele nowych funkcji które można zmienic z pozycji listy produktów i w koncu dodawanie produktów zajmuje mniej czasu... Pozdrawiam.

Do góry
o nas | kontakt