Sitemap format van mappen

6 views
Skip to first unread message

Jauko

unread,
Jan 7, 2009, 6:43:19 AM1/7/09
to Smartsite5
Ik wil onderstaande macro gebruiken om een klein overzicht te tonen
van een directoty:

<se
type="sitemap"
start="61525"
ExtraFields="target, description"
MaxLevels="2"
BlockHeader="<UL>"
Format="<li type='disc'><a href='[url]?id=11665&vac=%nr%' target=
%target%>%title%</a></li>"
BlockFooter="</UL>"
Noroot="true"
/>

Ik wil nu dat de alle folders (4stuks) onder item 61525, niet
clickable. De folders dienen hier puur om de structuur duidelijk weer
te geven. Hoe doe ik dat?

Ter info: de foldermappen zitten op het hoogste niveau en op dit
niveau zullen geen normale items voorkomen.

Jauko

Johan Kanselaar

unread,
Jan 7, 2009, 7:47:41 AM1/7/09
to Smart...@googlegroups.com
Jauko,

Tja dat gaat niet makkelijk met de sitemap macro in smartsite 5. In iXperion kan dat wel, maar daar heb je niks aan.

Je kan dit op verschillende manieren in 5 oplossen:
 - Als de folders eigenlijk helemaal nooit niet getoond zouden moeten worden, zonder dat het uitmaakt hoe men er op terecht komt, dan kan je dit oplossen door een translation te maken met een SE redirect die doorstuurt naar het bovenste item in die folder volgens de volgorde door de redacteur aangegeven in de manager. Die translation plaats je dan in alle folders waarin dit van toepassing is. Dan heb je het namelijk niet alleen afgevangen voor dit lijstje, maar ook voor andere lijstjes en ander folders, en als men via het zoeken op die folders terecht komt gaat dan gelijk ook goed. En je kan hierdoor per folder het verschil maken en niet je hoeft niet perse alle folders in een folder uit te sluiten.
 - In plaats van een sitemap te gebruiken een SE xlinks die in de format de titel van de folder heeft EN een translation aanroept met een parameter: het nr van de folder. In die translation staat dan een se xlinks die de kinderen van die folder als linkjes maakt.
 - moeilijk doen met replaces in de SE sitemap op basis van het veldje Folder, maar dat raad ik af. :)

Zoiets zocht je?

Groeten,

Johan

PS, ik zou aanraden om de xml notatie van macro's te gebruiken...

2009/1/7 Jauko <ja...@hotmail.com>

Jauko

unread,
Jan 7, 2009, 9:07:37 AM1/7/09
to Smartsite5
Ja zoiets zocht ik inderdaad, Johan.

Xlinks lijkt me de beste optie.

Ik kom niet verder dan 4 x onderstaande script voor de 4 categorien
(de hoofdfolder hoeft niet getoond te worden), wat op zich al 50%
winst is qua code :)

<se
type="xlinks"
parent="61552"
Header="<strong>Administratief</strong>"
Format="<li type='disc'><a href='[url]?id=11665&vac=%nr%' target=
%target%>%title%</a></li>"
Footer=""
/>

Wat bedoel je met de translation met daarin een 2de xlinks, ik probeer
oa. het volgende:

<se
type="xlinks"
parent="61525"
Header="<strong>naam Hooddirectory</strong>"
Format="<li type='disc'><a href='[url]?id=11665&vac=%nr%' target=
%target%>%title%</a></li>[Werkenbij_vactureoverzicht]"
Footer=""
/>

In de translation probeer ik dan de kinderen van de getoonde 4 mappen
te tonen:
<se
type="xlinks"
parent="nr"
Header=""
Format="<li type='disc'><a href='[url]?id=11665&vac=%nr%' target=
%target%>%title%</a></li>"
Footer=""
/>


ik krijg alleen foutmelding op nr:
AdministratiefError running Macro 'xlinks': Parent not found: nr
ICTError running Macro 'xlinks': Parent not found: nr
KlantcontactError running Macro 'xlinks': Parent not found: nr
OverigError running Macro 'xlinks': Parent not found: nr

Als ik nummer er niet in zet toont die bij alle 4 dezelfde pagina?

Heb je nog een idee :P

Johan Kanselaar

unread,
Jan 7, 2009, 10:12:52 AM1/7/09
to Smart...@googlegroups.com
Jauko,

Ja bijna. probeer onderstaande eens:


<se
 type="xlinks"
 parent="61525"
 Header="<strong>naam Hooddirectory</strong>"
 Format="<li type='disc'>%title% (dit is de foldernaam zonder link)
</li>|Werkenbij_vactureoverzicht(%nr%)]"
 Footer=""
 replacedata="|:=["

/>

In de translation probeer ik dan de kinderen van de getoonde 4 mappen
te tonen:
<se
 type="xlinks"
 parent="{translationParam1}"

 Header=""
 Format="<li type='disc'><a href='[url]?id=11665&vac=%nr%' target=
%target%>%title%</a></li>"
 Footer=""
/>

Johan




2009/1/7 Jauko <ja...@hotmail.com>

Jauko

unread,
Jan 8, 2009, 3:40:00 AM1/8/09
to Smartsite5
Bedankt Johan,

Dat geeft nu echter nog de foutmelding "Error running Macro 'xlinks':
Parent not found: {translationParam1}" voor elke categorie.

Wist overigens niet dat ik nummer zo door kon geven met een
translation en dat ik m weer zou kunnen opvragen met
{translationParam1} (ook al gaat dat nog niet goed)

Weet je misschien waar ik dit soort code voorbeelden of info kan
vinden, naast deze discussiegroep dan :), zodat ik zelf ook wat meer
kan uitproberen?

Jauko

marco....@imtech.nl

unread,
Jan 8, 2009, 3:42:50 AM1/8/09
to Smart...@googlegroups.com
Beste Jauko,

De schrijfwijze is: {translationParam(1)}

m.vr.gr.,
Marco Hoefman




Jauko
<ja...@hotmail.co
m> To
Sent by: Smartsite5
Smartsite5@google <Smart...@googlegroups.com>
groups.com cc

Subject
08-01-2009 09:40 [SPAM?] [Smartsite5.1] Re: Sitemap
format van mappen

Please respond to
Smartsite5@google
groups.com

Jauko

unread,
Jan 8, 2009, 4:30:18 AM1/8/09
to Smartsite5
dank je wel Marco, dat was t inderdaad. Hij doet wat ie moet doen,
helemaal fantastisch :)

marco....@imtech.nl

unread,
Jan 8, 2009, 4:51:28 AM1/8/09
to Smart...@googlegroups.com
Gelukkig :)
Wat kan de wereld toch mooi zijn als Smartsite doet wat er van ze verwacht
wordt hè?

Marco Hoefman

Johan Kanselaar

unread,
Jan 8, 2009, 6:47:08 PM1/8/09
to Smart...@googlegroups.com
Ja idd domme fout van mij om die syntax niet correct in te tikken. deed ik ook maar even heel snel... :) Ja je kan zoiets doorgeven, maar let op: Als je niet de ReplaceData gebruikt in de buitenste SE macro, dan loop je ivm de parseloops van smartsite de kans dat je niet het daadwerkelijke nr doorgeeft maar alleen maar %nr% doorgeeft. Dit gaat in dat geval ook gewoon gedeeltelijk goed, want dan word de binnenste translation eerder geparsed dan de buitenste macro. Echter dan krijg je dus het resultaat dat alle kinderen in de binnenste macro ook allemaal naar de parent linken omdat de %nr% van de binnenste macro dan al vervangen wordt door het nr uit de buitenste macro. Tenminste als je mijn verhaal nu nog begrijpt :)
(Dit laatste zou je dan weer kunnen oplossen door zelf een sql query te specificeren in de binnenste macro en daar het nr van de pagina te hernoemen naar bijv childnr en dan in de binnenste macro in de translation dus %childnr% ipv %nr% te gebruiken. Dit zou je dan uiteraard ook voor %title% moeten doen....)

Maar om op je vraag terug te komen of er een site voor is. Ja die is er. Dat is de officiele Supportsite voor Value Added Resellers van Smartsite: support5.smartsite.nl. Als jij de webmaster bij een bepaalde smartsite klant bent kan je daarvoor een klant-account aanvragen bij je Value Added Reseller (VAR = jullie implementator van de site). Die is echter niet bedoeld voor (Hoofd)Redacteuren van een site, daarvoor is de openbare site manuals.smartsite.nl. Maar dat is dus ter evaluatie aan de VAR. (Ter info: de VAR krijgt een account met iets meer rechten op deze site waardoor zij bijv nieuwe releases van smartsite kunnen downloaden, maar dat heeft de webmaster van een site ook niet nodig)

groeten, Johan

Jauko

unread,
Jan 22, 2009, 3:33:08 AM1/22/09
to Smartsite5
Bedankt Johan.

Ik ben overigens verder met xlinks bezig en onderstaande scriptje
werkt. Echter geldt de replacedata (1) voor alles, terwijl dit alleen
van toepassing moet zijn op %ctspecificbit3%. Is dat mogelijk?

<se
type="xlinks"
parent="{translationParam(1)}"
Header="<table>"
Format="<tr><td><img src='images2008/nieuws/itembullet.gif'></td><td
width='200'>%ctspecificvar1%</td><td width='40px'>%ctspecificbit3%</
td><td>€ %description%</td></tr>"
Footer="</table>"
norecords="Er staat vandaag (nog) niets op het menu"
replacedata="1:=<img src='images2008/menu/vegetarisch.gif'
width='20px' title='Vegetarisch gerecht'>"
replacedata="0:=&nbsp;"
/>

Jauko

unread,
Jan 22, 2009, 6:26:06 AM1/22/09
to Smartsite5
Ik heb inmiddels een goed werkende oplossing gevonden, maar
opmerkingen blijven altijd welkom :)

<se type="replace" search="[0-9]" replace="" useregexp="yes">
<se
type="xlinks"
parent="{translationParam(1)}"
Header="<table>"
Format="<tr><td><td width='40px'>%ctspecificbit3%</td></tr>"
Footer="</table>"
/>
</se>

<se type="SQLquery">
<parameters>
<sql>
<![CDATA[
select ctspecificvar1 kortetitel, description prijs, decode
(ctspecificbit3,0,'1px',1,'vegetarisch') vegetarisch
from vwactive_tra
where parent={translationParam(1)}
and description is not null
]]>
</sql>
<header><![CDATA[<table>]]></header>
<format>
<![CDATA[<tr><td><img src="images2008/nieuws/itembullet.gif"></td><td
width="125">%Kortetitel%</td><td width="40px"><img src="images2008/
menu/%vegetarisch%.gif" width="20px" title="Vegetarisch gerecht"></
td><td>€ %prijs%</td></tr>]]>
</format>
<footer><![CDATA[</table>]]></footer>
<norecords>Er staat vandaag niets op het menu</norecords>
</parameters>
</se>

Johan Kanselaar

unread,
Jan 25, 2009, 3:21:33 PM1/25/09
to Smart...@googlegroups.com
Jauko:

Over:


<se type="replace" search="[0-9]" replace="" useregexp="yes">
<se
 type="xlinks"
 parent="{translationParam(1)}"
 Header="<table>"
 Format="<tr><td><td width='40px'>%ctspecificbit3%</td></tr>"
 Footer="</table>"
/>
</se>

Geen idee wat dit doet, maar afhankelijk van de situatie wordt eerst de buitenste of anders de binnenste macro als eerste uitgevoerd. Uiteraard kan dit een heel verschillend resultaat opleveren.
Waarom vervang je alle getallen door niks? Wordt "width='40px'" dan niet ook "width='px'"?
En de huidige format maakt alleen maar een tabel met 1 kolom met daarin per record of 0 of 1. Maar aangezien jij 0-9 vervangt door niks maak je een lege tabel?
Dus naar mijn idee doet dit iets raars, en komt ook niet overeen met je eerdere voorbeeld. Lijkt net alsof je om het eerder probleem met die ctspecificbit3 en een replace van 0 door niks hebt proberen te omzeilen door dan maar 2 tabellen uit te voeren.

Dan de volgende:

<se type="SQLquery">
<parameters>
<sql>
       <![CDATA[
               select ctspecificvar1 kortetitel, description prijs, decode
(ctspecificbit3,0,'1px',1,'
vegetarisch') vegetarisch
               from vwactive_tra
               where parent={translationParam(1)}
               and description is not null
       ]]>
</sql>
<header><![CDATA[<table>]]></header>
<format>
       <![CDATA[<tr><td><img src="images2008/nieuws/itembullet.gif"></td><td
width="125">%Kortetitel%</td><td width="40px"><img src="images2008/
menu/%vegetarisch%.gif" width="20px" title="Vegetarisch gerecht"></
td><td>€ %prijs%</td></tr>]]>
</format>
<footer><![CDATA[</table>]]></footer>
<norecords>Er staat vandaag niets op het menu</norecords>
</parameters>
</se>

Hier heb je een query geschreven. Dat was al je oplossing voor het probleem met ctspecificbit3 waar je 0 door niks wil vervangen.
Dit is al vele malen beter dan je eerdere voorbeeld:


<se
 type="xlinks"
 parent="{translationParam(1)}"
 Header="<table>"
 Format="<tr><td><img src='images2008/nieuws/
itembullet.gif'></td><td
width='200'>%ctspecificvar1%</td><td width='40px'>%ctspecificbit3%</
td><td>€ %description%</td></tr>"
 Footer="</table>"
 norecords="Er staat vandaag (nog) niets op het menu"
 replacedata="1:=<img src='images2008/menu/vegetarisch.gif'
width='20px' title='Vegetarisch gerecht'>"
 replacedata="0:= "
/>
/>

Alleen al door het gebruik van xml syntax en een eigen query is dit beter. Ook kunnen 2 replacedata parameters eigenlijk niet. Je kan in 1 replacedata meerdere replaces opgeven door deze standaard te scheiden met een puntkomma(;). Maar je kan ook een eigen karakter hiervoor opgeven met de parameter "replaceseparator".

De "1px.gif" is niet echt een oplossing. Deze wordt namelijk nog steeds 20px breed in een kolom van 40px. Dus als iemand daar met zijn muis overheen gaat verschijnt in de meeste browsers nog steeds de title-tekst "vegetarisch gerecht" ook al lijkt het voor de bezoeker alsof die over een leeg stukje van het scherm beweegt. Daarnaast als iemand de pagina zou laten voorlezen dan is alles dus een vegetarisch gerecht.
Wat je echter in het eerdere voorbeeld wel goed probeerde is om de 1 van ctspecificbit3 in zijn geheel door een img tag te vervangen.
Overigens geld voor img tags dat je de alt-tekst in het attribuut "alt" zet ipv "title". Het attribuut "title" is gereserveerd voor de tag <A> (linkjes dus).
Ook is het niet handig om de vormgeving van een table in de html op te lossen. Handiger is waarschijnlijk dit in CSS op te lossen.

Het gebruik van variabelen in een query is niet veilig ivm SQL-Injection (zie google) zoals je doet met: "where parent={translationParam(1)}". Hiervoor dien je SQLParams te gebruiken.

Alles bij elkaar zou ik dan van jouw voorbeelden onderstaande voorbeelden maken:

<se type="SQLquery" error="Excuus er ging iets fout: {error}">

  <parameters>
    <sql>
<![CDATA[
select ctspecificvar1 kortetitel, description prijs
      , decode (ctspecificbit3,
            0,'',
            1,'<img src="images2008/menu/vegetarisch.gif" alt="Vegetarisch gerecht">'
      ) vegetarisch
from vwactive_tra
where parent = ?

  and description is not null
]]>
    </sql>
    <sqlparams>long:{translationParam(1)}</sqlparams>
    <header>
<![CDATA[<table id="KantineMenu">
]]>
    </header>
    <format>
<![CDATA[  <tr><td>%Kortetitel%</td><td>%vegetarisch%</td><td>€ %prijs%</td></tr>

]]>
    </format>
    <footer>
<![CDATA[</table>
]]>
    </footer>
    <norecords>Er staat vandaag niets op het menu</norecords>
  </parameters>
</se>


Met behulp van CSS zou ik dan de opmaak regelen van de tabel.
De itembullet.gif kan namelijk als achtergrondje non-repeatable in de eerste kolom of de TR geplaatst worden die dan een padding krijgt om de inhoud van de cel iets op te schuiven om deze niet over de achtergrond heen te laten komen. Ik heb CSS niet zo goed paraat dus laat de vormgeving even door een html/css specialist controleren.
Maar eigenlijk heeft een tabel geen opsommingstekens als itembullet.gif nodig. Dat hoort thuis in opsommingslijstjes want in tabellen hoor je de TRs en eventueel celborders te bruiken voor het row verschil.

Tip voor de toekomst: gebruik geen CTSpeficbit om aan te geven of iets vegetarisch is. Aan te raden is een een duallist te gebruiken "Dieet gerecht" met de opties: vegetarisch, geen varkensvlees, biologisch, veganistisch, zoutloos, gluten vrij, lactose vrij etc.

Succes!

Groeten,

Johan



2009/1/22 Jauko <ja...@hotmail.com>
Reply all
Reply to author
Forward
0 new messages