Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem ze zrozumieniem kodu źródłowego
Forum PHP.pl > Forum > Przedszkole
Impossible
Witam, otóż skorzystałem z darmowego szablonu prestashop w wersji 1.5.5.0, i chcę wprowadzić w nim pewne zmiany od strony programisty. Aby te zmiany wprowadzić, potrzebuje zrozumieć kod źródłowy, lecz mam problem z nie którymi linijkami kodu, chcę uprościć sobie pracę nad tym projektem, więc rozrysowuje sobie całę drzewko zdarzeń itp. więc zwracam się o pomoc do was.

Niezrozumiała dla mnie linijka w PHP:
  1. $isDhtml = (Configuration::get('BLOCK_CATEG_DHTML') == 1 ? true : false);


a w pliku tpl to wygląda tak:

  1. <ul class="tree {if $isDhtml}dhtml{/if}">


Z góry dziękuję za pomoc, oczywiście to pewnie nie skończy się na jednej niezrozumiałemj linijce kodu..
kosmos
Wiesz co oznacza taki zapis
  1. ::


lub taki zapis?

  1. ? true : false


questionmark.gif
Sephirus
Nie odpowiada się pytaniem na pytanie tongue.gif

Sprawdź co to jest operator warunkowy w PHP (i nie tylko) składający się właśnie z ? i :

Co do TPL to musisz poczytać o SMARTY - jest to najprostszy przykład użycia IF.
kosmos
Psieplasiam tongue.gif
chciałem wyczuć na czym kolega Impossible stoi smile.gif

:: wywołujemy tu metodę get bez tworzenia instancji obiektu Configuration

? true : false szybszy zapis składni if
Impossible
Widzę, że nie będzie łatwo, bo nie miałem wcześniej styczności z obiektami a z tego co wiem '::' to jest jakieś odwołanie się do funkcji klasy tak ? Właśnie sobie o tym czytam.. Jednak ktoś mógłby mi ułatwić to zadanie, pisząc na zdrowy rozum chociaż MNIEJ WIĘCEJ krok po kroku jak to działa

UP - dziękuję kolego smile.gif
Turson
Przez :: odwołujesz się do statycznych własności/metod.
kosmos
W zmiennej $isDhtml zapisywana jest informacja w zależności od tego co zwróci metoda get klasy Configuration
co do drugiej linijki kodu to tu masz przykład


I czas na szablon:
przeklejam z przykładu ...
  1. <html>
  2. <head>
  3. <title>SmartyNews!</title>
  4. </head>
  5. <body>
  6. {section name=i loop=$newsy}
  7. <h3>{$newsy[i].tytul}</h3>
  8. {if $newsy[i].news_dnia eq 1}
  9. <p><strong>News dnia!</strong></p>
  10. {/if}
  11. <p>Dnia {$newsy[i].data}</p>
  12. <p>{$newsy[i].tresc|truncate:200:"..."}</p>
  13. {/section}
  14. </body>
  15. </html>
Impossible
Co do smarty właśnie 'zjadam' podstawy, bo cała presta jest na tym postawiona i bez tego ani rusz, chyba za bardzo wypłynąłem na głęboką wodę ale bardzo dziękuję za pomoc. smile.gif Myślę, że temat jest wyczerpany. smile.gif

Mam jeszcze pytanie w tym wątku, czyli ta metoda get('BLOCK_CATEG_DHTML') musi już gdzieś być zaimplementowana tak ? Bo z tego co widzę, nie jedno krotnie jest użyta w kodzie źródłowym, ale nie ma jej nigdzie w pliku z tym kodem. Chciałbym zobaczyć jak ona działa
kosmos
Tak jak pisałem wcześniej, znajduje się w klasie Configuration więc musisz poszukać najpierw tej klasy aby znaleźć metodę.
Jeśli nie ma jej w tym pliku, przeszukaj pozostałe.

EDIT:
tylko nie rób tego "ręcznie" smile.gif bo może być ciężko.

Po haśle w google:
where is Configuration class in prestashop

znalazłem coś takiego

  1. static public function get($key, $id_lang = NULL)
  2. {
  3. if (!is_array(self::$_CONF) OR !is_array(self::$_CONF_LANG) OR !Validate::isConfigName($key))
  4. die(Tools::displayError());
  5.  
  6. if ($id_lang)
  7. {
  8. if (key_exists(intval($id_lang), self::$_CONF_LANG) AND key_exists($key, self::$_CONF_LANG[intval($id_lang)]))
  9. return self::$_CONF_LANG[intval($id_lang)][$key];
  10. }
  11. elseif (key_exists($key, self::$_CONF))
  12. return self::$_CONF[$key];
  13.  
  14. $result = Db::getInstance()->GetRow('
  15. SELECT IFNULL('.($id_lang ? 'cl' : 'c').'.`value`, c.`value`) AS value
  16. FROM `'._DB_PREFIX_.'configuration` c
  17. '.($id_lang ? ('LEFT JOIN `'._DB_PREFIX_.'configuration_lang` cl ON (c.`id_configuration` = cl.`id_configuration` AND cl.`id_lang` = '.intval($id_lang).')') : '').'
  18. WHERE `name` = \''.pSQL($key).'\'');
  19.  
  20. if ($id_lang)
  21. {
  22. self::$_CONF_LANG[intval($id_lang)][$key] = ($result ? $result['value'] : false);
  23. return self::$_CONF_LANG[intval($id_lang)][$key];
  24. }
  25. else
  26. {
  27. self::$_CONF[$key] = ($result ? $result['value'] : false);
  28. return self::$_CONF[$key];
  29. }
  30. }


Wyszukaj u siebie pliku Configuration.php
https://github.com/pal/prestashop/blob/mast...nfiguration.php
Impossible
Mam taką fajną opcje wyszukiwania plików w kliencie FTP, więc dużo nie potrzebowałem, żeby znaleźć ten plik. Bardziej przeraża mnie jego zawartość, ale zaraz zaczne szukać tego co mnie tam interesuje smile.gif)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.