www.netsi.dk

"The internet is just a layer on the real world" (don't forget that!)

Notes from: Dynamicweb Webinar – Items based structure – sneak preview

My raw from the webinar on 8th November about soon to be released in 8.2 – please understand that the notes are raw :-)

20121108-135957.jpg

Create using backend
Automatic create table dbo.itemtype_event

1. Create using DB, usefull for importing data
Name the table like: “ItemType_” + itemname, two required column id and pageid
=>; automatically avail. In Dynamicweb

2. Create using .net code
(Can it be done using xslt inline code?)
Must be a public class
Reference to dw.content.items
Inherit from Item
(Delete when contents exists?)
Set field type using .net attr., also specify group, custem names and such

Find item types here: Management >; system >; item types

3. Create using schema – xml
All items are stored in files system items – ready to copy to other solutions

4. Creating content based on Item types
They will apear below a page, so you need a “normal” Dynamicweb page before you can add content to a website.

Questions from partners:

  1. New paragraph module ItemPublisher can output items
    From page or area
    List and details view
    Edit items in frontend
  2. Can you control which items can apper under an item?
    Yes. In backend you can choose restrictions using chechbox, which types can be inserted. Also support for custom rules in .net
  3. Is richtexteditor around?
    Yes.tool can be customized using config file.
  4. Is there a reason for page and not paragraph levl?
    Yes,….
  5. Show details on same page?
    Yes. Yes add itemid= to querystring
  6. Support for master, items with items?
    Hope to support in future
  7. Module included in standard license?
    Cannot answer (only a developer) yes standard feature!
  8. Can we add more field types?
    We have many… Including editable list, can be extended. You CAN. Create your own.
    F.i. A type autocomplete.
  9. Can you make custem tags?
    Yes. You can write template extender
  10. Can you extend with custom filters to list?
    Not now, but in future.
  11. Can we control which itemtypes can be inserted?
    No, not under a normal page.
  12. Does it scale well?
    Yes, ofcause it does. (With some notes….) it should do.
  13. Inheritence? Between item types
    They discuss some ways…
  14. Could you create item types using inline C# code in XSLT?
    Pavel could not answer :-)

Notes:
Item types can (in future) have default layout type
Filetype filemanager will be a type on release.
You cannot mix paragraph and items on a page (guess you have to use item publisher module)

Will be in the 27th of november release

Share

Use <!–@ParagraphContainer–> to make paragraphs render different content depending on placement #Dynamicweb

With the Layout system you define various content areas in the Layout file like this:

Part of example layout template:


<div id="left" class="dwcontent" title="Left content" settings="paragraph:left.html">We do not want module content here, for some strange reason</div>

<div id="main" class="dwcontent" title="Main content" settings="paragraph:main.html"></div>

<div id="right" class="dwcontent" title="Right content" settings="paragraph:right.html"></div>

 

This will create a three column page. Imagine that in the left col we do not want the user to be able to add paragraphs which renders module output. We can do that by adding tests for the ParagraphContainer value in the paragraph like this:

Part of example paragraph template


<!--@If(ParagraphContainer!="left")-->

output your content here

<!--@EndIf-->

The above test will ensure that no content will be returned if you use the paragraph in the left coloum. Combined with a selected default paragraphtemplate (settings="paragraph:left.html") as you can see in the layout file above, will help ensuring that editors will

a) Get a head start with choise of template (a default will be selected for them, related to which content area they add content to

b) No paragraph templates outputing module content can be added to the left coloum

 

A wish for improvement to the Dynamicweb template system

This leads to my wish for an improvement in the Dynamicweb template system: Please add two tags from the paragraphlevel template to the module template:

a) ParagraphContainer – so that the module template will be aware of in which layout placeholder it is rendered

b) ParagraphName – Which paragraph template is used? Allows the module content to be controled by the paragraph used for it. This would actually also be relevant to add to the paragraph template too.

Share

Blog indlæg om opdateret nyhedsmodul i Dynamicweb 8

version 8 er blevet releaset i december 2011 og det indeholder en række forbedringer,
for eksempel er nyhedsmodulet blevet opgraderet. Peter Terkildsen har skrevet et blog indlæg på blog.bleau.dk om det opgraderede i Dynamicweb 8.

Læs blandt andet om:

  • Søgning i nyheder på tværs af alle nyhedskategorier
  • Søgemaskinevenlige URL’er når man ser en enkelt nyhed
  • Nyheder kan indgå i flere kategorier

Læs hele blog indlæget her: http://blog.bleau.dk/2011/nye-muligheder-i-nyhedsmodulet-i-dynamicweb-8/

Share

Dynamicweb afsnits tekst editor – skabeloner og hvordan man anvender dem

Nu er der en code til at lave (skabeloner) til paragraph text editor og en god guide (på engelsk) som gennemgår installation og med et eksempel. Så nu er det bare at huske det når man implementerer løsninger! :-)

Code snippet for creating template for the #dynamicweb paragraph texteditor – mytemplates.xml http://goo.gl/DlUwG

Share

SQL: Get a list of all tables in a database

Sometimes if you use a system where you do not have a Manager at hand, perhaps only a web based query window you may find it hard to keep track of all defined tables in the system. I for one cannot remember all the tables used in for instance Dynamicweb CMS. Please note that the example query below is for Microsoft SQL server, I am not sure if it works in other SQL server environments.

Being logged in to the system as administrator you can get a SQL Query textarea like this one below. You can then enter:

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
order by TABLE_NAME

 

The Query Editor of Dynamicweb CMS - very handy

Links

Share

Dynamicweb CMS: Poll about errors in Dynamicweb…

I am prepearing myself for the upcoming blog with focus on features related to the system and its part. For a starter I will try out some things for now, here on this blog. Here is one such test – a Poll. Feel free to try it out, and if you have any ideas what should be on the www.dwfeatures.com blog, please feel free to write it here, or give me a peep on twitter: http://twitter.com/netsi1964

Share

The getimage.aspx of Dynamicweb CMS finally can crop as I always wanted it to!

Being a heavy user of Dynamicweb CMS I am very happy to discover that the latest version of the software has made the utility for cropping/scaling images work as I (IMHO) always have wished it to do! It is now possibel to specify both with and height and having the image fit inside the area keeping the aspect ratio of the image! Hurra!

You do know , right?

When you have a design to implement using Dynamicweb CMS and you have a list of items with images – say thumb images, Dynamicweb offers a nice utility which can ensure that the thumbs will have a given dimension. The images are cached on the server, so it is not using unnessesary resources of the server if you use the utility.

The getimage.aspx utility of Dynamicweb CMS

The utility can be found on any Dynamicweb soloution here:

http://[hostname]/Admin/Public/getImage.aspx

Enter the URL above and you will get a nice wizard which will dynamically produce what you need inside your . You can see the wizard above.

What makes things work for my needs!

To ensure that an image fits inside a container with known dimentions you need to:

  • Enter the dimensions (width/height)
  • Select the cropping offset: “Keep aspect ratio”

Try the utility by entering a path to an image – you have to start from “/files…”. When that is done, simply press OK and you will get a preview under the “Results” tab, as you can see below.

The Results tab of the getimage.aspx Dynamicweb utility

Using the Image URL in your templates

When you are happy with the results you should copy the “Image URL” path (highlighed with blue in the above image). The URL for my example is:

/admin/public/getimage.aspx?Image=/files/billeder/300×80.jpg&Format=jpg&Width=200&Height=100&Crop=5

If I were to use this path inside a template, I simply would replace the “/files/billeder/300×80.jpg” with a template tag like “<!--@Ecom:Product.ImageLarge.Clean—->”.

I hope this has helped you! I really find this improvement nice!

links

 

Share

“Hvem skal nu betale?”

Jeg arbejder professionelt med implementering af baserede hjemmesider. Det system jeg arbejder klart mest i er Dynamicweb CMS – et system som efter sigende har omkring 4000 fungerende (et korrekt ord?) hjemmesider i hele verden – primært i norden. Som andre systemer så kommer der jævnligt opdateringer – det er jo dejligt med nye up-to-date funktionalitet. Så langt så godt – men jeg vil gerne prøve at sammenligne kort med en anden branche.

Min Toyota kontra CMS

Jeg er den lykkelige ejer af en Toyota. Tidligere ejede jeg en Yaris og da den var ca. 2 år gammel modtog jeg et brev om at man havde konstateret at der kunne opstå et problem med bremserne under visse ekstreme omstændigheder. Jeg skulle bare køre ind til et selvvalgt Toyota værksted og de ville rette fejlen uden beregning. Hverken mig eller værkstedet ville blive lastet for noget i den forbindelse. Det er service!

Og nu til Dynamicweb CMS… Jeg oplever jævnligt at der opdages fejl som opstår på grund af fejl i Dynamicweb CMS. Jeg arbejder jo som sagt professionelt hos en Dynamicweb CMS Partner (Bleau A/S) og det er nok noget der i ovenstående situation med Toyota må være at betragte som at arbejde på et “autoriseret Dynamicweb værksted”. Selv om Dynamicweb CMS også selv finder fejl og retter dem uden beregning gennem hot-fixes, så er situationen fra før med fejlen på bilen i en Dynamicweb CMS verden normalt noget anderledes:

  1. Brugeren (chaufføren) oplever at noget ikke fungerer i hans “bil” (hans hjemme side)
  2. Han kontakter værkstedet
  3. Værkstedet må bruge megen tid på at fejlfinde og bevise overfor Dynamicweb CMS support at fejlen er noget der ligger i selve Dynamicweb
  4. Dynamicweb CMS anerkender måske at der er en fejl, men det medfører ikke at fejlen rettes. Fejl prioriteres naturligvis af Dynamicweb CMS.
  5. Brugeren må så acceptere at der ikke kommer en løsning “sådan lige”

Som professionel konsulent er det svært

  • At forklare overfor kunden at det er kundens problem.
  • At kunden vil blive faktureret den tid som vi har brugt på at finde fejl i det system vi har anbefalet dem.
  • At problemet ikke umiddelbart er blevet løst.
  • At en løsning vil koste yderligere tid (=penge).
  • At løsningen ikke nødvendigvis giver en forbedring.

Intet er fejlfrit! – men hvem skal nu betale?

Der er mange elementer i ovenstående sammenligning der kan anfægtes og en sammenligning mellem en bil og et CMS system er måske unfair. Det som jeg her forsøger at starte en diskussion om og brokker mig over er at det ikke er rimeligt at kunderne alene skal betale for noget som kan påvises er fejl i det produkt de har købt.

  • Jeg ville personligt aldrig betale for reperationen hvis min fladskærm holdte op med at virke indenfor garentiperioden! Det måtte producenten betale for (gennem forhandleren).
  • Jeg mener at det er i alles interesse at fejl rettes, så produktet bliver bedre.

Jeg har ikke en færdig model for hvordan man kunne løse problemet med at få dækket omkostninger ved fejl. Der er tre parter som burde dele omkostningen – brugerne, forhandlerne (partnerne) og Dynamicweb CMS. Idag er det kun de to første der betaler! Jeg tror på sigt at hverken brugere eller forhandlere kan leve med den model!

P.s: Ovenstående står for min egen personlige regning.

Share

Ensure that news items in Dynamicweb CMS are rendered correct

In when you click to a detail view of a item you will by default get a parameter “M=” or “M=NewsV2” depending on the Module version. That parameter will make your details view render incorrect. You can fix it in your template, but if you use the RSS feed of items, you cannot do that.

The javascript below will fix that problem by redirecting the page to an URL without those two parameters. It is a simple javascript, just insert it into the HEAD section.

<script type="text/javascript">

// Dynamicweb CMS fix: Make sure that details view of news item is rendered correct

// Insert in Master page in HEAD section

// Will redirect to same URL but with any "M=News/M=NewsV2" removed

// 2010-06-29: Sten Hougaard, Bleau A/S

var loc = document.location+'';

var newLoc = loc.replace('&M=NewsV2', '').replace('&M=News', '');

if (loc!=newLoc) {

 document.location = newLoc;

}

</script>
Share

Kommentarer til Dynamicweb 7.1 technical realease notes

Jeg var så uheldig at blive forhindret i at deltage i præsentationen af 7.1, men heldigvis har jeg jo # som en search kolonne i min Adobe Air baserede Twitter klient: “TweetDeck” – der kan jeg jo følge med og har da læst mange spændende kommentarer.

Jeg har så valgt at kigge på den dokumentation som man kan finde på “Dynamicweb engage”. Der er flere dokumenter som hver i sær fortæller om ændringer. Jeg vil her gennemgå dem jeg har kigget på.

Bug fixes included in Dynamicweb 7.1

Jeg fandt 49 (dokumenterede) bug fixes, og de fordeler sig jævnt over både Dynamicweb og Dynamicweb . Hvis man har prøvet at indrapportere en case som så er blevet anerkendt som en bug, så vil man faktisk modtage en e-mail i forbindelse med at disse bugs er blevet rettet – så det er lidt ligesom at få skatteopgørelsen fra skat hver år! Har du fået en e-mail er du heldig – din bug er blevet fixet… Har du ikke, nå, du må vente lidt på en hot-fix eller næste release… :-)

Jeg så ikke så mange improvements i denne liste – men det har sin naturlige forklaring – forbedringere har fået sine helt egne dokumenter! Dynamicweb 7.1 er jo en stor forbedring af Dynamicweb CMS og eCommerce.

Technical release , Dynamicweb 7.1

Jeg går lige i kødet på det jeg har kunne læse mig frem til i denne PDF fil.

2.1.2 Global tags section in navigation XML

Dette er jo bestemt en relevant og god ting når man skal lave navigation på et website, at man har adgang til de globale information der ligger i global tags. At det skulle være noget nyt for Dynamicweb 7.1 – hmm… det er jeg nu ikke så sikker på :-) I de løsninger som kører på 7.0xx er der allerede dette tilgængeligt. Se her – et screenshoot af en del af den XML som er tilgængeligt på Bleau’s hjemmeside:

et screenshoot af en del af den XML som er tilgængeligt på Bleau’s hjemmeside

Men – fedt er det at man har det tilgængeligt i XML’en! Ingen tvivl om det :-) Faktisk tror jeg at en de nævnte forbedringer allerede er blevet frigivet inden 7.1.

2.1.3 Support for relative xsl:import

Min kære kollega Morten Bengtson (Twitter: http://twitter.com/mbengtson) blev takket i forbindelse med denne forbedring. Jeg synes også at det er på sin plads i den forbindelse lige at takke den anden vej: Tak DW for at I lytter når I får velbeskrevne forbedrings ønsker ind!

Inden man kunne anvende relative stier i XSL:import var det praktisk talt urealistisk at lave seriøs anvendelse af biblioteker og delt data på tværs af XSLT . Det er nu realtistisk at have XSLT og XML data liggende i biblioteker som man så flere steder kan tilgå i sine . Endnu et argument for at anvende XSLT .

2.1.4 Limiting loops in XSLT

Jeg har tidligere stødt på denne “forbedring”. Lige pludselig var der nogle data i loops der lå “langt nede” i eCommerces relative dybe loop-struktur som var ikke eksisterende. Det er så når man fra Dynamicwebs side har ment at det kunne være smart at man kunne begrænse hvilke loops der blev gennemløbet gennem denne “forbedring”. Men den ryger i kategorien:

Man begår kun fejlen – ikke at forholde sig til hvilke loops der skal med – een gang! :-)

I toppen af din XSLT skal du bare huske at fortælle DW hvilke loops du vil have med ud:

<xsl:variable name="availableloops" select="'Groups,Products'" />

Men det skal lige nævnes at DW siger at hvis man har fulgt deres anbefalinger om at matche således loop[@name='aLoopName'] så er den hellige grav velforvaret. Åh, og så kan du iøvrigt også være doven og skrive “*” i den variabel “avilableloops” – så får du bare ikke performance forbedring.

2.3.2 Search page

Okay, man har nu tilføjet endnu en templatetag som kan anvendes så man ikke skal hardcode ID’er ind til den side hvor man nu har sit søgeresultat….

<!--@DwAreaSearchPageID-->

Jeg må sige at jo – det kan da være en god ting og er endnu et patch/quick help-fix som gør det nemmere for…? Frontendere? Kunder? Øh… jeg er i tvivl.

Taggets værdi baseres på noget som jeg mener er relativt gaffatape-agtigt:

..It is now possible to retrieve the first created search page in the current area by using this

new template tag.

  1. Så må jeg jo passe på at jeg ikke indsætter searchresult moduler ind for så bliver de jo lige pludselig target for mit søgeresultat!
  2. Hvis jeg har flere søgninger på et site (en der søger generelt i sider, en der søger i HR, en der søger i eCommerce), så kan jeg ikke bruge denne tag til noget…

4.2

Der er nogle forbedringer, jeg havde en dialog med Nicolai Petersen (twitter: http://twitter.com/nicped) hvor jeg forsøgte at argumentere for at man kunne få Getimage.aspx til at indpasse et billede til både højde og bredde. Jeg har ikke kunne læse mig til det – men afventer svar fra http://twitter.com/nicped.

Hvis man f.eks. satte både højde og bredde til 100 ville man med henholdsvis et bredformat og højformat billede automatisk få en indpasning af hele billedet i både bredde og højde som vist her:

GetImage.aspx som den kan tage sig ud - her er valgt både højde og bredde på 100px

Resultatet:

 

image

4.3 404 on area

Det er rigtig godt – nu kan man have en “404 not found” side pr. sproglag! Cool når man anvender Dynamicweb med sproglag som ikke nødvendigvis er samme firma! :-)

4.5 Google JS API includes

Det er spændende – det er en måde at få ensartet anvendelse af frontend javascript implemtering metoder. Jeg har så stor forventning i forhold til om der også er lavet en generisk måde at inkludere javascript og CSS på i forhold til enkelte moduler på afsnit. Et rygte (og et screenshoot jeg har set) viser at man for alle moduler ovenover settings har settings: en til valg af javascript fil og en til valg af stylesheet. Dette gør at man kan nøjes med at hente f.eks. jQuery plugins ind når de skal bruges. Om det så er kommet med i 7.1 kan jeg ikke læse mig til ud af dokumentationen – jeg må vente jeg får fingerne i en live version – eller en eller anden der har prøvet det eller bare ved det kommenterer på denne blog post :-)

Konklussion

Jeg har været kritisk her i denne post – indrømmet. Jeg er ikke i tvivl om at jeg senere vil skrive et andet indlæg hvor jeg kan fortælle om alle de rare forbedringer som er med i DW 7.1! Men jeg mener også at det er vores sure pligt som brugere af systemet at markere når der er noget man ikke synes er helt forståeligt eller optimalt. Generelt synes jeg at det jeg har hørt og læst om DW 7.1 er positivt og det tyder på at man forsøger at streamline produktet, at gøre det nemmere at anvende det og forbedre faciliteterne. Udfra Dynamicweb 7.1 technical release notes har jeg kunne skrive ovenstående – det er derfor vigtigt at have det i baghovedet: Jeg har skrevet om det dokument – ikke en anmeldelse af DW 7.1! Den kommer senere! :-)

Share