Skocz do zawartości

Rekomendowane odpowiedzi

chce napisać moduł który m.in. będzie przesyłał zdjęcia do sklepu, pytanie:

czy lepiej implementować swoją bibliotekę do ładowania zdjęć, swoją mam na myśli jakąś darmową z sieci, czy korzystać z narzędzi jakie oferuje presta?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Cóż każda dodatkowa biblioteka spowalnia dzianie sklepu a presta ma ich już i tak za dużo. Wszystko zależy od tego gdzie ma działać moduł, jeśli robisz wszystko to skorzystaj z jednej biblioteki do wszystkich galerii (dowolnej ale jednej), jeśli sam moduł skorzystaj z tej dołączonej do PS.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Używam hook'a hookDisplayBackOfficeCategory do wyświetlenia formularza, formularz powstał za pomocą HelperForm, nie wiem jak obsłużyć cały formularz, jak ten plik przesłać, znajdę gdzieś jakieś info na ten temat?

 

Może lepiej zrobić nowy kontroler do wyświetlenia tego ?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Przez override dopisz sobie obsługę formularza np. do funkcji initProcess(); w kontrolerze kategorii. Jeśli to jest związane ściśle z kategorią to może być jak jest.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Postanowiłem jednak zrobić bardziej uniwersalną wersję. Tworzę nową zakładkę z listą galerii, która zawiera nazwę, ilość zdjęć i do jakiej kategorii w sklepie przypisana jest galeria.

Próbuję wyświetlić listę kategorii z polami checkbox, nie wiem tylko jak zrobić zwijanie/rozwijanie (takie jak np przy dodawaniu produktu).

 

kawałek kodu z metody renderForm() kontrolera obsługującego listę galerii

$context = Context::getContext();
$cats = Category::getCategories($context->language->id, true, false);
foreach($cats as $key => $cat)
{
    $categories[] = array('id_option' => $cat['id_category'], 'name' => $cat['name']);
}

array(
	'type' => 'checkbox',
	'label' => $this->l('Category list'),
	'name' => 'category_list',
	'multiple' => true,
	'values' => array(
		'query' => $categories,
		'id' => 'id_option',
		'name' => 'name',
		'expand' => array(                      
			'print_total' => count($categories),
			'default' => 'show',
			'show' => array('text' => $this->l('show'), 'icon' => 'plus-sign-alt'),
			'hide' => array('text' => $this->l('hide'), 'icon' => 'minus-sign-alt')
		  ),
	)
),

EDIT

ten kawałek kodu działa: 

array(
'type' => 'categories',
'label' => $this->l('Gallery category'),
'name' => 'id_obj',
'tree' => array(
'id'     => 'categories-tree',
'selected_categories'     => array(),
//'disabled_categories' => (!Tools::isSubmit('add'.$this->table) && !Tools::isSubmit('submitAdd'.$this->table)) ? array($this->_category->id) : null,
'root_category'     => $context->shop->getCategory(),
     'use_checkbox'     => true,
     'use_search'        => true
)
)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Uporałem się z jednym ale są kolejne problemy:

 

Jak zapisać w bazie dane z zaznaczonych kategorii? Wynikiem jest tablica - musze tworzyć nową metodę w tym kontrolerze do zapisu danych z formularza? 

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ę



  • Podobna zawartość

    • Przez bonek04pl
      Witam serdecznie.
      Zduplikowałem moduł odpowiedzialny za wybieranie przy zamówieniu czy klient chce paragon i fakturę. Chciałem go zduplikować jako osobny moduł aby dodać jeszcze opcję wyboru Wniosku NFZ. Co zrobiłem aby zduplikować moduł:
      - Dodałem "2" do nazwy folderu oraz wszystkich plików które znajdują się w katalogu modułu (nie wliczając katalogów).
      - Wyedytowałem odpowiednio wszystkie pliki zduplikowanego stylu np. główny plik php:

       
      <?php if (!defined('_PS_VERSION_')) exit; class twParagonFaktura2 extends Module { const _PARAGON_FAKTURA2_ = 'tw_paragonfaktura2'; public static $documentType2 = array(); public function __construct() { $this->name = 'twparagonfaktura2'; $this->tab = 'billing_invoicing'; // front_office_features'; // $this->version = '1.0'; $this->author = 'Tomek Witek'; $this->need_instance = 0; $this->bootstrap = true; parent::__construct(); self::$documentType = array('Yes' => $this->l('Yes'), 'No' => $this->l('No') ); $this->displayName = $this->l('Receipt or invoice?'); $this->description = $this->l('The module allows you to choose the type of document confirming the purchase of goods (receipt or invoice)'); $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_); } // ------------------------------------------------------------------------------------------------- __construct() public function addOverride($classname) { if ( version_compare(_PS_VERSION_, '1.6.1.0', '<') ) { return parent::addOverride($classname); } else { return true; } } // ------------------------------------------------------------------------------------------------- addOverride() public function install() { reset(self::$documentType); $sql = 'CREATE TABLE IF NOT EXISTS`'._DB_PREFIX_.self::_PARAGON_FAKTURA2_.'` ( `id_cart` int(11) NOT NULL, `document_type` ENUM(\''.implode("','", array_keys(self::$documentType) ).'\') NOT NULL DEFAULT \''.key(self::$documentType).'\', PRIMARY KEY(`id_cart`) ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=UTF8;'; return( parent::install() && $this->registerHook('displayShoppingCartFooter') && $this->registerHook('displayReceiptInvoiceExtra') && $this->registerHook('displayOrderDetail') && $this->registerHook('displayAdminOrder') && $this->registerHook('displayAdminOrderExtra') && $this->registerHook('actionGetExtraMailTemplateVars') && Configuration::updateValue('TW_PARAGON_FAKTURA2', key(self::$documentType)) && Db::getInstance()->execute($sql) ); } // ------------------------------------------------------------------------------------------------- install() public function removeOverride($classname) { if ( version_compare(_PS_VERSION_, '1.6.1.0', '<') ) { return parent::removeOverride($classname); } else { return true; } } // ------------------------------------------------------------------------------------------------- removeOverride() public function uninstall() { $sql = 'DROP TABLE IF EXISTS `'._DB_PREFIX_.self::_PARAGON_FAKTURA2_.'`;'; return( parent::uninstall() && $this->unregisterHook('displayShoppingCartFooter') && $this->unregisterHook('displayReceiptInvoiceExtra') && $this->unregisterHook('displayOrderDetail') && $this->unregisterHook('displayAdminOrder') && $this->unregisterHook('displayAdminOrderExtra') && $this->unregisterHook('actionGetExtraMailTemplateVars') && Configuration::deleteByName('TW_PARAGON_FAKTURA2') && Db::getInstance()->execute($sql) ); } // ------------------------------------------------------------------------------------------------- uninstall() public function getContent() { if (Tools::isSubmit('submitSaveConfiguration')) { Configuration::updateValue('TW_PARAGON_FAKTURA2', Tools::getValue('TW_PARAGON_FAKTURA2')); } return $this->renderConfigForm(); } // ------------------------------------------------------------------------------------------------- getContent() public function renderConfigForm() { $fields_form = array( 'form' => array( 'legend' => array( 'title' => $this->l('Configuration'), 'icon' => 'icon-cogs' ), 'input' => array( array( 'type' => 'select', 'label' => $this->l('Default document'), 'name' => 'TW_PARAGON_FAKTURA2', 'desc' => $this->l('Set the default document confirming the purchase of goods'), 'options' => array( 'query' => $this->getDocumentTypes(), 'id' => 'id_option', 'name' => 'name' ), ), ), 'submit' => array( 'title' => $this->l('Save'), ) ), ); $helper = new HelperForm(); $helper->show_toolbar = false; $helper->table = $this->name; $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); $helper->default_form_language = $lang->id; $helper->module = $this; $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; $helper->identifier = $this->identifier; $helper->submit_action = 'submitSaveConfiguration'; $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->tpl_vars = array( 'fields_value' => array( 'TW_PARAGON_FAKTURA2' => Tools::getValue('TW_PARAGON_FAKTURA2', Configuration::get('TW_PARAGON_FAKTURA2')), ), 'languages' => $this->context->controller->getLanguages(), 'id_language' => $this->context->language->id ); return $helper->generateForm(array($fields_form)); } // --------------------------------------------------------------------------------------------------------- _renderConfigForm() public function getDocumentTypes() { $options = array(); foreach( self::$documentType as $docType => $docName ) { $options[] = array( 'id_option' => $docType, 'name' => $docName ); } return $options; } // --------------------------------------------------------------------------------------------------------- getDocumentTypes() public function getCurrentDocumentType($id_cart) { $sql = 'SELECT `document_type` FROM `'._DB_PREFIX_.self::_PARAGON_FAKTURA2_.'` WHERE `id_cart`='.$id_cart.';'; $currentDocument = Db::getInstance()->getValue($sql); return ( array_key_exists($currentDocument, self::$documentType) ? $currentDocument : 'unknow' ); } // --------------------------------------------------------------------------------------------------------- getCurrentDocumentType() public function getCurrentDocumentName($currentDocument, $unknow = 'unknow' ) { return ( array_key_exists($currentDocument, self::$documentType) ? self::$documentType[$currentDocument] : $unknow ); } // --------------------------------------------------------------------------------------------------------- getCurrentDocumentName() public function _prepareHook() { $this->context->controller->addCSS(($this->_path).'views/css/twparagonfaktura2.css', 'all'); $this->context->controller->addJS(($this->_path).'views/js/twparagonfaktura2.js'); // --------------------------- dodaje rekord jezeli nie istnieje (z domyslnym typem dokumentu - klient nie wybral rodzaju dokumentu) // --------------------------- dla danego koszyka (id_cart) zostanie wykonane tylko JEDEN RAZ! $sql = 'INSERT IGNORE INTO `'._DB_PREFIX_.self::_PARAGON_FAKTURA2_.'` (`id_cart`, `document_type`) VALUES ('.$this->context->cart->id.', "'.Configuration::get('TW_PARAGON_FAKTURA2').'" )'; Db::getInstance()->execute($sql); // --------------------------- odczytuje biezacy typ dokumentu, typ dokumentu moze byc inny niz po dodaniu rekordu // --------------------------- np po ponownym wejscu do koszyka - klient wczesniej zmienil typ dokumentu, // --------------------------- zobacz paragonfaktuta2.js, ajax2.php $currentDocument = $this->getCurrentDocumentType($this->context->cart->id); $this->smarty->assign(array( 'documentType' => self::$documentType, 'currentDocument' => $currentDocument, 'id_cart' => $this->context->cart->id, )); } // --------------------------------------------------------------------------------------------------------- _prepareHook() public function hookdisplayReceiptInvoiceExtra($params) { $this->_prepareHook(); return $this->display(__FILE__, 'views/templates/hook/paragonfaktura2.tpl'); } // --------------------------------------------------------------------------------------------------------- hookdisplayReceiptInvoiceExtra() public function hookDisplayShoppingCartFooter($params){ $this->_prepareHook(); return $this->display(__FILE__, 'views/templates/hook/paragonfaktura2.tpl'); } // --------------------------------------------------------------------------------------------------------- hookDisplayShoppingCartFooter() public function hookDisplayOrderDetail($params) { $currentDocument = $this->getCurrentDocumentType($params['order']->id_cart); if ($currentDocument == 'unknow') return false; $this->smarty->assign(array( 'currentDocument' => $currentDocument, 'currentDocumentTranslate' => $this->getCurrentDocumentName($currentDocument), )); return $this->display(__FILE__, 'views/templates/hook/order_detail2.tpl'); } // --------------------------------------------------------------------------------------------------------- hookDisplayOrderDetail() public function _prepareAdminHook() { $currentDocument = $this->getCurrentDocumentType($this->context->cart->id); $this->smarty->assign(array( 'currentDocument' => $currentDocument, 'currentDocumentTranslate' => $this->getCurrentDocumentName($currentDocument), )); } // --------------------------------------------------------------------------------------------------------- _prepareAdminHook() public function hookDisplayAdminOrder($params) { $this->_prepareAdminHook(); return $this->display(__FILE__, 'views/templates/admin/admin_orders2.tpl'); } // ---------------------------------------------------------------------------------------------------------- hookDisplayAdminOrder() public function hookDisplayAdminOrderExtra($params) { $this->_prepareAdminHook(); return $this->display(__FILE__, 'views/templates/admin/admin_orders2.tpl'); } // ---------------------------------------------------------------------------------------------------------- hookDisplayAdminOrderExtra() public function hookActionGetExtraMailTemplateVars($params) { if ($params['template'] == 'order_conf' || $params['template'] == 'new_order') { $currentDocument = $this->getCurrentDocumentType($this->context->cart->id); $params['extra_template_vars']['{receipt_invoice}'] = $this->getCurrentDocumentName($currentDocument, ''); } } // ---------------------------------------------------------------------------------------------------------- hookActionGetExtraMailTemplateVars() } Wszytko na pierwszy rzut oka powinno działać jednak gdy wybieram przy zamówieniu 1 pole (Paragon czy Faktura) to pod zarówno 1 jak i 2 polem na raz wyświetlają się błędy o uaktualnieniu i błędzie co skutkuje tym że 2 pole nie zmienia się po zakończeniu zamówienia (pozostaje domyslne - takie jakie jest ustawione w opcjach modułu) W bazie danych SQL tak samo widnieje tylko opcja domyślna, nie zmieniona.
      Gdzie robię błąd ?
       

      twparagonfaktura2.zip
    • Przez Inexo
      Witam,
      Poszukuję rozwiązania dla presty 1.6
      Chodzi mi o to by wyciągnąć z presty dane statystyczne, które mówią:  który klient kupił określony produkt.
      Czyli np. wybieram produkt i pokazuje mi który klient go zakupił.
      Niestety nie dostrzegam (chyba że nie widzę) takiej opcji w standardowych statystykach presty.
      Czy istnieje taki moduł lub inne rozwiązanie, które dostarczy mi owych informacji?
      Za pomoc z góry dziękuję
    • Przez Valantir
      Witam,
      Napisałem ostatnio własny moduł do Prestashop w wersji 1.6.1.7, który służy do tworzenia karuzeli na podstronie stronie. Problem w tym, że od czasu do czasu gdy kliknie się w przycisk na liście "Konfiguruj", to użytkownik jest przenoszony na podstronę z logowaniem. Ponowne zalogowanie powoduje wejście do panelu administratora ale kliknięcie na przycisk "Konfiguruj" powoduje znów przejście na stronę z logowaniem. Problem dotyczy chyba tylko mojego modułu, bo inne jakoś potrafią współpracować. Bardzo proszę o jakieś wskazówki jak się za to zabrać...

      Pozdrawiam
    • Przez nikos
      Witam!
      Mam problem - nie mogę wyświetlić modułu wybór waluty. Moduł jest włączony w modułach.
      Jest też wstawiony w miejsce zaraz po wyborze języka Prestashop 1.7.1.2

      W jaki sposób mogę wyświetlić blok waluty?
       
      Zainstalowałem też moduł informacje o ciasteczkach darmowy ale też nie wyświetla się.
      Zmiana wyglądu w sklepie na standardowy nie pomaga. Wyczyszczenie cache też nie. Reset modułu też nic nie zmienia.
      Każda wskazówka będzie pomocna 
      Pozdrawiam
       
       




  • Przeglądający

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

  • Aktywni użytkownicy

  • Statystyki forum

    • Tematów
      7574
    • Postów
      36401
×