Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework]System szablonów, Menu (base url)
ShadowD
post 10.05.2012, 18:55:52
Post #1





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


Walczę z Zend'em na wiele sposobów już od dłuższego czasu to świetny fw, ale dróg do jednego celu jest wiele, a sama dokumentacja jest dziurawa jak ser szwajcarski - niestety.

Więc tak, moja aplikacja dąży do tego by zostać pełnoprawnym cms'em i mam problem z ogarnięciem systemu szablonów, opiszę co mam:
Plugin pobiera nazwę szablonu, dodaje ścieżki do wszystkich katalogów które posiadają jakieś ważne informacje o wyglądzie strony - http://screenup.pl/?l=OIXH53G takie rozwiązanie wydaje mi się właściwe - jak się mylę może ktoś mnie wyprowadzi z błędu, ofc wszystkie pliki poza katalogiem "files" są zablokowane dla http. Można powiedzieć że to pytanie to takie utwierdzenie się czy czegoś nie przekombinowałem.

Głównym problemem są ścieżki, style i obrazki muszą mieć dokładną ścieżkę template/kajakisternik/file/style/top.css, więc automatycznie sobie pomyślałem by dodać do baseUrl() przedrostek - super fajnie wszyetko działa tak jak powinno, w szablonie wystarczy użyć baseUrl(style/top.css). Teraz przyszedł czas na zabawę z menu - Zend_Navigation jednak linki są generowane z przedrostkiem linku do stylów - jak temu zapobiec bądź jaką drogę obrać by pozbyć się tych problemów?

Ponadto mam router (jedne przykładowy):
  1. $router->addRoute('news', new Zend_Controller_Router_Route_Regex(
  2. 'news/?([a-zA-Z0-9\-_]*)/?([a-zA-Z0-9\-_]*)',
  3. 'controller' => 'news',
  4. 'action' => 'list'
  5. ),
  6. 1 => 'category',
  7. 2 => 'name'
  8. ),
  9. 'news/%s/%s'
  10. ));


Jak chodzi o przepisywanie adresów na kontrolery/akcje działa super, ale w drugą stronę zawsze wymaga wszystkich argumentów, a założenie jest takie by to nie było konieczne, samo news lub news/nazwaKat powinno być poprawne - znów mamy same problemy typu jak tego użyć. ;]

Może ktoś znajdzie chwilę czasu by mnie naprowadzić na rozwiązanie, być może idę wogóle złą drogą i na siłę pcham się w kłopoty.


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post
Fluke
post 10.05.2012, 21:17:20
Post #2





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

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


Patrząc na twoją strukturę katalogową mam podobnie ale "template" włożyłem oddzielnie w każdy moduł.
Czyli np: mam stronę podpiętą do cms "default" oraz panel "admin" i tam mam katalog templates. Wydaje mi się to jak na razie dobre rozwiązanie ponieważ jak robię moduł dla admina to wrzucam tylko katalog admin i wszystko mam poukładane w kupę.

A co do tematu to stwórz sobie helper np: cssPath albo jsPath który dziedziczy Zend_View_Helper_BaseUrl i tam wygeneruj sobie odpowiednie podstawowe adresy. Albo zawsze w bootstrapie możesz sobie pobrać obiekt view i przypiać do zmiennej ($view->assign("cssPath", $cssPath))

Pozdrawiam smile.gif
Go to the top of the page
+Quote Post
ShadowD
post 10.05.2012, 21:33:15
Post #3





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


Admin nie będzie mieć takiego systemu templatek bo i niby po co, a moduły wykorzystuję w obrębie 1 aplikacji np. blog + sklep, oba mają tą samą szatę więc idzie mi tak na rękę - dzięki za utwierdzenie, że to rozsądne wyjście bo już zaczynam się gubić w tym co jest prawidłowe, nie lubię dokumentacji zend'a jest tragiczna. ;]

Rozumiem, że bez jakiegoś dodatkowego kodu się nie obejdzie, może stworzyć helper widoku urlTemplate('image/obrazek.jpg') i w nim pobierać ścieżkę do katalogu i doklejać, a baseUrl zostawić w spokoju? Myślałem że to koromysło właśnie do tego służy, ale jak widać wielkie głowy nie wpadły na pomysł chęci podziału linków do obrazków/stylów/skryptów, a hiperłączy - po prostu męczą mnie już rozwiązania które obchodzą problem chciał bym by funkcje ~url() olewały parametr baseUrl()...

Rozwiązanie, nie wiem czy ostateczne i najlepsze, ale pomaga:
  1. <?php
  2.  
  3. class Ss_View_Helper_FileUrl extends Zend_View_Helper_Abstract
  4. {
  5. public function FileUrl($urlToFile)
  6. {
  7. $config = Zend_Registry::get('config');
  8.  
  9. return 'template/'.$config->templateName.'/file/'.$urlToFile;
  10. }
  11. }


W .ini:
resources.view.helperPath.Ss_View_Helper = APPLICATION_PATH "/library/Ss/Helpers"

Ten post edytował ShadowD 10.05.2012, 23:40:13


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
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 Wersja Lo-Fi Aktualny czas: 21.06.2025 - 19:25