您在這裡

一般使用者用 與 管理者用的 page.tpl.php

drakeguan's 的頭像
drakeguan 在 2006-06-05 (週一) 21:22 發表

這兩天修改了一個網路上看到的 theme(其實也不是修改,就是抓了它的 css,然後使用 firefox 的 view formatted source 來觀察人家的網頁結構,然後三方下手(css, theme (ex, page.tpl.php), photoshop(自己設計個版型出來,方便自己生圖調整)),雖然還沒完工,不過感覺挺有趣的。

但是遇到了一個問題。礙於美觀,所以把放置內容的那個 div 的寬度設小一點,結果導致在管理界面時,有些元件的寬度(長度)會超過,而看起來很醜,或是有時根本會被別的 div 給擋到。

於是我在想,有什麼不錯的方法,可以生出一個版型來( page.tpl.php ?),使得一般使用者看到的版面和管理者進入後台(ex, ooxx/admin/blah blah...)看到的版面不同? 我記得 CivicSpace 的 theme 好像有做到這點,但沒有去看他們怎麼做到的(改 drupal core 與 theme 雙管齊下?),想說上來問問看,看大家有什麼點子 :)

我看了一下CivicSpace的theme檔案,似乎是在template.php裡有個civicspace_is_admin(),判斷所在網頁是不是管理介面,如果是的話,就在page.tpl.php裡顯示/隱藏某些部份。

嗯,所以 CivicSpace 新增的函式裏頭,至少有這個 civicspace_is_admin() ^>^

剛剛看了一下 ~/themes/engines/phptemplate/phptemplate.engine,並沒有看出來它怎麼把 function 提供給 web designer 的。不過注意到它裏頭傳遞變數的方式,於是在猜想,有沒有一種方式可以新增一個 admin 變數給 theme,或是直接在 engine 層就把原來要傳給 page.tpl.php 的流程,轉傳到別的檔去(ex, admin_page.tpl.php),結果在官方網頁找到使用後者的方法。

Creating a separate admin theme

實在太棒了 :D

挺好的,這樣後台就可以用很簡單的畫面來呈現了
不過其實用兩個theme,效率不一定會高耶
理論上用同樣一個theme應該會比較高

--
from open mind to open source~

我想弄成兩個 theme(是這樣說的嗎? 我指的是一個 page.tpl.php 一個 admin_page.tpl.php),的確會讓工作多了不少,像是 css 是否共用,如果到時有一邊更動,另一邊是否要跟著更改之類的。

我目前要處理的,只是把原來的 theme 的 layout 改一下,好讓管理者能用盡量大的畫面看到他需要更動的那些設定。

這樣說來的話,我的 case 使用類似 civicspace_is_admin() 或一個變數之類的來得比較好的樣子,等晚上回去想清楚了再說。

嗯,我的說法有點錯誤,應該說多一個template

我想有裝php optimizer類似的東西,應該會沒有感覺
畢竟之後常用的code都存在記憶體裡了,admin又不是大量存取頁面

只是覺得,要換admin頁面好像也不需要換template,只需要用不同的css檔案就好。把這樣的工作用一個變數取代,然後讓client端去cache不同的css,應該是比較有效率的方式。

話說,要辨別是否要換成admin的介面,只要看(arg(0) == 'admin') ? 應該就合用了吧?

--
from open mind to open source~

自己增加一個admin.css
在page.tpl.php增加幾行:

<?php
略
.....
 <style type="text/css" media="screen">
  $adm =  TRUE : FALSE;
  <!--
   @import url(<?php print path_to_theme()."/modules.css"; ?>);
   @import url(<?php print path_to_theme()."/nav.css"; ?>);
   @import url(<?php print path_to_theme()."/layout.css"; ?>);
   @import url(<?php print path_to_theme()."/editor.css"; ?>);
   <?php if(arg(0) == 'admin'): ?>
     @import url(<?php print path_to_theme()."/admin.css"; ?>);
   <? endif; ?> 
  -->
 </style>
...
略

--
from open mind to open source~