Posted by orjantorang on June 26, 2008 at 7:57am
Går det att flytta ett taxonomy-fälts placering i inmatningsvyn till Story?
Jag har två taxonomy-fält vilka hamnar i samma gruppram (categories) och mitt önskemål är att flytta det ena fältet så att det hamnar direkt under body-fältet.
Fältet hanterar artikelns källa och jag tycker att autocomplete-funktionen är bra.
Comments
CCK?
Hej! Möjligen är den enklaste lösningen att istället för att använda en taxonomi skapa ett autocomplete-textfält för din nodtyp med CCK och lägga det på den position du vill. Du tappar vissa av funktionerna hos taxonomier, som att kunna klicka på en tag/etikett, men det kanske inte gör något?
Annars får du nog skapa en liten modul som ändrar på ordningen i formuläret...
/ Hannes Lilljequist – SthlmConnection
Content Taxonomy
Du kan också anväda Content Taxonomy för att placera fältet där du vill och även ändra dess utformning.
Thomas Barregren – Webbredaktören
Tack för hjälpen!
Content Taxonomy löste mitt problem med placering och autocomplete.
Ett följdproblem med Content Taxonomy
Det fält jag lade till fungerar utmärkt, men ett befintligt klassificeringsfält (Taxonomy/Kategori) för artiklarna försvann från vyn. Jag lade till fältet igen via Add field så som jag gjorde med det andra fältet. Det fungerar bra, så tillvida att kategorierna alltid syns sist i artikeln även att jag har valt i Display fields. Samt att i redigeringsvyn så kopplas inte registrerade kategorier för artikeln till selectboxen i vyn. Däremot så går det att söka artiklar på båda gamla och nytillagda kategorier. I term_node lagras relationen på samma sätt. Blev varse om att Content Taxonomy åsidosätter Taxonomy så för husfridens skull så gick jag tillbaka till Taxonomy och allt fungerade som vanligt.
Är det någon som har ett nytt spår jag kan testa?
Låt Content Taxonomy lagra taxonomi-vis istället för CCK-vis
Jag hängde inte riktigt med i svängarna, så du får gärna förklara i mer detalj vad som är problemet, men om det är det att Content Taxonomy lagrar termerna för en nod på CCK-vis istället för på taxonomy-vis, så är det bara en fråga om konfiguration. För varje vokabulär kan du välja om Content Taxonomy skall lagra informationen på CCK-vis eller Taxonomy-vis eller båda. Detta skiljer just denna CCK/taxonomy-modul från de andra. Lösningen är alltså att låta Content Taxonomy lagra på taxonomi-vis stälet för på CCK-vis. (Förutsatt att jag förstod ditt problem rätt.)
Thomas Barregren – Webbredaktören
Förtydligande av problemet
Jag vill modifiera innehållstypen Story ytterligare. I dag har Story ett klassificerings taxonomy (ekonomi, inrikes...) kopplat till sig, samt lite andra fält. Mitt mål var att lägga till ett fält för källa (till en artikel) med autocomplete funktion. Det gick bra, men användarna ville ha detta fält placerat under Body och inte tillsammans med det befintliga klassificerings taxonomy (vilket är fallet om jag använder mig av ett ytterligare taxonomy, de hamnar i samma grupp-ram).
Då valde jag Content Taxonomy och jag kunde placera fältet där jag ville. Dock åsidosätts det vanliga taxonomy då och vårt fält för klassificering av artiklar försvinner ur vyn för registrering/redigering. Om jag kopplar till denna taxonomy via Content Taxonomy fungerar det bra också, så när som på att de gamla artiklarna, i redigeringsläget inte "hittar" sin/sina klassificeringar, trots att de finns på samma ställe i databasen (term_node) , som de nya artiklarna gör. Jag har valt att spara endast på Taxonomy-vis.
Det spontana för mig i det läget var att försöka via kod att modifiera modulen så att den hittar de gamla, men jag är så pass ny att jag inte vet vilka konsevenser det får för övriga delar. Jag ska kika på Form Defaults och hook_form_alter, vilket nämns nedan.
Håller med Itangalo, ett mycket bra community!
Om du bara vill flytta
Om du bara vill flytta select-fälten för Taxonomy är nog detta den enklaste vägen att gå:
http://drupal.org/project/formdefaults
I värsta fall får du skriva en liten modul som implementerar hook_form_alter.
Jakob Persson
Webbredaktören - www.webbredaktoren.se
Jakob Persson – Leancept – Results-only digital and marketing consultants – Personal blog
hook_form_alter?
Jag har hört hook_form_alter nämnas rätt många gånger (oftast i Lullabots posädning som alla här på forumet borde lyssna på om de inte redan gör det). Som icke-programmerare har jag dock ingen aning om vad den gör, men det verkar vara mer eller mindre magiskt.
Är någon sugen på att skriva en ny discussion eller wikisida för att berätta vad man kan göra med hook_form_alter?
(Risken finns ju också att funktionen inte är användbar för någon som inte redan har programmerat Drupal så mycket att man redan vet vad hook_form_alter gör, och i så fall vore en sån sida rätt meningslös.)
Hej!
//Johan Falk, Uppsala
hook_form_alter()
Den används för att förändra formulär, ungefär som namnet antyder. Alla formulär som visas i Drupal, vare sig de genereras av Drupalkärnan eller en tilläggsmodul, kan modifieras av andra moduler innan de visas. Och det är inte bara ytliga ändringar av själva formulärfälten som kan ändras – man kan också styra vad som händer när formuläret skickas in osv. Oerhört användbart och flexibelt – särskilt med tanke på att i stort sett allt man gör i en webbapplikation sker med formulär!
Om man vill veta mer om hook_form_alter() och Drupal-utveckling i allmänhet så är api.drupal.org en viktig resurs. Där finns varenda funktion i systemet dokumenterad, inklusive alla hooks som tillsammans utgör det system som olika delar av systemet kommunicerar med varandra. (Andra centrala hooks i Drupal är hook_menu() och hook_nodeapi()).
Det finns gott om guider på engelska om hur man kommer igång med modulutveckling, använder hooks osv. Jag tror inte att behovet är lika stort för svenskspråkiga guider på det här området som det är när det gäller mer användarrelaterade frågor. Men det skulle ju inte skada såklart.
/ Hannes Lilljequist – SthlmConnection
Nu hann Hannes skriva det
Nu hann Hannes skriva det jag tänkte skriva så jag nöjer mig med ett enkelt exempel på vad man kan göra med hook_form_alter. Alla formulär i Drupal 4.7 och senare använder sig av Forms API, eller FAPI som det ibland kallas. Med Forms API kan man beskriva, validera och rendera (visa som HTML) formulär på ett säkert sätt som skyddar din webbplats från XSRF (Cross-Site Request Forgery, betyder att formulär submittas oavsiktligt).
Med hook_form_alter kan man göra saker med ett formulär, t ex ändra ordningen på dess element, sätta default-värden och egenskaper hos element. Ett exempel för D5 som gör så att fältet för att ange ifall man vill skapa en ny revision av noden när man sparar den görs inaktivt och hindrar en icke-administratör (som inte är tekniskt bevandrad för denna lösning är inte perfekt) möjlighet att kryssa ur den:
<?phpfunction module_name_form_alter($form_id, &$form) {
if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id) {
if(!user_access('administer site configuration')) {
$form['options']['revision']['#disabled'] = true;
}
}
}
?>
Jakob Persson
Webbredaktören - www.webbredaktoren.se
Jakob Persson – Leancept – Results-only digital and marketing consultants – Personal blog
Man tackar!
Drupal må ha gränssnitt och funktioner som är långt ifrån uppenbara, men jag måste säga att användarcommunityt mer än kompenserar för det. We rock.
Stort tack för förtydliganden och exempel!
//Johan Falk, Uppsala