目標:建立一個views list page,列出特定類型的node標題、內文摘要,以及自動產生含有node url的QR code。
作法:使用mobile code模組,可以整合CCK產生QR code。但是欄位必須先手動填入內容,才能生成QR code,不夠方便。
想法:在views中建立一個globle field,填入php code,取出node url,並使用theme('mobilecode')印出QR code。
困難:不曉得怎麼寫相關的php code!XD
大家有沒有用過mobile code模組做過類似的事情?如果有的話,還請指點一下怎麼處理這個困難。
如果有更簡單的方法可以實現這個目標,還請不吝回覆。感謝!
Re: 怎麼樣在views page顯示每個node的QR coide
可以考慮直接把theme('mobilecode')寫進tpl.php,
這樣應該就可以直接解決了?
Re: 怎麼樣在views page顯示每個node的QR coide
我想jamesliu78的解法有點誤會我想要做什麼。
我不是想要在每個node裡頭顯示一張QR code圖片,而是想要在一個views list(table)裡頭列出每個node url的QR code圖片。
(如果我想要做前者,在tpl.php裡頭寫程式會是好作法。不過Mobile code裡頭已經有提供Node Url的區塊,這樣做其實有點多此一舉。)
要做到後者,又不想要自行填寫link field或者text field,看來就得在views裡頭自己插個欄位進去,拉出每個node url並產生出QR code。
Drupal.org上頭有相關的討論,這位同學做了些嘗試,不過卻沒有成功。我試了一下,情況依然。
所以就上來請教大家囉!
Re: 怎麼樣在views page顯示每個node的QR coide
我想,jamesliu 的想法是沒錯,他指的不是 node 的 tpl.php 而是針對 views 指定的 template.
至於 template 的檔名要怎麼設定,會出現在 /admin/build/views/edit/[views_name] -> 基本設定 -> 版型: 資訊 這下面,
便能夠針對 views list 寫出合適的 template.
這個好像是上次 jamesliu 在小聚上分享所學到找出 views template 的實用技巧...^^
Re: 怎麼樣在views page顯示每個node的QR coide
喔喔,原來是這樣子啊!那是我誤會了。
只是說到底要怎麼寫code才能取出node url再用mobile code印出來呢?@@
有沒有人有線索啊?
Re: 怎麼樣在views page顯示每個node的QR coide
$node_url = url('node/' . $node->nid);
$code = theme('mobilecode', $node_url);
大概這種感覺吧?
感謝chris解譯xd"
講的有點太檢潔了xd"
基本上步驟如下...
.在views中加入nid的field
.從views取得自定樣式的tpl.php名稱,並新增到版型中
.在tpl.php中產生code,並印出來
.將tpl.php中的nid欄位拿掉(這樣就不會印出來了)
這樣應該就可以解決了.....xd"
Re: 怎麼樣在views page顯示每個node的QR coide
這個方法直接利用 tpl.php 看起來簡潔多了,我知道的 drupal function 的確太少了...:P
Re: 怎麼樣在views page顯示每個node的QR coide
我的想法是這樣....
在 field 部分加入該 node 的 path ,然後排除顯示 exclude from display
先在 views 裡面弄個 custom filed 寫 php (我通常都利用 Customfiled: php code 來寫),
先利用
找出 node url 路徑,或是直接利用 nid 來產生,(不知道你有沒有一定要 url alias)
找到之後套用你提到的那篇 theme('mobilecode') 的方法
<?php
global $base_url;
# compute node alias
$node_alias = $base_url.url("$data->[some_filed]");
# render QR Code
print theme('mobilecode', $node_alias, array('preset' => 'default'));
?>
這樣不知道會不會成功....因為沒試過 theme('mobilecode') ,
如果這個部分沒問題,那應該可以順利幫你把你要的路徑資料轉換成你要的 QR code
試試看吧,期待你的試驗結果...^^
Re: 怎麼樣在views page顯示每個node的QR coide
自己回一下,這個方法的概念是基於不使用 tpl.php 的方式把 QR code 生出來,
我經常用這種方法把資料生出來,因為之前還不知道使用 views 的 tpl
這樣的效能可能會比較差...XDD
Re: 怎麼樣在views page顯示每個node的QR coide
最近寫多了 Javascript..... 開始渾亂...
PHP 應該沒有 php dot notation
Re: 怎麼樣在views page顯示每個node的QR coide
感謝兩位的幫忙,給了我不少嘗試的靈感。
首先我先照amouro的作法去做。不過durpal 7沒有Customfiled: php code可用,所以我改用Views PHP這個模組。
我新增一個global: php欄位,並在裡頭填入改過的jamesliu78程式碼:
<?php
$node_url = url('node/' . $node->nid);
$code = theme('mobilecode', $node_url, array('#preset' => 'large'));
print $code;
?>
不過,殘念,跑出這個錯誤碼:
PHP Fatal error: __clone method called on non-object in .../sites/all/modules/mobile_codes/mobile_codes.module on line 172
經查,drupal.org已經有很多人中標了,至少到去年底都沒解決:http://drupal.org/node/1223430
不死心之餘,按照jamesliu78提示的作法,新增一個path欄位,然後去查views的tpl.php資訊,並版型裡頭新增一個views-view-field--XXX--page--path.tpl.php檔案,在檔案中填寫與上面同樣的程式碼。
結果......
還是一樣:
PHP Fatal error: __clone method called on non-object in .../sites/all/modules/mobile_codes/mobile_codes.module on line 172
這下確定是mobile_codes模組問題,就....死心了。非常感謝樓上兩位的幫忙!
(傷腦筋了,本來以為這是個最簡單可以讓手機和網頁溝通的方法說....看來得另外想辦法@@。)
Re: 怎麼樣在views page顯示每個node的QR coide
看來是在傳值的時候出錯,
可能要trace一下function了。
Re: 怎麼樣在views page顯示每個node的QR coide
請 google 幫忙做?
http://jishus.org/?p=326
<?php
$node_url ='http://drupaltaiwan.org/comment/edit/20362';
echo "";
?>
Re: 怎麼樣在views page顯示每個node的QR coide
感謝Hom的線索,請受小弟一拜!給我亂試一下,碰巧就試出來了:http://www.drupaltky.org/case
我的作法是,在views裡頭新增一個global: php field,在output欄位中填入改過的code:
<?php
$node_url = url(drupal_get_path_alias('node/' .$data->nid), array('absolute' => TRUE));
echo "";
?>
因為取出的node url是用絕對路徑,會自動寫成url alias,省了不少功夫。這下就知道以後該怎麼寫了。
我參考Hom給的網頁,查了一下,發覺drupal有Google chart API這個模組可用(事實上mobile code預設也是用Google chart API來產生QR code),還可以跟views整合!(好啦,是我後知後覺)
想繼續請教說,有沒有用過Google chart API這個模組;如果換做用這個模組,同樣效果的code要怎麼寫呢?
Re: 怎麼樣在views page顯示每個node的QR coide
可以看看google chart api的模組有沒有加views的plugin提供顯示欄位,
有的話應該直接增加欄位就有了xd"
Re: 怎麼樣在views page顯示每個node的QR coide
查了一下...
chart 7.x-1.0 已經有加入 QR code 這個 chart type (Add 'QR code' to chart_types() )
不過怎麼用這個 api, 我也不知道...XD 請其他高手解答
Re: 怎麼樣在views page顯示每個node的QR coide
$node_url = url(drupal_get_path_alias('node/' .$data->nid), array('absolute' => TRUE));
=
$node_url = url('node/' .$data->nid, array('absolute' => TRUE));
少用一個模組, 不好嗎 ??