Ik wil op vraag van een collega een heleboel nieuwe nodes toevoegen aan mijn Drupal installatie (5.3, straks 5.5). Het gaat specifiek om items van de "news page"-vorm. Ik heb daaromtrent enkele vraagjes:
Welke tabellen moet ik allemaal aanpassen als ik een node toevoeg? Ik heb al gevonden dat ik de tabellen "node" (en uiteraard "news page") moet aanpassen. Zijn er nog tabellen die dan aangepast moeten worden, bijv. voor de sitemap?
Ik wens de verschillende nodes in te vullen met een bepaalde tekst die ik uit een andere databasetabel haal. Hoe kan ik dat best doen, er zijn namelijk meerdere velden die ik moet invullen?
Auteur:
Rodeo
Datum van inzending:
zaterdag 8 december 2007 - 13:49
Door george@dynapres.nl op 8 december, 2007 - 14:13
1. Om nodes toe te voegen voor b.v. een import/conversie gebruik je het beste de Drupal API's door in PHP code een node object te construeren en deze op te slaan met de functie node_save() [1]. Directe manipulatie van de db tabellen is een minder goed idee.
2. Als je een custom node aanmaakt, b.v. met CCK, kun je de velden invullen door de respectievelijke velden in het PHP object te definiëren. Als je wilt weten welke structuur je specifieke CCK node object heeft gebruik je b.v.
Kijk eens naar de devel module [2], die bevat voorbeeldcode hoe je programmatisch nodes kunt aanmaken. De module importexportapi [3] geeft je wellicht ook meer info.
Met http://drupal.org/project/node_import kan je aan de hand van een uitgebreide wizard ook content importeren uit een CSV-bestand, waarbij je de aanwezige velden mapt op velden in je content-type. Ook taxonomy terms en metadata als auteur, datum, published, etc kunnen geïmporteerd worden.
Dit is misschien geen oplossing voor jouw specifiek probleem (bv als je periodiek geautomiseerde imports wil doen), maar in veel gevallen is dit een snellere oplossing dat zelf een import te gaan schrijven.
1. Om nodes toe te voegen voor b.v. een import/conversie gebruik je het beste de Drupal API's door in PHP code een node object te construeren en deze op te slaan met de functie node_save() [1]. Directe manipulatie van de db tabellen is een minder goed idee.
2. Als je een custom node aanmaakt, b.v. met CCK, kun je de velden invullen door de respectievelijke velden in het PHP object te definiëren. Als je wilt weten welke structuur je specifieke CCK node object heeft gebruik je b.v.
<?php
$node = node_load(123); // 123 = node id
print_r($node);
?>
Kijk eens naar de devel module [2], die bevat voorbeeldcode hoe je programmatisch nodes kunt aanmaken. De module importexportapi [3] geeft je wellicht ook meer info.
[1] http://api.drupal.org/api/function/node_save/5
[2] http://drupal.org/project/devel
[3] http://drupal.org/project/importexportapi
Dynapres.nl
Je kunt inderdaad beter de API gebruiken en niet zomaar in de database. Hier is nog een goede link voor als je met cck velden werkt:
http://www.civicactions.com/blog/cck_import_and_update
Met http://drupal.org/project/node_import kan je aan de hand van een uitgebreide wizard ook content importeren uit een CSV-bestand, waarbij je de aanwezige velden mapt op velden in je content-type. Ook taxonomy terms en metadata als auteur, datum, published, etc kunnen geïmporteerd worden.
Dit is misschien geen oplossing voor jouw specifiek probleem (bv als je periodiek geautomiseerde imports wil doen), maar in veel gevallen is dit een snellere oplossing dat zelf een import te gaan schrijven.
Ok, ik zie in http://drupal.org/project/importexportapi en http://drupal.org/project/node_import wel iets dat ik kan gebruiken. Dank!
~~~~