Komma åt fält skapade i en modul via en View

Events happening in the community are now at Drupal community events on www.drupal.org.
filijonka's picture

Hej

Mitt kunskapsläge är sådant att jag är relativt ny till Drupal men varit med länge inom programmering- och php-världen.

Har ett litet problem som antagligen har en enkel lösning men som jag inte hittar någon lösning på trots ett idogt sökande på webben.

Jag har skapat en content type där jag har ett antal fält för att lägga till bilder och några textfält. Nu är det tyvärr inte så enkelt utan till denna content typen har jag skapat en modul då jag även måste lägga till ett antal fält baserade på data ifrån en annan databas än drupals och dessutom från annan server. Inga problem med det. Kan utan problem skapa content och få dem korrekta (dvs alla egendefinerade tabeller som behövs för att hålla data + de drupal skapat fungerar).

Nu vill jag ju då presentera innehållet och har testat två olika sätt:
Det ena sättat är ju att skapa en vy (view modulen) och problemet som jag då stöter på är att de fält som jag har skapat via modulen inte verkar vara kända när jag skapar vyn, dvs dessa dyker inte upp som valbara fält. Finns det något sätt att via modulen se till att dessa exporteras så de blir kända?

När jag inte hittade någon lösning på ovanstående tänkte jag att men då gör jag det via modulen istället att jag returnerar datan och formaterar innehållet med templates. Använder samma SQL-sats som vyn och det fungerar ju bra utom en sak som ni antagligen har en väldigt enkel lösning på men som jag inte kommer på, hur returnerar jag en bild? De tabeller som skapas för content typen av Drupal innehåller för bildfälten fältnamn_fid, fältnamn_list, fältnamn_data. Hur får jag tag på bilden i sig? Sökvägen till katalogen där bilden ligger är inga problem men vilken bilden är, dvs filens namn?

tack på förhand för er hjälp, mvh Peter.

Comments

Views' field handlers

frjo's picture

Bygg egna Views' field handlers för de nya fälten.

http://views-help.doc.logrus.com/help/views/api-handlers
http://views.doc.logrus.com/

views field handlers

filijonka's picture

hej

försöker få detta att fungera men får hela tiden i views att fältet är Broken/missing handler.

detta har jag gjort:

i modulnamn.module har jag skapat en funktion som heter modulnamn_views_api som returnerar en array.

i modulnamn.views_default.inc har jag skapat funcktionen med namnet modulnamn_views_default_views som jag exporterat ifrån en view. Den fungerar, har lagt till fältet:
'price' => array(
'label' => 'Price',
'alter' => array(
'alter_text' => 0,
'text' => '',
'make_link' => 0,
'path' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'strip_tags' => 0,
'html' => 0,
),
'link_to_node' => 0,
'exclude' => 0,
'id' => 'price',
'relationship' => 'none',
)

i modulnamn.views.inc

har jag implementerat hook_views_handler på detta vis:
$handlers =array(
'info' => array(
'path' => drupal_get_path('module', 'modulnamn'),
),
'handlers' => array(
'views_handler_field_price' => array(
'parent' => 'views_handler_field'),
),
);
return $handlers;

(info hade väl egentligen inte behövts i detta fallet).

Här har jag nu skapat en fil som heter views_handler_field_price.inc och i denna en class som heter samma som filen och extends views_handler_field

i denna filen vet jag inte riktigt vad jag skall skriva men jag har gjort en
initfunktion som bara gör en print.

de fält som jag kommer definiera själv kommer inte använda drupals databas utan en annan databas vars åtkomst finns via ett interface.

Vad är det jag missuppfattar/gör fel?

Kanske ta en titt på hur

frjo's picture

Kanske ta en titt på hur någon enkel CCK module gör, t ex. http://drupal.org/project/link.

Hittade denna också som kan vara läsvärd Expose database fields to views in a custom drupal module | Menhir-effect blog.

Implementerar du

tobiassjosten's picture

Implementerar du hook_views_data? Jag är osäker på ifall det är felet som ger "missing/broken handler" men du behöver den hooken för att definiera dina tabeller, så att Views kan leka snällt med dem.


Tobias Sjösten | NodeOne

Lösningen

filijonka's picture

Hej

Jag vet inte riktigt hur detta forumet fungerar ännu då jag är såpass ny men jag brukar alltid försöka skriva tillbaka och kanske någon annan kan lära sig av det jag gjort.

Min ursprungliga tanke var att den view som jag exporterade skulle jag i min modul lägga till ett antal fält. Till varje sådant fält skulle jag skapa mina egna handlers till. Allt detta i modulnamn.views_default.inc. Tyvärr fick jag aldrig detta att fungera, fick hela tiden broken handler. Jag tycker att det borde rent teoretisk sätt fungera, baserat på de länkar och tips jag har fått av er.

Så jag började kika på det som Tobias föreslog att hook_views_data skulle implementeras och det löste inte ovanstående MEN gav mig en ny lösning. Jag tog bort det som låg i modulnamn.views_default.inc och implementerade bara hook_views_data och då kunde jag till min view (i views edit) lägga till det fält som jag definierat och då var det inga problem med handlers (den registrering som sker i modulnamn_views_handlers fungerar då).

mvh Peter

tack har börjat kika på

filijonka's picture

tack har börjat kika på detta, har dock just nu problem med att spara ett block i en region inte fungerar. Men skall bygga en modul ifrån scratch så får vi se om det löser sig.

mvh Peter

Sweden

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week