Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> include
polkom21
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 22.07.2011

Ostrzeżenie: (0%)
-----


Witajcie. Otóż pisze taki troszkę większy cms i zabrałem się za mod_rewrite. Chwila czytania w sieci i już kumam jak to działa napisałem sobie tam wszystko i teraz pytanie. Jak mam adres: strona.pl/page/temat_jakis.html (oryginalnie powinien wyglądać tak bez mod_rewrite: strona.pl/?action=page&title=temat_jakis) i jak otrzymać zmienną title do dalszej obróbki?


Dobra to działa ale za to mam problem z includowaniem pliku. Muszę pobierać plik przez file_get_content() gdyż zbudowałem silnik styli i w pliku który jest stylem mam np taki kod:

  1. Użytkownik: {$user->name}

i mam kod który zamienia mi { i } na <?php ?> no i to nie działa. kod php widać normalnie w źródle i nie jest on wyświetlany. Co mam z tym zrobić żeby to zadziałało?

Ten post edytował polkom21 19.08.2012, 10:05:41
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


  1. function renderTemplate($templateName, $vars) {
  2. extract($vars, EXTR_OVERWRITE);
  3. $myTemplate = '';
  4.  
  5. require $templateName;
  6. $myTemplate = ob_get_contents();
  7.  
  8. return $myTemplate;
  9. }
  10.  
  11. renderTemplate('templatka.php', arra('name' => $row->name));
Go to the top of the page
+Quote Post
polkom21
post
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 22.07.2011

Ostrzeżenie: (0%)
-----


Dobra jest git tylko pytanie jak zrobić żeby tablica sama zapełniła się wartościami objętymi w {}
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


1. Skorzystać z gotowego, "pełnoprawnego" systemu szablonów, np. PHPTAL, Twig, OPT, Smarty czy cokolwiek tam uznasz za stosowne.
2. Nie korzystać z żadnego dodatkowego narzędzia i użyć czystego PHP, który de facto również jest systemem szablonów.
Go to the top of the page
+Quote Post
polkom21
post
Post #5





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 22.07.2011

Ostrzeżenie: (0%)
-----


1. Nie skorzystam z gotowego systemu szablonów.
2. Piszę CMS i chcę żeby można było wybierać z jakiego stylu chce się korzystać
3. Jeżeli nie chcesz pomóc to się nie odzywaj.
Go to the top of the page
+Quote Post
Tajgeer
post
Post #6





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

Ostrzeżenie: (0%)
-----


Skoro masz problem z wykonaniem funkcji, którą podał Ci CuteOne, to jak Ty sobie wyobrażasz dalsze pisanie CMS'a? Crozin wskazał Ci możliwe rozwiązania, a Ty wyjeżdżasz z tekstem, że "jeżeli nie chcesz pomóc, to się nie odzywaj". Trochę pokory.

Ten post edytował Tajgeer 19.08.2012, 12:03:26
Go to the top of the page
+Quote Post
polkom21
post
Post #7





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 22.07.2011

Ostrzeżenie: (0%)
-----


Tylko, że tyle to ja sam sobie napisałem z resztą i tak jakoś sobie poradzę bo czekać zanim się wymądrzą Ci, którzy najmniej wiedzą to szkoda czasu.
Go to the top of the page
+Quote Post
Tajgeer
post
Post #8





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

Ostrzeżenie: (0%)
-----


Nie rozumiem w takim razie po co opisujesz na forum swoje problemy, skoro Ty wszystko wiesz najlepiej. Jak już pisałem trochę pokory - wiele osób jest na pewno od Ciebie mądrzejszych. Crozin się do nich zalicza, a mimo wszystko potrafiłeś go tylko "uciszyć" mimo, że Ci na pewno rozjaśnił niektóre sprawy.
Go to the top of the page
+Quote Post
polkom21
post
Post #9





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 22.07.2011

Ostrzeżenie: (0%)
-----


No wybacz jeżeli bym chciał to bym skorzystał z gotowego frameworka ale chodzi o to że nie chcę i dla tego pisze a że każdy zamiast pomóc to weź sobie gotowca no to sory ale take teksty mnie wkurzają.
Go to the top of the page
+Quote Post
Tajgeer
post
Post #10





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

Ostrzeżenie: (0%)
-----


Wyjaśnijmy jedną rzecz:

Piszesz CMS'a czy swój framework?
Go to the top of the page
+Quote Post
polkom21
post
Post #11





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 22.07.2011

Ostrzeżenie: (0%)
-----


To będzie CMS

Wyświetla mi coś takiego w źródle:
  1. <!DOCTYPE HTML>
  2. <meta charset="UTF-8" />
  3. <title>Strona główna</title>
  4. </head>
  5. Zawartość strony: Strona <?php $test ?> Jakiś tam tekst i <?php $next ?> i tekst<?php $name ?>
  6. </body>
  7. </html>

Zrobiłem tak żeby zamieniało wszystko jak chciałem tylko właśnie tak w kodzie mi wyświetla dziadosko i nie działa.
Klasa styli:
  1. <?php
  2.  
  3. class template {
  4. public $file;
  5. public $output;
  6. public $values = array();
  7.  
  8. function __construct($file){
  9. $this->file = $file;
  10. $this->output = file_get_contents($file);
  11. }
  12.  
  13. function set($key, $value){
  14. $this->values[$key] = $value;
  15. }
  16.  
  17. function output(){
  18. foreach($this->values as $key => $value){
  19. $tagsToReplace = "{".$key."}";
  20. $this->output = str_replace($tagsToReplace, $value, $this->output);
  21. }
  22. return $this->output;
  23. }
  24. function page($page){
  25. if(!isset($page)){
  26. $this->page = file_get_contents("template/index.php");
  27. $this->prase($this->page);
  28. return $this->page;
  29. } else {
  30. $this->page = file_get_contents("template/".$page.".php");
  31. $this->prase($this->page);
  32. $this->renderTemplate($this->page);
  33. return $this->page;
  34. }
  35. }
  36. function prase($page){
  37. $file = $this->page;
  38. $tekst = split("[{}]", $file);
  39. $wielkosc = count($tekst);
  40. $i = 1;
  41. $s = 0;
  42. while ($i <= $wielkosc -1) {
  43. //$tablica[klucz][wartosc];
  44. $tablica[] = array("{".$tekst[$i]."}", $tekst[$i]);
  45. $i = $i + 2;
  46. $s++;
  47. }
  48. $ile = count($tablica);
  49. for($a=0; $a<$ile; $a++){
  50. $this->page = str_replace($tablica[$a][0], "<?php ".$tablica[$a][1]." ?>", $this->page);
  51. }
  52. }
  53. function renderTemplate($name){
  54. $myTemplate = '';
  55. print_r($name);
  56. $myTemplate = ob_get_contents();
  57. return $myTemplate;
  58. }
  59.  
  60.  
  61. }
  62.  
  63. ?>
Go to the top of the page
+Quote Post
untorched
post
Post #12





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Jak to mówią różni dziwni ludzie: TRZĘSE SIĘ...

Linijka nr 50:
  1. $this->page = str_replace($tablica[$a][0], "<?php ".$tablica[$a][1]." ?>", $this->page);

Zamień na:
  1. $this->page = str_replace($tablica[$a][0], $tablica[$a][1], $this->page);
Go to the top of the page
+Quote Post
polkom21
post
Post #13





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 22.07.2011

Ostrzeżenie: (0%)
-----


No to się trzęś bo zamiast nazwy zmiennej ma mi wyświetlić jej zawartość a poza tym to już tego sposobu próbowałem (IMG:style_emoticons/default/smile.gif) Czekam na dalsze podpowiedzi bo szczerze pierwszy raz piszę obiektowo w php i taki większy CMS pisze. Kto ma jakiś pomysł jak zaspokoić moją zachciankę?

Ten post edytował polkom21 19.08.2012, 22:36:56
Go to the top of the page
+Quote Post
Tajgeer
post
Post #14





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

Ostrzeżenie: (0%)
-----


Od biedy można eval użyć ;-)
Go to the top of the page
+Quote Post
polkom21
post
Post #15





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 22.07.2011

Ostrzeżenie: (0%)
-----


No dobra mam to:
  1. function page($page){
  2. if(!isset($page)){
  3. $this->page = file_get_contents("template/index.php");
  4. $this->prase($this->page);
  5. return $this->page;
  6. } else {
  7. $this->page = file_get_contents("template/".$page.".php");
  8. $this->prase($this->page);
  9. $this->renderTemplate($this->page);
  10. return $this->page;
  11. }
  12. }
  13.  
  14. function renderTemplate($name){
  15. $this->page = eval("\$name = \"$name\";");
  16. }

i nie wyświetla mi wcale pliku. Jakie dalej pomysły?

Ten post edytował polkom21 19.08.2012, 23:35:17
Go to the top of the page
+Quote Post
untorched
post
Post #16





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


  1. class Template {
  2.  
  3. private $varibles = array();
  4.  
  5. public function __construct() {}
  6.  
  7. public function set($name, $value)
  8. {
  9. $this->varibles[$name] = $value;
  10. }
  11.  
  12. public function parse($filename)
  13. {
  14. if(file_exists('template/'.$filename.'.php') === FALSE)
  15. {
  16. die('Nie mozna odnalezc pliku z szablonem!');
  17. }
  18.  
  19. $content = file_get_contents('template/'.$filename.'.php');
  20.  
  21. foreach($this->varibles as $name => $value)
  22. {
  23. $content = str_replace('{$'.$name.'}', $value, $content);
  24. }
  25.  
  26. echo $content;
  27. }
  28.  
  29. };
  30.  
  31. $test = new Template();
  32. $test->set('test', 'Jakas tresc zmiennej');
  33. $test->parse('glowna');


Prosta klasa robiąca dokładnie to czego potrzebujesz..

Ten post edytował untorched 20.08.2012, 11:57:08
Go to the top of the page
+Quote Post
polkom21
post
Post #17





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 22.07.2011

Ostrzeżenie: (0%)
-----


No nie działa tak jak chcę bo w jak w głównym template mam {$menu} {$content} {$label} to zamiast każdej mają być wrzucone dane z następnych plików w których też są dane w {} gdzie chciał bym żeby samo przekłądało kod w {} na wykonany kod php.

Ten post edytował polkom21 20.08.2012, 09:15:15
Go to the top of the page
+Quote Post
Tajgeer
post
Post #18





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

Ostrzeżenie: (0%)
-----


Przejrzyj sobie pliki źródłowe np. Smarty i będziesz wiedział, jak osiągnąć to, co chcesz.
Go to the top of the page
+Quote Post
polkom21
post
Post #19





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 22.07.2011

Ostrzeżenie: (0%)
-----


Wyświetla mi taki kod:
  1. Strona <?php $test ?> Jakiś tam tekst i <?php $next ?> i tekst<?php $name ?>

czy jest to możliwe, że przez mod_rewrite mi tak wświetla i nie wykonuje tego co jest w php? W .htaccess mam tak:

DirectoryIndex index.php przerwa.html

RewriteEngine On
RewriteRule ^([^/]*).html /?action=$1 [L]
Go to the top of the page
+Quote Post
ethann
post
Post #20





Grupa: Zarejestrowani
Postów: 56
Pomógł: 18
Dołączył: 7.04.2012

Ostrzeżenie: (0%)
-----


  1. <?php $name ?>

Zastanów się co robi ten fragment kodu... Bo on nie robi nic.

  1. <?php echo $name ?>
  2. <?=$name?> // potrzebne włączone short_tags
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 16:11