Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Usuwanie stylesheet ze zmiennej
Johnas
post
Post #1





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


Witam, mam kod headera
  1. <!DOCTYPE html>
  2.  
  3. <html lang="pl">
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>{$engine->sitename} - {$engine->title}</title>
  7. <meta name="description" content=""/>
  8.  
  9.  
  10. <link rel="stylesheet" type="text/css" media="all" href="{$template}/css/style.css"/>
  11.  
  12. <link rel="stylesheet" type="text/css" media="all" href="{$template}/css/forum.min.css"/>
  13.  
  14. <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
  15. <script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
  16. <meta name="generator" content="Net4Engine 1.0 Alfa"/>
  17. <link rel='canonical' href='{$engine->domain}'/>
  18. <link rel='shortlink' href='{$engine->domain}'/>
  19.  
  20. <link rel="stylesheet" type="text/css" media="all" href="{$template}/css/camera.css"/>
  21. <link rel='stylesheet' id='flexslider-css' href='{$template}/css/flexslider.min.css?ver=2.2.0' type='text/css' media='all'/>
  22. <link rel='stylesheet' id='owl-carousel-css' href='{$template}/css/owl.carousel.css?ver=1.24' type='text/css' media='all'/>
  23. <link rel='stylesheet' id='owl-theme-css' href='{$template}/css/owl.theme.css?ver=1.24' type='text/css' media='all'/>
  24. <link rel='stylesheet' id='font-awesome-css' href='{$template}/css/font-awesome.min.css?ver=3.2.1' type='text/css' media='all'/>
  25. <link rel='stylesheet' id='cherry-plugin-css' href='{$template}/css/cherry-plugin.min.css?ver=1.2.6' type='text/css' media='all'/>
  26. <link rel='stylesheet' id='contact-form-7-css' href='{$template}/css/styles.css?ver=4.1' type='text/css' media='all'/>
  27. <link rel='stylesheet' id='theme52906-css' href='{$template}/css/main-style.min.css' type='text/css' media='all'/>
  28. <link rel='stylesheet' id='magnific-popup-css' href='{$template}/css/magnific-popup.css?ver=0.9.3' type='text/css' media='all'/>
  29. <link rel='stylesheet' id='options_typography_Open+Sans-css' href='//fonts.googleapis.com/css?family=Open+Sans&subset=latin' type='text/css' media='all'/>
  30.  
  31.  
  32. {literal}<!--[if lt IE 8]>
  33. <div id="ie7-alert" style="width: 100%; text-align:center;">
  34. <img src="http://tmbhtest.com/images/ie7.jpg" alt="Upgrade IE 7" width="640" height="344" border="0" usemap="#Map" />
  35. <map name="Map" id="Map"><area shape="rect" coords="496,201,604,329" href="http://www.microsoft.com/windows/internet-explorer/default.aspx" target="_blank" alt="Download Interent Explorer" /><area shape="rect" coords="380,201,488,329" href="http://www.apple.com/safari/download/" target="_blank" alt="Download Apple Safari" /><area shape="rect" coords="268,202,376,330" href="http://www.opera.com/download/" target="_blank" alt="Download Opera" /><area shape="rect" coords="155,202,263,330" href="http://www.mozilla.com/" target="_blank" alt="Download Firefox" /><area shape="rect" coords="35,201,143,329" href="http://www.google.com/chrome" target="_blank" alt="Download Google Chrome" />
  36. </map>
  37. </div>
  38. <![endif]-->
  39.  
  40. <!--[if gte IE 9]>
  41. <script type="text/javascript">
  42. jQuery(function(){
  43. jQuery('.sf-menu').mobileMenu({defaultText: "Nawiguj do..."});
  44. });
  45. </script>
  46. <!--<![endif]-->
  47. {/literal}
  48. </head>
  49. <body class="home page page-id-203 page-template page-template-page-home page-template-page-home-php">
  50.  
  51. {include file="menu.tpl"}


i próbuję dodać linki do zmiennej co działa znakomicie. Chcę aby po dodaniu linka do zmiennej usuwał z headera link type="stylesheet" co powoduje mi już błąd. nie usuwa mi tego... a oto kod:
  1. $header = $this->smarty->fetch('header.tpl');
  2. $links = explode("<link", $header);
  3. $x = $y = 0;
  4.  
  5.  
  6. foreach ($links as $code) {
  7.  
  8. if (strpos($code, "stylesheet") > 0) {
  9. $x++;
  10. $code = str_replace("'", '"', $code);
  11.  
  12. $delete = explode(">",$code);
  13. $delete = $delete[0];
  14.  
  15. $url = explode('href="', $code);
  16. $output = explode(">", $url[1]);
  17. $url = explode('"', $url[1]);
  18.  
  19. $url = $url[0];
  20.  
  21. echo $delete;
  22. $header .= str_replace($delete, "", $links[$y]);
  23. if ($x == 1)
  24. $link = $url;
  25. else
  26. $link .= ",".$url;
  27. }
  28. $y++;
  29. }


nie mam pojęcia co robię nie tak...


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) Mozesz napisac po co to robisz?
2) pomijajac juz fakt po co to robisz, to powinienes uzyc poprostu preg_match, ktory zwrocilby ci liste twoich HREF z tych LINK czy cokolowiek bys tam chial sobie zwrocic


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Johnas
post
Post #3





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


1. chcę z szablonu pobrać listę szablonów i przez skrypt minifikować go... nie chcę zmieniać struktury szablonu, a po prostu sprawić aby sam skrytp to robił


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Chyba nie nadazam. Szablony przeciez wiesz gdzie trzymasz, jest to konkretny katalog przeciez. Czemu wiec poprostu nie zrobisz co masz zrobic na plikach z tego katalogu tylko sie bawisz w sprawdzanie jakie szablony zostaly uzyte? Jakos dziwnie to wyglada co teraz kombinujesz


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Johnas
post
Post #5





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


chcę zrobić to automatycznie, wiem że tak jest prościej, ale ja jakoś lubię komplikować sobie życie... mam to zrobione, ale nie wiem dlaczego mi nie zamienia tego w kodzie tongue.gif


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To uzyj preg_match . Ulatwi ci zycie nie twprzenie takich "potworkow" jak teraz wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Johnas
post
Post #7





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


nie wiem za bardzo jak używać tam parametrów. Ogólnie udało mi się to zrobić, ale chciał bym się nauczyć tego preg_match. Na chłopski rozum zrobiłbym to tak:
  1. preg_match('/(?P<link rel="stylesheet"\w+): (?P\d+)/', $str, $matches);
, ale raczej wątpię żeby tak miałoby to działać... Chodzi mi też o to że nieraz w skrypcie link jest podany:

  1. <link rel='stylesheet' id='theme' href='{$template}/css/main-style.min.css' type='text/css' media='all'/>
  2.  
  3. a nieraz tak:
  4. <link href="{$template}/lib/owlcarousel/assets/owl.carousel.min.css?modified=20012009" rel="stylesheet">


rel zmienia pozycje

Ten post edytował Johnas 17.04.2022, 21:28:07


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
aras785
post
Post #8





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


użyj tego: https://symfony.com/doc/current/components/dom_crawler.html z dodatkiem tego: https://symfony.com/doc/current/components/css_selector.html

a następnie zwykły kod:

  1. $crawler = new Crawler($html);
  2. $crawler->filter('link')->each(function (Crawler $node, $i) {
  3. echo $node->attr('href');
  4. });


swoją drogą minifikowanie plików powinno być robione podczas deplyomentu (gulp, webpack) a w samej templatce ustawiasz w zależności od środowiska "prod/dev" czy ma być style.css?time czy style.min.css.
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat(Johnas @ 17.04.2022, 21:27:26 ) *
nie wiem za bardzo jak używać tam parametrów. Ogólnie udało mi się to zrobić, ale chciał bym się nauczyć tego preg_match. Na chłopski rozum zrobiłbym to tak:
  1. preg_match('/(?P<link rel="stylesheet"\w+): (?P\d+)/', $str, $matches);
, ale raczej wątpię żeby tak miałoby to działać... Chodzi mi też o to że nieraz w skrypcie link jest podany:

  1. <link rel='stylesheet' id='theme' href='{$template}/css/main-style.min.css' type='text/css' media='all'/>
  2.  
  3. a nieraz tak:
  4. <link href="{$template}/lib/owlcarousel/assets/owl.carousel.min.css?modified=20012009" rel="stylesheet">


rel zmienia pozycje


  1. preg_match('/<link.*?stylesheet.*?href=\'(.*?)\'/', $str, $matches);


A jesli ci zmienia pozycje stylesheet to poprostu dodaj OR (|)
  1. preg_match('/<link.*?((stylesheet.*?href=\'(.*?)\')|(href=\'(.*?)\'.*?stylesheet.*?))/', $str, $matches);

Pisane z palca, moge byc bledy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Johnas
post
Post #10





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


Cytat(nospor @ 18.04.2022, 09:49:34 ) *
Pisane z palca, moge byc bledy


Znalazłem jeden haha.gif a tak na poważnie to nospor i Arek zrobiłem to co chciałem, ale strona zwolniła tępo, pomimo błędnego wyświetlania ponieważ w CSS są url które muszą być dokładnie includowane... starałem się zmieniać ich parametry, ale nadal jest to za wolne... nie da się tego robić przy każdym odświeżaniu bo czas pracy jest za długi... myślę nad minifikowaniem plików CSS, albo nad generowaniem pliku CSS dla każdej strony... chodzi mi o Google speed Page, a dokładnie zagadnienie które mówi o tym żeby wyodrębnić CSS który jest ważniejszy i nie blokuje generowania strony... Trudny przypadek tongue.gif Ja osiągnę tam 100/100

Ten post edytował Johnas 19.04.2022, 00:01:31


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 11:57