Nasıl programlama bir drupal düğüm resim ekleyebilirsiniz?

5 Cevap php

Ben Drupal 6.x kullanarak yaşıyorum ve ben bir RSS beslemesi kapmak ve düğümleri olarak eklemek olacak bir php sınıf yazıyorum.

Ben yaşıyorum sorun RSS beslemesi görüntüleri ile geliyor, ve ben onları doğru eklemek için nasıl anlamaya olamaz.

This page bazı bilgiler var ama çalışmıyor.

Ben oluşturmak ve sunucuya görüntü kaydetmek ve sonra düğüm nesnesi eklemek, ancak düğüm nesne kaydedildiğinde hiçbir görüntü nesnesi vardır.

Bu görüntü nesnesi oluşturur:

$image = array();
if($first['image'] != '' || $first['image'] != null){
	$imgName = urlencode('a' . crypt($first['image'])) . ".jpg";
	$fullName = dirname(__FILE__) . '/../../sites/default/files/rssImg/a' . $imgName;
	$uri = 'sites/default/files/rssImg/' . $imgName;

	save_image($first['image'], $fullName);

	$imageNode = array(
		"fid" => 'upload',
		"uid" => 1,
		"filename" => $imgName,
		"filepath" => $uri,
		"filemime" => "image/jpeg",
		"status" => 1,
		'filesize' => filesize($fullName),
		'timestamp' => time(),
		'view' => '<img class="imagefield imagefield-field_images" alt="' . $first['title'] . '" src="/' . $uri . '" /> ',
	);
	$image = $imageNode;
}

ve bu düğüm için görüntü ekler:

$node->field_images[] = $image;

Ben kullanarak düğümü kaydetmek

module_load_include('inc', 'node', 'node.pages');

// Finally, save the node
node_save(&$node);

ama düğüm nesne dökümü sırasında, artık görüntü olarak. Ben veritabanını kontrol ettim, ve bir görüntü tablosunda göstermek yapar, ama hiçbir FID vardır. Bunu nasıl yapabilirim?

5 Cevap

Neden feedapi eşleyicisinde birlikte, Feedapi almak ve kullanmakta olduğunuz düğümün ne tür oluşturmak bir görüntü CCK alana RSS alanından görüntü eşleme değil?

Bu çok kolay ve hatta kullanıcı arayüzü ile bunu yapabilirsiniz.

Sadece feedapi, feedapi düğümü (bu modülün tam adı emin değilim), feedapi eşleştiricisini etkinleştirmek ve bir besleme oluşturun.

Eğer beslemeyi oluşturduktan sonra, besleme düğümde (siz de genel olarak yem içerik türü için yapabilirsiniz) haritasına gidin ve yem öğeleri hangi düğüm alanları gidecek hangi seçin.

Sen zaten oluşturulmuş oldum eğer bu noktada besleme öğeleri silin ve sonra yem yenilemek isteyeceksiniz. Yapmanız gereken tek şey olmalıdır.

Eğer ayrı bir modül oluşturmanız gerekir mi, ya da sizin için bir çalışma mevcut istiyorsunuz?

Eğer $ op = 'hazırlamak' zaman düğüm nesneye görüntü nesne eklemek için hook_nodeapi kullanıyor musunuz?

Eğer yayınlanmıştır sitedeki yorumları okursanız, göreceksiniz:

To attach a file in a "File" field (i.e. the field type supplied by FileField module) you have to add a "description" item to the field array, like this:

$node->field_file = array(
    array(
    'fid' => 'upload',
    'title' => basename($file_temp),
    'filename' => basename($file_temp),
    'filepath' => $file_temp,
    'filesize' => filesize($file_temp),
    'list' => 1, // always list
    'filemime' => mimedetect_mime($file_temp),
    'description' =>  basename($file_temp),// <-- add this
    ), );

belki çalışır. Ayrıca ödevi bu şekilde başlamak için deneyebilirsiniz:

$node->field_file = array(0 => array(...

Eğer sadece içerik wich kapma iseniz sadece düğümleri vücutta yerelden ziyade mutlak görüntülerin yolunu değiştirmek neden, görüntüleri var, o zaman hiç CCK konusunda endişelenmenize gerek olmayacaktır.

Yapmanız gerekebilir başka iki şey

  1. Zaman kaydetmek "fid" => 'upload', dosyanın FID'a değiştirebilirsiniz. Bu dosyalar tabloda değilse o zaman düzeltmek için ihtiyacınız olacak bir şeydir. Sana ihtiyacım olacağını düşünüyorum feild_file_save_file()

    2.You alanları olarak "başlık" ile imageNode dizi altında, "açıklama" ve "alt" bir dizi "veri" gerekebilir.

Eğer modülü filefield varsa dosya bilgilerini inşa etmek, ayrıca field_file_load() veya field_file_save_file() kullanabilirsiniz. Ayrıntılar için dosyayı filefield/field_file.inc bakın.

Örnek:

$node->field_name[] = field_file_load('sites/default/files/filename.gif');