「怎麼樣在每個特定的cck欄位中填入一樣的資料內容?」這個問題乍看之下其實有些不尋常:因為我們通常會在多個node的特定cck欄位(比方說「日期」、「姓名」)中填入不一樣內容,為什麼需要全部填入一樣的內容呢?
這是因為tky使用了viewsfield模組,可以在cck之中嵌入特定的views表格。比方說「師資」的「開設課程」欄位集裡頭有個viewsfield cck欄位,連結到一個用nid當作argument的views表格,會過濾出特定師資所開設的課程資料。
由於搭配了token模組,只要在這個viewsfield cck欄位填入[nid]就可以自動對應不同的師資node而變更nid。這樣就不用一個個node去填寫不同的nid了。
問題是,有很多師資node建立的比較早,沒有預先填入這個[nid]值。所以還是得一個個node去手動輸入。tky最不喜歡的就是做這種繁複性的重複動作,所以想找個法子把[nid]全部填入這個viewsfield cck欄位。看了一下phpmyadmin,發覺似乎沒法子用sql指令去做的樣子。想請教一下高手們有沒有對策。
另一個相關的問題是,cck欄位都可以有預設值的,在建立新node的時候自動填入。不過由於tky要填入的預設值是[nid],而新的node在存入資料庫之前是沒有nid的,在建立node的表單中自然就不會自動填入。這也是一件挺麻煩的事情。又要填入token的數值又要讓token不要在建立node的時候發生作用,不曉得有什麼好法子可以解決這個惱人的問題。
希望可以找到個模組來解決大量填入相同內容或token變數的問題。
不曉得jimmy的quick edit content模組會不會考慮把這樣的功能加進去?
Re: 怎麼樣在每個特定的cck欄位中填入一樣的資料內容?
orz 被點名了
批次處理cck的field是一個哲學... 問題
別打我
我覺得最簡單的方式,還是用phpmyadmin大法
excel匯出,copy,貼上變成另一個欄位,excel 匯入,解決
--
from open mind to open source~
Re: 怎麼樣在每個特定的cck欄位中填入一樣的資料內容?
自己寫 php script 來執行
主要程式片段類似這樣, 前面還有些 initialization, 可以參考 cron.php, 之前好像也有討論過
$nids = array(1, 2, 3, 4, 5);
foreach($nids as $nid)
{
$node = node_load($nid);
$node->field_teacher = 1;
content_update($node);
}
Re: 怎麼樣在每個特定的cck欄位中填入一樣的資料內容?
最好這也是個哲學問題啦!XD
能否請教一下,如果是用phpmyadmin,使用sql語法的話要怎麼樣寫入同樣的數值到一個欄位中?
比方說欄位是viewsfield,數值是[nid]?
tky
Re:
PHPMYADMIN是好工具,
你進入去, 隨便找一個你要修改的數據, 按編輯, 編輯好後按執行
之後你會看見上方出現SQL語法
比方:
UPDATE `db_name`.`node` SET `title` = 'ABC' WHERE `node`.`nid` =1043 LIMIT 1 ;
你修改一下為:
UPDATE `db_name`.`node` SET `title` = 'XYZ' WHERE `node`.`nid` ='';
這樣就會修改所有 `node`.`nid`為空的欄的title 為XYZ
緊記先備份!!!
或用SELECT 語法試一試是不是你想要的數據
例如:
SELECT * FROM `node` WHERE `title` = '';
=====================
會XHTML + CSS
Re:
多謝Kay.L的指導。
不過很奇怪,使用
的陳述並不會將數值填入所有沒有數值的欄位,而是沒有反應。後來tky依樣畫葫蘆,是改成這樣:
由於所有的欄位都一定有vid或者nid,判斷式改成不等於0,就等於修改全部的表格了。
tky
Re:
要看該欄位的預設值 是 空字串, 0 還是 NULL
一般 id 的話預設值應該是 0
Re:
你是field_thesisadviser_vname這個空 ??
如果這樣應該是:
UPDATE `db_name`.`content_type_teacher` SET `field_thesisadviser_vname` = '[nid]' WHERE `content_type_teacher`.`field_thesisadviser_vname` = '';
如果你是field_thesisadviser_vname完全沒有數據, 想把所有改的, 更簡單:
UPDATE `db_name`.`content_type_teacher` SET `field_thesisadviser_vname` = '[nid]' ;
不用WHERE 了
不過你成功就好了, 方法有很多種 ^.^