Posts Tagged ‘ CMS

5 tips til hurtigere udvikling af Dynamicweb moduler

Dynamicweb eCommeerce Logo

Udvikler du moduler til Dynamicweb, men syntes det går lidt sløvt? Kan du ikke få lov til at debugge dine moduler ordentligt? Du sidder måske enda og flytter dine assemblies manuelt? Så kan nedenstående tips være noget for dig.

#1 Sæt flere Dynamicweb løsninger op på samme IIS

Det er super let at sætte flere forskellige løsninger op på din egen Windows maskine, og med flere løsninger følger muligheden for at udvikle de samme typer moduler/extenders uden at skulle skifte rundt på IIS’en eller andet.

Du ved med garanti hvor du kan hente Dynamicweb applikationen, så det springer jeg over.

Start i stedet med at sætte en løsning op et sted på din maskine. jeg bruger normalt denne struktur til mine løsninger:

<br />
c:\developer\dynamicweb\solution1\Application<br />
c:\developer\dynamicweb\solution1\Files</p>
<p>c:\developer\dynamicweb\solution2\Application<br />
c:\developer\dynamicweb\solution2\Files<br />

Når du har filerne på plads skal du starte IIS’en op og herefter skal du sættes et ny website op:

Læg mærke til at jeg har angiver ad.local i Værtsnavn feltet, værstsnavnet er det domæne som bliver knyttet på websitet, og det er ad.local jeg vil kunne skrive i min browser for at kalde løsningen frem. Her efter sætter der en virtuel mappe op til Files mappen, og så er IISen klar.

Når IIS’en er sat op, skal vi fortælle windows at når jeg skriver ad.local i min browser, så skal den kigge på min egen IIS, i stedet for ude på internettet. Til dette formål har windows en fil, som ligger gemt i Windows mappen “C:\Windows\System32\drivers\etc”. Filen hedder hosts og kan åbnes i notepad eller lignende.
Ved at indsætte følgende linie mapper du http://ad.local til din egen IIS

<br />
127.0.0.1    ad.local<br />

(lav en tabulering mellem IP’en og domænet.)

Gentag processen med de løsninger du har kørende på din maskine, og sørg blot for at dine lokale domæner er unikke.

Host filen kan også bruges til at teste om en host header er sat op på en ny webserver.

#2 Brug post-build event i Visual studio

Med post-build eventen i Visual studio, kan du bestemme hvad der skal ske når du har bygget dit projekt.

Benyt muligheden til at flytte dine Assemblies og Custom modules file over i din lokale løsning, eller jeres udviklings server. Så sparer du en masse tid og bøvl.

Du finder fanen “Build events” under properties på dit projekt.

Build Events fanen i Visual studio

På fanen har du mulighed for at indtaste hvilke kommandoer som skal kører før og/eller efter du bygger dit projekt. Det er dog Post-build eventen som for mig er mest interessant.

Klik på “Edit Post-build …” for at bringe en lille editor frem hvor i du kan se hvilke makroer du er til rådighed.

Post-build Event command line

Ved at benytte XCOPY kommandoen kan man kopiere de filer og mapper over i vores DW løsning som man har behov for.
Hver kommando skal stå på en linie for sig selv. men så er det også bare at gå i gang.

Med nedenstående kald, kopiere jeg f.eks. min byggede assembly, samt mine modul filer over i min lokale Dynamicweb løsning.

<br />
XCOPY $(TargetDir)Demo.* C:\Developer\Dynamicweb\Solution1\Application\bin<br />
XCOPY $(ProjectDir)CustomModules\MyModule\*.* C:\Developer\Dynamicweb\Solution1\Application\CustomModules\MyModule<br />

#3 Attach to process er din ven

Med Attach to process kan du hooke Visual Studio op mod et websitet som kører på din lokale IIS,  og på den måde kører debugging på en Dynamciweb løsning.

Du finder Attach to process under menuen “Tools -> Attach to process”, du kan også tryke “ctrl + alt + p”, i dialogen skal du attache til processen w3p.exe.

Attach to process

Så snart du attacher til processen, vil Visual studio gå i debug mode og du kan nu indsætte breakpoints og arbejde med din lokal løsning som var den i normal debug mode.

#4 Visual studio macros FTW

Lav dig en makro som bygger dit projekt og attacher til w3p.exe, du bliver glad for det i længden.
Der er jo alligevel lidt langt ind til “Attach to process” og man skal jo scrolle lidt for at finde w3p.exe, og det skal gøres hver gang du har lavet en rettelse i din kode.

Med en makro, kan du optage en sekvens af handlingen og afspille dem så tit du lyster. Du kan knytte din makro på en menu eller en genvejstast så du har den lige ved hånden.

#5 Brug Dynamicwebs Visual studio templates

Dynamicweb har lavet Visual studio templates til mage af deres Extenders. Hvis du ikke allerede brugere dem, så kig forbi http://engage.dynamicweb-cms.com/Custom-Modules-397.aspx og hent dem.

Hvis du har problemer med at få dem til at fungere i VS2010, så hop forbi Imar Spaanjaars blog indlæg som beskriver hvordan du får det til at fungere.

#Bonus:  Sæt dig ind i databasen

Nogle gange vil man komme til kort med API’et fordi det ikke helt gør som tror eller forventer, og så er det rart hvis man har godt styr på hvordan databasen er skruet sammen, da mange af  API funktionerne hedder det sammen som tabellerne i databasen.

Hvis man skal f.eks. arbejder med eCommerce så er det helt klart et must at vide hvilke tabellen der bliver brugt, for du kan være sikker på at myProduct.save() ikke sætter alle de relationer som skal til for at dit produkt bliver vist :-)

Afslutning

Hvis ikke du kendte til ovenstående tips, så håber jeg du har fået et par ideer til hvordan du kan klare rutine opgaverne lidt hurtigere, Og dermed får du mere tid til det der virkeligt er sjovt, at kode modulerne.

Hvis du kunne bruge mine tips, eller du har andre gode råd så skriv en kommentar.

Dynamicweb på Windows 7 64bit

Jeg har et par aftener i træk nu forsøgt at få en lokal Dynamicweb løsning til at kører på min maskine. Men jeg stødte igen og igen på den samme fejl når jeg forsøgte at kalde min løsning.

Fejlen jeg fik kan ses her:

Jeg kunne fint få præcis samme løsning/opsætning til at kører på min laptop, så det var naturligt at se på hvad forskellen egentlig var på de maskiner. det der sikkert var noget her som gav problemer.

Den væsentligste forskel var at den ene maskine kører Windows 7 32bit og den anden 64bit.

Efter lidt søgning på nettet faldt jeg over denne adresse http://crmaccelerators.codeplex.com/workitem/3191?ProjectName=crmaccelerators, hvor en gut har oplevet samme fejl som jeg med en 64bit windows, til sidst på siden er et link til hvor man kan hente en 64bit udgave af Microsoft Dynamics CRM SDK.

(Link til Microsoft Dynamics SDK: http://www.microsoft.com/downloads/details.aspx?FamilyID=82E632A7-FAF9-41E0-8EC1-A2662AAE9DFB&displaylang=en)

Jeg kiggede i BIN mappen til Dynamicweb løsningen, og jeg kunne her se at det lå 3 CRM filer “microsoft.crm.sdk.dll”, “microsoft.crm.sdktypeproxy.dll” og “microsoft.crm.sdktypeproxy.xmlserializers.dll”.

Jeg hentede SDKen fra ovenstående link og fandt efter udpakning af SDKen, de 3 filer i en 64bit udgave (sdk\bin\64bit). Efterfølgende overskrev jeg de 3 filer i Dynamicweb BIN mappen med de 3 fra SDKen. Dette løste mit problem og jeg kunne efterfølgende få løsningen til at kører som normalt.

Endnu engang blev man reddet af en gang fornuftig Google søgning :-)

Identitet af Application Pool på IIS7

p>Jeg sad her til aften og ville sætte en Dynamicweb løsning op på min egen maskine, og her stødte jeg ind i et irriterende problem som jeg ved jeg ikke er den eneste der har bøvlet med.
Efter at have sat et nyt website op på IIS’en og givet den et lokalt domæne, kaldte jeg URL’en men fik denne fejl:

<br />
System.Security.SecurityException: Anmodningen om tilladelsen af typen 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' mislykkedes.<br />

Jeg tjekkede derfor om jeg havde givet de fornødne rettigheder til NETWORK SERVICEs, og der var ikke her problemet lå.
Efterfølgende tjekkede jeg om mit nye website kørte på den korrekte Application pool, og det viste sig her, at AppPool’en ikke kørte som NETWORK SERVICEs, og derfor blev de rettigheder jeg havde sat slet ikke brugt.

Jeg fandt løsningen på denne side: http://learn.iis.net/page.aspx/624/application-pool-identities/

Top 5 URL parametre i Dynamicweb

Jeg har lavet en top 5 liste over de fedeste URL parametre som du kan smide op i URL’en på en Dynamicweb løsning. Så ved du ikke helt hvad du kaste op i URL’en, så kan du prøve en af de fem bedste, eller dem alle sammen hvis du er lidt naughty.

Den uofficielle top 5

1. ?ID=[side id]
Den her kommer du ikke uden om! Selv om brugervenlige URL’er nærmest er et must i dag, så indtager ?ID= stadig en solid første plads.

2. ?Purge=True
Hvis din template rettelse ikke slå igennem med det samme, så er det sikkert den her du lige skal have smidt i URLen.
Den sørger lige for at intent bliver læst fra cachen når siden renderes! NICE!

3.  ?SaveTemplateXml=True og ?SaveXml=True
Disse 2 deler tredje pladsen, da de stortset gør det samme.
De sørger for at der bliver gemt en XML fil, så du kan se hvilke data du har tilgængelig i dine XSLT templates.
?SaveXml=True gemmer XML for dine menuer, og ?SaveTemplateXml=True gemmer for resten. (forudsat at du bruger XSLT templates.)

4. ?Styleid=[id]
?Styleid=[id] er efterfølgeren til ?PageTemplate=[template fil] (som ikke virker længere). ?Styleid=[id] gør det muligt at skifte dit stylesheet ud på en given side, så du f.eks. kan teste et nyt layout eller en CSS ændring uden de store problemer.

5. ?MasterTemplate=[template fil]
?MasterTemplate=[template fil] gør det muligt at skifte din master template ud. Dette er f.eks. nytigt hvis du skal have lavet et XML udtræk eller have rendere nogle elementer til et AJAX kald.

Dem der ikke kom med

Jeg ved at der findes en masse andre tags som f.eks. Printfriendly=[id], men for at være helt ærlig, så er det en dødsejler, og print burde håndteres med et CSS dokument til print, så brugerne bare kan trykke ctrl+p.

Et anden tag som heller ikke når op på min top 5 er ?Pdf=True, det er stadig lidt buggy, og fungerer ikke på alle sider. Men når det kommer til at spille kan jeg sagtens se potentialet i det, hvis det f.eks. kan kombineres med de andre tags.

Det er værd at nævne at kombinationen af 4 og 5 gør det muligt uden brug af ekstra sproglag, at lave et helt blankt lag, som f.eks. kan bruge til at rendere XML til dine flash elementer eller jQuery ting, og hvem kan ikke li’ jQuery?

Hvis du syntes min top 5 er helt hen i vejret, eller du mener at der er en parameter som bare er meget bedre end dem jeg har listet, så skriv din egen top 5 i en kommentar. Måske kan du et tag jeg slet ikke kender til :)

[Edit: 18-05-2010]
Jeg er blevet gjort opmærksom på en ekstra parameter som kan være nyttige.

?dbstat=true
renderer informationer om database forbindelser ud på siden. Dette kan være nyttigt hvis man skal tjekke om der bliver lavet unødvendigt mange kald til databasen, f.eks. pga. custom moduler.


Nyheder v2 – modulet over dem alle

I den tid jeg har arbejdet med Dyamicweb CMS, er Nyheder V2 nok det modul som jeg oftest har brugt og misbrugt (på den gode måde). Moduler kan, som navnet antyder, bruges til at håndtere nyheder, men det kan så meget meget mere end det.

Bortset fra traditionelle nyhedslister,  så kan man lave billedgallerier, presserum, XML udtræk, forhandlerlister og meget mere!

Nyheder V2 er et af de mest alsidige moduler som Dynamicweb tilbyder, så hvis man vil spare penge på modul indkøb, så kan man komme utroligt langt blot med Nyheder V2.

Modulets styrke findes i dens 2 visnings typer, dens evnen til at oprette et utal af ekstra nyhedsfelter og kategori opdelingen.

Herunder kan i se nogle af de sider hvor Nyheder V2 modulet er blevet udnyttet til fulde.

MCH Messecenter Herning

MCH.dk er Nyhedsmodulet brugt på traditionel vis til at Events

Arkitec

Arkitec har man givet den gav og lavet en fed  visning af referencer.

Refence side på Arkitech.dk

Kitchn

Kitchn har man brugt modulet til at vise de forskellige køkkener.

Køkkenvisning på Kitchn

Kender du andre steder hvor man har lavet noge fedt med Nyheder V2, så skriv en kommentar. Det er altid fedt at se hvordan man kan udnytte de moduler man har bedst muligt.

Favorit moduler til Drupal

Drupal er et stærkt content management system, men det kan med et par ekstra moduler hurtigt blive endnu bedre. I dette indlæg vil jeg liste nogle af de modul som jeg altid installere når der skal bygges websites i Drupal.

Administration menu

Modulet tilføjer en menubjælke i toppen som giver adgang til alle moduler og områder i administrationen.

En fed lille ekstra feature er er man hurtigt kan tømme Drupals cache, hvilket er et must når man arbejder med templates.

Du kan læse mere om modulet og hente der her : Administration menu

Views

Views er modulet som ikke kan undværes. Modulet gør det muligt at lave forskellige udtrak af nærmest alle oplysninger i Drupal databasen.

Et af de scenarier hvor jeg ofte bruger Views, er når jeg skal lave en nyhedsoversigt eller en relaterede nyheds liste. Her sætter man modulet op til at hente alle nyheder ud, og derefter sætter man forskellige filtre op.

Hvis jeg kun havde plads til et ekstra modul i Drupal, så ville det være Views

Du kan læse mere om modulet og hente der her : Views

Content Construction Kit (CCK)

CCK modulet gør det muligt at udvide noder med ekstra felter. Felterne kan være af forskellige typer, som f.eks. tekst, billed eller dato. Det findes et hav af moduler som udvider CCK.

Views modulet er “integreret” med CCK, så man når man laver sine udtræk med Views kan trække fra sine ekstra CCK felter.

Du kan læse mere om modulet og hente der her : CCK

Global Redirect

Global Redirect er et modul som udvider hvordan Drupal håndtere dine URL’er på. En af de vigtigste features er at den sørger for at man ikke har to URL’er som viser der samme indhold.

Drupal laver altid en URL som f.eks. ‘www.domæne.dk/node/1′, men med Global Redirect oversættes adressen altid til den kanoniske URL som kunne være ‘www.domæne.dk/side/min_side’

Modulet kræver at man har Clean URLs aktivere i Drupal.

Du kan læse mere om modulet og hente der her : Globel Redirect

CKEditor / Wysiwyg

CKEditor modulet udvider Drupal med en ny tekst editor. Editoren indeholder alle de funktioner man kan forvente, og der er muligt at definere hvilke tools der skal fremkomme i værktøjslinien.

CKEditor kræver Wysiwyg modulet, som er det modul der binder Drupal sammen med andre editorer.

CKEditor kræver at man først henter selve editoren fra http://ckeditor.com/ og derefter Wysiwyg fra http://drupal.org/project/wysiwyg.

Du kan læse mere om modulet og hente det her : http://drupal.org/project/ckeditor

Har du et favorit modul, eller syntes du der mangler noget på listen, så skriv en kommentar så før jeg tilføjet modulet til listen.

Min Drupal tjekliste

Når man skal i gang med at sætte et nyt site op i Drupal, så kan man godt blive overvældet over de mange indstillinger, som man skal ind og ændre.

Jeg havde i starten lidt problemer med at finde alle de steder jeg skulle huske og rette, og når man så måske også har nogle ekstra moduler (om hvem har ikke det) , så kan det hurtigt blive uoverskueligt.

Jeg har med tiden opbygget en mental tjekliste over de indstillingen som jeg skal huske og rette, og til gavn for mine kolleger og andre som måske har lidt svært ved at huske, så har jeg valgt at få den skrevet ned, og det blev så her på bloggen.

Min Tjekliste

Date and time

  1. Ret Default time zone til den korrekte tidszonen, jeg får tit hostet mine løsninger på amerikanske servere, så ofte er tidszonen ikke GMT +1
  2. Sæt First day of week til mandag
  3. Tilføj dansk dato format til First day of week.
    Jeg sætter Short date til “d-m-Y H:i” som giver mig en dato som denne 29-03-2010 15:01. Medium og long en en stardard værdi som passe fint til mine behov.

File system

  1. Ret File system path til : “files”
    Det giver kortere URL’er når man linker til filer og billeder, og det er lettere at finde mappen via FTP.
  2. Ret Temporary directory til en folder som findes på serveren.
    Tit er stien på serveren, og på den egen maskine forskellig, derfor bruger angiver jeg “tmp”, hvilket gør at midlertidige filer skrives til folderen tmp i roden af mit website.

Clean URLs

  1. Tjek at Clean URLs er sat til “Enabled”

På serveren

  1. Opret Modules, Libraries og Themes folderne under \sites\all.
    Det er i disse folder der skal ligges moduler, themes og f.eks. en ny editor ind, så jeg opretter dem altid fra starten af, så de ligger klar når jeg begynder at sætte mit site op.

Når jeg har klaret ovenstående så begynder jeg at sætte mit Theme op, men det må blive en historie til en anden dag.