怎麼樣在每個特定的cck欄位中填入一樣的資料內容?

「怎麼樣在每個特定的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模組會不會考慮把這樣的功能加進去?

jimmy 的照片

Re: 怎麼樣在每個特定的cck欄位中填入一樣的資料內容?

orz 被點名了
批次處理cck的field是一個哲學... 問題
別打我

我覺得最簡單的方式,還是用phpmyadmin大法
excel匯出,copy,貼上變成另一個欄位,excel 匯入,解決

--
from open mind to open source~

sylin 的照片

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);
}

tky 的照片

Re: 怎麼樣在每個特定的cck欄位中填入一樣的資料內容?

最好這也是個哲學問題啦!XD

能否請教一下,如果是用phpmyadmin,使用sql語法的話要怎麼樣寫入同樣的數值到一個欄位中?
比方說欄位是viewsfield,數值是[nid]?

tky

Kay.L 的照片

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

tky 的照片

Re:

多謝Kay.L的指導。
不過很奇怪,使用

WHERE `node`.`nid` =''

的陳述並不會將數值填入所有沒有數值的欄位,而是沒有反應。後來tky依樣畫葫蘆,是改成這樣:

UPDATE `db_name`.`content_type_teacher` SET `field_thesisadviser_vname` = '[nid]' WHERE `content_type_teacher`.`vid` <> 0 ;

由於所有的欄位都一定有vid或者nid,判斷式改成不等於0,就等於修改全部的表格了。

tky

hom 的照片

Re:

要看該欄位的預設值 是 空字串, 0 還是 NULL
一般 id 的話預設值應該是 0

Kay.L 的照片

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 了

不過你成功就好了, 方法有很多種 ^.^

RSS feed