Hi,
bin ralativ unerfahren in Plone und wollte wissen ob es so etwas wie ein klickzähler für Artikel bzw. Links oder Ordner oder all dem gibt?
Wäre nett wenn ich eine Antwort kriegen könnte.
Danke im Voraus
Grüße
Hi,
bin ralativ unerfahren in Plone und wollte wissen ob es so etwas wie ein klickzähler für Artikel bzw. Links oder Ordner oder all dem gibt?
Wäre nett wenn ich eine Antwort kriegen könnte.
Danke im Voraus
Grüße
Vielleicht meinst du sowas: http://zope.org/Members/rvillaca/PloneEnhancedCounter
Torty
danke für die rasche Antwort, nur kannst du mir vielleicht beschreiben was das teil direkt macht und wie ich es einbinden kann?
Danke Dir
Nein. Müsste mir die Seite und ggf. die README.txt auch durchlesen.
Du kannst natürlich auch die Entwickler anschreiben, denn die Kontaktdaten stehen ja da.
Torty
Hi,
ich bins nochmal...
ich wollte mich nur bedanken, der Klickzähler funktioniert wunderbar.
Nur jetzt möchte ich ganz gerne eine Art "hitliste" erstellen, die anzeigt, welche Seiten am häufigsten angeklickt wurden. Ist das möglich?
Vielen Dank im Voraus
Grüße, Max
Es müsste für sowas schon Produkte geben. Vielleicht ist das ja was für dich: http://www.mxm.dk/products/public/mxmCounter/
Anderenfalls: google -> "Plone Product page hit" <- oder so ähnlich
Torty
Ja Danke, den Zähler hab ich schon auf jeder Seite eingebunden..
Jetzt will ich ein Portlet anzeigen lassen, die die ersten fünf, sozusagen die Top 5, der Sites anzeigt soll ungefähr so aussehen...
___________
Hitliste
___________
Frühstück /12
Mittag /13
Abend /15
...
...
___________
weisst du was ich meine? Ich müsste quasi die Links in ein Portlet kriegen mit der zugehörigen Klickzahl...
Edit: Brauche ich eventuell den "EnhancedCounter" wenn ja, was macht das Ding mein Englisch ist nicht das beste! Danke
Ich hoffe Ihr versteht mich hehe
Grüße Max
Hallo, ich habe hier aus dem mxmCounter eine Python Datei. In dieser Datei ist die Methode getSortedByHits() geschrieben.
def getSortedByHits(self):
"Returns the [(url_path, hit)] sorted by hits"
c = get_all()
decorated = [(val, key) for (key, val) in c.items()]
decorated.sort()
decorated.reverse()
return [(val, key) for (key, val) in decorated]
ich möchte jetzt eigentlich nichts anderes, als das Ergebnis der Funktion in einem Portlet anzeigen zu lassen. Ich weiß aber aufgrund meiner "noch" Unerfahrenheit nicht wie ich das passieren lassen kann...
Kann mir da einer weiterhelfen?
Danke Max
Ich gehe davon aus, dass du nicht im Filesystem arbeitest sondern mit /portal_skins/custom.
Ok - ganz kurz und knapp:
[list]
[*] Gehe zu /portal_skins/plone_portlets und klicke dort auf portlet_review -> customize
[*] ersetze den nun angezeigten Code durch den hier im Anhang
[*] speichere und klick oben im Pfad auf custom
[*] markiere den Eintrag portlet_review und klick auf rename
[*] nenn es z.B. portlet_stats
[*] gehe in den Plonesite-Root und klicke oben auf Properties
[*] suche den Eintrag left_slots und trage dort ein
und speichern
Dann schau dir die Plonesite wieder an und du solltest ein zusätzliches Portlet sehen mit dem Inhalt der Stats. Diese musst du nun im portlet_stats noch vernünftig aufbereiten, damit die Ausgabe schön aussieht.
Torty
Code für das portlet_stats
!Achtung! Das Portlet ist nicht getestet! Insbesondere der Teil innerhalb des Link innerhalb des <dd>-Tag muss noch überprüft werden.
Grund: Ich habe das Produkt nicht installiert und weiß nicht genau was die Methode zurückliefert.
<html xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
i18n:domain="plone">
<body>
<div metal:define-macro="portlet"
tal:define="hitList here/getSortedByHits;">
<dl class="portlet" id="portlet-workflow-review">
<dt class="portletHeader">
<span class="portletTopLeft"></span>
<span i18n:translate="">Site Statistic</span>
<span class="portletTopRight"></span>
</dt>
<tal:hasHits condition="hitList">
<tal:vars define="top5 python: hitList[:5];"
repeat="hit top5">
<dd class="portletItem"
tal:define="oddrow repeat/o/odd"
tal:attributes="class python:test(oddrow, 'portletItem even','portletItem odd')">
<div tal:attributes="class python:'visualIcon contenttype-' + normalizeString(o.portal_type)">
<span tal:content="string: $repeat/hit/number}.</span>
<a href="#"
condition="nothing"
class="visualIconPadding tile"
tal:attributes="href string:${hit/absolute_url};
title hit/Description"
tal:content="hit/Title">
title of the page
</a>
</div>
</dd>
</tal:vars>
</tal:hasHits>
<tal:noHits condition="not: hitList">
<span tal:translate="">no hits found</span>
</tal:noHits>
<dd class="portletFooter">
<span class="portletBottomLeft"></span>
<span class="portletBottomRight"></span>
</dd>
</dl>
</div>
</body>
</html>
Alles anzeigen
Also da tritt ein Fehler auf wenn ich mir das Portlet in der Testansicht ansehen möchte aber auch direkt auf der Seite
Fehlertyp
AttributeError
Fehlerwert
getSortedByHits
Anfrage erfolgte um
2007/01/25 07:13:22.075 GMT+1
es muss mit diesem Abschnitt hier zusammenhängen, denn wenn ich etwas auskommentiere, dann ist der Fehler weg aber es entstehen natürlich neue...
Trotzdem erstmal Danke für die Bemühungen Max
Kann es vielleicht sein, dass er die Methode nicht erkennt?
Gruß Max
Jupp, soweit ich es verstanden hatte, hast du mxm_counter installiert. Hast du denn die Methoden von diesem Produkt anderweitig schon genutzt?
In der readme stand was davon, dass nach erfolgter Installation ein Objekt mit der ID mxm_counter existieren soll.
Kannst du das bei dir mal prüfen?
Torty
ja das stimmt. Es ist ein Objekt da mit der ID mxm_counter. direkt in der ersten Instanz. Also quasi bei Floder at/...
ich hab hier auch nochmal einen Screenshot im Anhang der wird vielleicht weiterhelfen.
Vielen Dank Max
Ok gut, dann versuche ich also das Tool direkt anzusprechen.
Try this:
<html xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
i18n:domain="plone">
<body>
<div metal:define-macro="portlet"
tal:define="mxmCounter portal/mxm_counter;
hitList mxmCounter/getSortedByHits;">
<dl class="portlet" id="portlet-workflow-review">
<dt class="portletHeader">
<span class="portletTopLeft"></span>
<span i18n:translate="">Site Statistic</span>
<span class="portletTopRight"></span>
</dt>
<tal:hasHits condition="hitList">
<tal:vars define="top5 python: hitList[:5];"
repeat="hit top5">
<dd class="portletItem"
tal:define="oddrow repeat/o/odd"
tal:attributes="class python:test(oddrow, 'portletItem even','portletItem odd')">
<div tal:attributes="class python:'visualIcon contenttype-' + normalizeString(o.portal_type)">
<span tal:content="string: $repeat/hit/number}.</span>
<a href="#"
condition="nothing"
class="visualIconPadding tile"
tal:attributes="href string:${hit/absolute_url};
title hit/Description"
tal:content="hit/Title">
title of the page
</a>
</div>
</dd>
</tal:vars>
</tal:hasHits>
<tal:noHits condition="not: hitList">
<span tal:translate="">no hits found</span>
</tal:noHits>
<dd class="portletFooter">
<span class="portletBottomLeft"></span>
<span class="portletBottomRight"></span>
</dd>
</dl>
</div>
</body>
</html>
Alles anzeigen
Torty
ja danke aber jetz kommt dieser Fehler...
Fehlertyp
KeyError
Fehlerwert
'portal'
Anfrage erfolgte um
2007/01/25 14:37:25.624 GMT+1
Sorry aber danke dass du mir so hilfst
Nun, das Problem ist, dass mir das mxm_counter hier fehlt. Nuja - machen wir also weiter *g*
<html xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
i18n:domain="plone">
<body>
<div metal:define-macro="portlet"
tal:define="mxmCounter here/getPortalObject/mxm_counter;
hitList mxmCounter/getSortedByHits;">
<dl class="portlet" id="portlet-workflow-review">
<dt class="portletHeader">
<span class="portletTopLeft"></span>
<span i18n:translate="">Site Statistic</span>
<span class="portletTopRight"></span>
</dt>
<tal:hasHits condition="hitList">
<tal:vars define="top5 python: hitList[:5];"
repeat="hit top5">
<dd class="portletItem"
tal:define="oddrow repeat/o/odd"
tal:attributes="class python:test(oddrow, 'portletItem even','portletItem odd')">
<div tal:attributes="class python:'visualIcon contenttype-' + normalizeString(o.portal_type)">
<span tal:content="string: $repeat/hit/number}.</span>
<a href="#"
condition="nothing"
class="visualIconPadding tile"
tal:attributes="href string:${hit/absolute_url};
title hit/Description"
tal:content="hit/Title">
title of the page
</a>
</div>
</dd>
</tal:vars>
</tal:hasHits>
<tal:noHits condition="not: hitList">
<span tal:translate="">no hits found</span>
</tal:noHits>
<dd class="portletFooter">
<span class="portletBottomLeft"></span>
<span class="portletBottomRight"></span>
</dd>
</dl>
</div>
</body>
</html>
Alles anzeigen
Torty
Mist jetzt kommt wieder nen Fehler
Fehlertyp
AttributeError
Fehlerwert
getPortalObject
Anfrage erfolgte um
2007/01/26 06:47:59.992 GMT+1
Ohje das kann was werden^^ Trotzdem Danke
Ok ok - ich seh schon -> Ich muss mir das mxm-Dingenskirchen mal installieren.
Wie hast du das bei dir gemacht?
Dann dokter ich hier rum und poste das Portlet erneut.
Torty
ich habs direkt wie in der readme Datei gemacht so ich habs selbst mal probiert und ich kann jetz auf das Teil zugreifen aber ich kann mir nur die komplette ausgabe aufs portlet zaubern und nicht wie ich will die Seitennamen und die Klicks. ich poste mal nochn Screenshot zum Quellcode...
Hier der Code
<html xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
i18n:domain="plone">
<body>
<div metal:define-macro="portlet"
tal:define="hitList python: path('here/mxm_counter/getSortedByHits')">
<dl class="portlet" id="portlet-workflow-review">
<dt class="portletHeader">
<span class="portletTopLeft"></span>
<span i18n:translate="">Hitliste</span>
<span class="portletTopRight"></span>
</dt>
<tal:vars define="top5 python: [hitList[:5]];"
repeat="hit top5">
<dd class="portletItem">
<a href="#"
tal:content="hit">
title of the page
</a>
</dd>
</tal:vars>
</dl>
</div>
</body>
</html>
Alles anzeigen
Wenn ich für die Ausgabe deinen Quellcode nehme, dann krieg ich TypeErrors mit "indeces can be only integer" oder so
hier dann noch der Screenshot
So - nu hab ich's lokal richtig gestrickt und präsentiere die aktuelle Version:
Try it and buy it ... äähhmmm ... try it and enjoy it - oder so ... *eyesroll*
<html xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
i18n:domain="plone">
<body>
<div metal:define-macro="portlet"
tal:define="utool nocall: here/portal_url;
portal utool/getPortalObject;
mxmCounter portal/mxm_counter;
hitList mxmCounter/getSortedByHits;">
<dl class="portlet" id="portlet-workflow-review">
<dt class="portletHeader">
<span class="portletTopLeft"></span>
<span i18n:translate="">Site Statistic</span>
<span class="portletTopRight"></span>
</dt>
<tal:hasHits condition="hitList">
<tal:vars define="top5 python: hitList[:5];"
repeat="hit top5">
<dd class="portletItem"
tal:define="oddrow repeat/hit/odd"
tal:attributes="class python:test(oddrow, 'portletItem even','portletItem odd')">
<div tal:define="hitObj python: here.restrictedTraverse(hit[0]);"
tal:attributes="class python:'visualIcon contenttype-' + normalizeString(hitObj.portal_type)">
<a href="#" class="visualIconPadding tile"
tal:condition="not: nothing"
tal:attributes="href string:${hitObj/absolute_url};
title hitObj/Description;"
tal:content="string:${repeat/hit/number}. ${hitObj/Title}">
title of the page
</a>
</div>
</dd>
</tal:vars>
</tal:hasHits>
<tal:noHits condition="not: hitList">
<span i18n:translate="">no hits found</span>
</tal:noHits>
<dd class="portletFooter">
<span class="portletBottomLeft"></span>
<span class="portletBottomRight"></span>
</dd>
</dl>
</div>
</body>
</html>
Alles anzeigen
Torty