Własny plugin -> nie działa
Strona 1 z 2 12 OstatniOstatni
Wyniki 1 do 10 z 14

Temat: Własny plugin -> nie działa

  1. #1
    Bywalec
    Dołączył
    28-01-2011
    Skąd
    Tomaszów Mazowieck, Kraków
    Wpisy
    116
    Punkty
    15

    Domyślny Własny plugin -> nie działa

    Witam.

    Napisałem jeden ze swoich pierwszych puginów. Zainstalował się poprawnie ale nie działą
    Kod PHP:
    <?php

    defined
    ('_JEXEC') or die;

    class 
    PlgUserKonto extends JPlugin
    {
        public function 
    onUserAfterSave($user$isnew$success$msg){
        if(
    $isnew){
            
    $punkty 13;
            
    $opis "350MB gratis na start";
            
    $date date("Y-n-j H:i:s");
            
    $query "INSERT INTO #__djcf_users_points p VALUES (null,'".$user['username']."','$punkty','$opis','$date')";
            
    mysql_query($query);
        }
      }
    }
    XML:
    Kod HTML:
    <?xml version="1.0" encoding="utf-8"?>
    <extension version="3.1" type="plugin" group="user">
        <name>plg_user_pktgratis</name>
        <author>Piotr Balicki</author>
        <creationDate>05.2014</creationDate>
        <copyright>(C) 2015. Piotr Balicki All rights reserved.</copyright>
        <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
        <authorEmail></authorEmail>
        <authorUrl></authorUrl>
        <version>3.0.0</version>
        <description>Przekazuje nowo zarejestrowanemu użytkownikowi punkty gratis</description>
        <files>
            <filename plugin="pktgratis">pktgratis.php</filename>
            <filename>index.html</filename>
        </files>
        <languages>
        </languages>
        <config>
            <fields name="params">
                <fieldset name="basic">
                </fieldset>
            </fields>
        </config>
    </extension>
    Plugin ma dopisać 12pkt w komponencie DJ-Classifieds (tabela: #__djcf_users_points). Czy ktoś widzi jakiś znaczący błąd w moich wypocinach?
    Projekt, który realizuje w Joomla: www.automarket.co.pl

  2. Pani Reklamowa
    Pani Reklamowa jest aktywna
    Avatar Panny Google

    Dołączył
    19-08-2010
    Skąd
    Internet
    Postów
    milion
    Pochwał
    setki
  3. #2
    Bywalec KES awatar
    Dołączył
    13-05-2011
    Wpisy
    408
    Punkty
    63

    Domyślny

    A po zainstalowaniu tego pluginu włączyłeś go?

    Poczytaj również o JFactory::getDbo();

  4. #3
    Bywalec
    Dołączył
    28-01-2011
    Skąd
    Tomaszów Mazowieck, Kraków
    Wpisy
    116
    Punkty
    15

    Domyślny

    Tak po zainstalowaniu pluginu włączyłem go. Poczytałem o JFactory::getDbo(); i teraz jak spojrze na ten kod to rozumiem, zę nie miałracji bytu. Poprawiłemgo, ale problem nadal istnieje. Mianowicie podczas logowania wyskakuje błąd 500. Poprawiony plik php. Czy ktoś widzi tym razem jakieś błedy?

    Kod PHP:
    defined('_JEXEC') or die;

    class 
    PlgUserKonto extends JPlugin
    {
        public function 
    onUserAfterSave($user$isnew$success$msg){
        if(
    $isnew){

            
    $db JFactory::getDbo();
            
    $query $db->getQuery(true);

            
    $data =new stdClass();
            
    $data->id null;
            
    $data->field1 'TestName';//$user['username']
            
    $data->field2 '13';
            
    $data->field3 'gratis na start';
            
    $data->field3 'date("Y-n-j H:i:s")';
            
            
    $db->insertObject'#__djcf_users_points'$dataid );
            
    $db->setQuery($query);
        }
      }

    Projekt, który realizuje w Joomla: www.automarket.co.pl

  5. #4
    Bywalec KES awatar
    Dołączył
    13-05-2011
    Wpisy
    408
    Punkty
    63

    Domyślny

    Włącz raportowanie błędów abyś widział jaki to błąd masz.
    Co do:
    Kod PHP:
     $data =new stdClass();
            
    $data->id null;
            
    $data->field1 'TestName';//$user['username']
            
    $data->field2 '13';
            
    $data->field3 'gratis na start';
            
    $data->field3 'date("Y-n-j H:i:s")'
    Nie musisz podawać `id` ponieważ Joomla wie że chcesz stworzyć nowy rekord.
    Co do field1..3 to czy takie columny są w tej tabeli '#__djcf_users_points'?

    Kod PHP:
    $db->insertObject'#__djcf_users_points'$dataid ); 
    Jeżeli kluczem głównym w tabeli jest id to to zamknij to w string 'id' bo tak to masz błąd.

  6. #5
    Bywalec
    Dołączył
    28-01-2011
    Skąd
    Tomaszów Mazowieck, Kraków
    Wpisy
    116
    Punkty
    15

    Domyślny

    Dokształciłem się już w tej materii i nadal nic. Błąd nadal się pojawia:
    "Jak chcę się zalogować do Joomla jako użytkownik, albo administrator to pojawia się biała strona z komunikatem w Firebug: "NetworkError: 500 Internal Server Error - http://www.pobieralnia24.com/index.php""

    Mod po modyfikacjach wygląda następująco:

    Kod PHP:
    <?php

    defined
    ('_JEXEC') or die;

    class 
    PlgUserGratis extends JPlugin
    {
        public function 
    onUserAfterSave($user$isnew$success$msg){
        if(
    $isnew){
            
    //Tworzenie połączenia z bazy danych
            
    $db JFactory::getDbo();
            
            
    //Tworzenie oraz wypełnienie obiektu
            
    $data =new stdClass();
            
    $data->id null;
            
    $data->user_id $user['id'];
            
    $data->points 13
            
    $data->description 'gratis na start';
            
    $data->date date("Y-n-j H:i:s");
            
            
    $result->JFactory::getDbo()->insertObject'#__djcf_users_points'$data);
        }
      }
    }
    KES może masz jeszcze jakieś wskazówki. Walcze walcze,ale jest opór.
    Projekt, który realizuje w Joomla: www.automarket.co.pl

  7. #6
    Bywalec KES awatar
    Dołączył
    13-05-2011
    Wpisy
    408
    Punkty
    63

    Domyślny

    Włącz raportowanie błędów PHP aby zamiast białej strony pojawiał Ci się błąd.

    Kod PHP:
    $data->id null
    To możesz wywalić jest zbędne.

    Kod PHP:
    $data->date date("Y-n-j H:i:s"); 
    Sprawdź też czy formatowanie daty wpisane tutaj jest poprawne z tym co baza oczekuje.

  8. #7
    Bywalec
    Dołączył
    28-01-2011
    Skąd
    Tomaszów Mazowieck, Kraków
    Wpisy
    116
    Punkty
    15

    Domyślny

    1. Usunąłem
    Kod PHP:
    $data->id null
    2. Format daty w tabeli to: 2014-03-29 15:26:53 więc
    Kod PHP:
    $data->date date("Y-n-j H:i:s"); 
    powinno być poprawnie
    3. Jeśli chodzi o włączenie raportowania błędów to za bardzo nie wiem jak je włączyć w PHP. Ja sprawdzam błędy na stronie dzięki Firebug. Strona tak samo zachowuje się w przeglądarce Firefox jak i Chrome. Taki mam błąd: >Błąd<
    Jak usunę ten mój magiczny plugin po przez Filezilla to logowanie z poziomu frontu jak i administratora działa. Czyli mój plugin musi coś kopać.
    NOTA: Plugin usuwam z poprzez Filezilla, ponieważ nie mogę się zalogować jak on (plugin) jest włączony i usunąć z poziomu zarządzania w Joomla.
    Projekt, który realizuje w Joomla: www.automarket.co.pl

  9. #8
    Wyga Jola awatar
    Dołączył
    08-01-2008
    Skąd
    Wrocław
    Wpisy
    3 239
    Punkty
    386

    Domyślny

    Zwróć uwagę na nazwę pliku i nazwę klasy -> wzoruj się na wbudowanych dodatkach: joomla -> PlgUserJoomla
    Co to jest:
    $result->JFactory::getDbo()->insertObject(...

    Kod PHP:
    $db JFactory::getDbo();
    $db->setQuery('INSERT INTO .......');
    $db->execute(); 

  10. #9
    Bywalec
    Dołączył
    28-01-2011
    Skąd
    Tomaszów Mazowieck, Kraków
    Wpisy
    116
    Punkty
    15

    Domyślny

    Dzięki Jola za reakcję na mojego prv. Jak widzisz męczy mnie ten problem już kilka dni, a przecież to nie jest moduł odsługujący start wachadłowca.
    Więc tak.

    1. Jeśli chodzi o nazwy:
    Folder: pktgratis
    W nim trzy pliki: index.html, pktgratis.php, pktgratis.xml
    Plik XML:
    Kod HTML:
    <?xml version="1.0" encoding="utf-8"?>
    <extension version="3.1" type="plugin" group="user">
        <name>plg_user_pktgratis</name>
        <author>Piotr Balicki</author>
        <creationDate>December 2014</creationDate>
        <copyright>(C) 2015. Piotr Balicki All rights reserved.</copyright>
        <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
        <authorEmail></authorEmail>
        <authorUrl></authorUrl>
        <version>3.0.0</version>
        <description>Przekazuje nowo zarejestrowanemu uzytkownikowi punkty gratis</description>
        <files>
            <filename plugin="pktgratis">pktgratis.php</filename>
            <filename>index.html</filename>
        </files>
        <languages>
        </languages>
        <config>
            <fields name="params">
                <fieldset name="basic">
                </fieldset>
            </fields>
        </config>
    </extension>
    Plik PHP:
    Kod PHP:
    <?php
    defined
    ('_JEXEC') or die;

    class 
    PlgUserPktgratis extends JPlugin
    {
        public function 
    onUserAfterSave($user$isnew$success$msg)
        {
            if(
    $isnew)
            {
                
    //Tworzenie połączenia z bazy danych
                
    $db JFactory::getDbo();
                
                
    //Tworzenie oraz wypełnienie obiektu
                
    $data =new stdClass();
                
    $data->user_id $user['id'];
                
    $data->points 13
                
    $data->description 'gratis na start';
                
    $data->date date("Y-n-j H:i:s");
                
                
    $result->JFactory::getDbo()->insertObject'#__djcf_users_points'$data);
            }
        }
    }
    ?>
    Plik PHP to pktgratis.php w nazwa plasy to PlgUserPktgratis. Jak widać jest taki sam jak tylko klasa posiada przedrostek: PlgUser.

    2. Składnia zapisu do bazy

    Wzorowałem się na dokumentacji Joomla:http://wiki.joomla.pl/Dost%C4%99p_do...niem_JDatabase
    Takiej składni użyto w Wstawianie rekordu -> Używając obiektu
    Kod PHP:
    // tworzenie i wypełnianie obiektu
    $profile = new stdClass();
    $profile->user_id 1001;
    $profile->profile_key='custom.message';
    $profile->profile_value='Wstawianie rekordu przy użyciu insertObject()';
    $profile->ordering=1;
     
    // Wstawiaie obiektu do odpowiedniej tabeli
    $result JFactory::getDbo()->insertObject('#__user_profiles'$profile); 
    Projekt, który realizuje w Joomla: www.automarket.co.pl

  11. #10
    Bywalec KES awatar
    Dołączył
    13-05-2011
    Wpisy
    408
    Punkty
    63

    Domyślny

    Jola dobrze zauważyła, nie powinno być
    Kod PHP:
    $result->JFactory::getDbo()->insertObject'#__djcf_users_points'$data); 
    tylko
    Kod PHP:
    JFactory::getDbo()->insertObject'#__djcf_users_points'$data); 
    Co do włączenia wyśwetlania błędów PHP (to firefox ani chrome Ci nie pomoże).
    Możesz je włączyć w pliku konfiguracyjnym joomla lub/i na serwerze.
    Ale o tym poczytaj na forum bo już było wiele tematów na ten temat.

Strona 1 z 2 12 OstatniOstatni

Podobne tematy

  1. Moduł WŁASNY HTML nie wpisuje znacznika <span>
    przez m3mariusz na forum Rozszerzenia - problemy z obsługą, zarządzaniem
    Odpowiedzi: 0
    Ostatni post/autor: 05-03-2014, 21:55
  2. własny szablon i nie działające menu
    przez maniek30dg na forum Szablony, formatowanie wyglądu
    Odpowiedzi: 7
    Ostatni post/autor: 20-10-2013, 16:29
  3. Własny kod za każdym artykułem czyli plugin z własnym kodem
    przez Acase na forum Rozszerzenia - problemy z obsługą, zarządzaniem
    Odpowiedzi: 2
    Ostatni post/autor: 11-05-2012, 00:35
  4. Mój pierwszy własny szablon nie działa - dziwne napisy
    przez KetopioruN na forum Instalacja, aktualizacja, migracje
    Odpowiedzi: 4
    Ostatni post/autor: 14-02-2011, 18:37
  5. moduł własny kod HTML nie działa poprawnie
    przez Hiro PHP na forum Administracja - ogólne
    Odpowiedzi: 2
    Ostatni post/autor: 08-03-2010, 21:18

Reguły pisania

  • Nie możesz zakładać nowych tematów
  • Nie możesz dodawać wypowiedzi
  • Nie możesz dodawać załączników
  • Nie możesz poprawiać swoich postów
  •