Wortstatistik für Artikel

Gesperrt
McHubi
Beiträge: 959
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Wortstatistik für Artikel

Beitrag von McHubi » Do 12. Apr 2012, 23:59

N'Abend zusammen,

hier und da interessiert es den einen oder anderen Autoren, wie viele Worte ein Artikel beinhaltet. Nicht umsonst bieten Word & Co. die Funktion "Worte zählen". Hier jedoch jedes Mal den Artikeltext erst rüberkopieren und dann nachschauen wie viele Worte enthalten sind, ist reichlich mühsam. Insofern gibt es jetzt ein neues Modul, dass einem direkt im Backend in der Artikelvorschau bzw. im Reiter "Editieren" entsprechende Daten liefert und noch weitere Funktionen bietet die einem in punkto keywords/SEO weiterhelfen können: text_stats_sd

FEATURES

* zu checkender Bereich im Layout frei festlegbar
* Blacklist für irrelevante Füllworte wie "der, die, das, ..." und Filterung über frei festlegbare Mindestzahl an Zeichen
* Anzeige der gesamten Worte, der inhaltlich relevanten Worte und Füllworte, Anzeige des prozentualen Anteils eines keywords an der Gesamtanzahl Worte
* Ober- und Untergrenze für optimalen prozentualen Anteil eines keywords frei festlegbar
* Alphabetische Sortierung der relevanten keywords und Hervorheben der keywords die im optimalen prozentualen Bereich liegen und darüber oder darunter
* Die Anzeige der Statistik kann im Backend, ohne sie im Modul zu fixieren, per Button ein- und ausgeblendet werden. Die Entscheidung für oder wider wird per localstorage hinterlegt, so dass auch beim Aufruf anderer Artikel entweder ebenfalls sofort die Statistik angezeigt wird oder nicht. Wenn sie nicht angezeigt werden soll, wird auch keine Analyse durchgeführt was bei langen Texten einen etwas schnelleren Seitenaufbau ermöglicht.
* Die Statistik kann wahlweise unterhalb des Artikels eingeblendet werden oder in einem popup-Window - was die Anzeige auch während des Bearbeitens eines Artikels ermöglicht ohne den wysiwyg-Editor wieder verlassen zu müssen.

INSTALLATION

1) neues Modul "text_stats_sd" anlegen und folgenden Code in den Output kopieren

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   : text_stats_sd
* Author(s)   : Markus Hübner
* Copyright   : www.seamless-design.de Markus Hübner
* Created : 12.04.2012
************************************************/

if($contenido)
{
$current_article = new Article($idart, $client, $lang);
$title= $current_article->get("title");
?>
<div style="background-color: #ffffff; padding: 5px; margin: 5px;">
 
<script type="text/javascript">
/***** begin display options 1 *****/
function localstorage_show(var_show)
  {
  localStorage.setItem("#text_stats_sd#", var_show);
  location.reload();
  }
document.write('<hr>');

var var_show_stats=localStorage.getItem("#text_stats_sd#");

if(var_show_stats=="true")
  {
  document.write('<input type="button" value="<?php echo mi18n("hide statistics"); ?>" onclick="localstorage_show(\'false\')"/>');
/***** end display options 1 *****/


/***** begin declaring variables for customizing *****/
var array_blacklist_keywords= new Array('aber','achten','alle','allem','allen','aller','alles','als','also','andere','auch','auf','aufgrund','aus','bei','beim','besser','bevor','bin','bis','bisher','bist','da&szlig;','dabei','danach','dann','daran','das','dass','daß','da&szlig;','dazu','dein','deine','deinem','deinen','deiner','deines','dem','den','denen','denn','der','deren','des','dessen','dich','dir','die','diese','diesen','diesem','dieser','dieses','du','durch','ebenso','eigenen','eigener','eigenes','ein','eine','einem','einen','einer','eines','einige','einmal','es','etwa','etwas','euer','eure','eures','f&uuml;r','fast','für','gar','h&auml;tte','hab','habe','haben','hat','hatte','hätte','hatten','her','hier','hin','ich','ihn','ihnen','ihr','ihre','ihren','ihres','in','ins','ist','ist','jede','jeden','jeder','jedes','jetzt','kann','kannst','kaum','kein','keine','keiner','konnte','m&uuml;ssen','m&uuml;sste','m&uuml;ssten','mal','man','mein','meine','meinem','meiner','meines','mich','mir','mit','möchte','m&ouml;chte','möchten','m&ouml;chten','möchtest','m&ouml;chtest','muss','müssen','musst','musste','müsste','müssten','nach','nicht','noch','nun','nur','oder','ohne','sei','sein','seinem','seinen','seiner','seines','sich','sie','sind','sind','sofort','sogar','sollen','sollte','sollte','solltest','sondern','sowie','statt','tun','u&uuml;ber','über','und','uns','unser','unserer','unseres','unter','viel','vielen','vieler','vieles','vielleicht','vom','von','vor','vorab','w&auml;re','w&auml;ren','wann','war','wäre','waren','wären','was','weil','weitere','wenn','wer','werde','werden','wie','will','willst','wir','wird','wirst','wo','wobei','woher','worum','wurde','wurden','zu','zum','zur');
var var_opt_percentage_low=3;
var var_opt_percentage_high=5;
var var_min_letters=3;
var var_show_stats_new_window="true"; // true or false
/***** end declaring variables for customizing *****/
var var_title="<?php echo $title; ?>";



/***** begin parsing html-content into string *****/
var var_content=document.getElementById('text_stats_sd').innerHTML;
//document.write('<code>'+var_content+'</code><hr>');
var_content=var_content.toLowerCase();
var_content=var_content.replace(/<\/?[^>]+(>|$)/g, "");
var_content=var_content.replace(/-->/g, "");
var_content=var_content.replace(/[ ]/g, "#");
var_content=var_content.replace(/\r|\n|\r\n/g, "#");
var_content=var_content.replace(/\f|\t|\v/g, "");
var_content=var_content.replace(/&nbsp;/g, "");
var_content=var_content.replace(/\(/g,"");
var_content=var_content.replace(/\)/g,"");
var_content=var_content.replace(/\.|,|:|;|!|\?|>|<|&|\"|\'|\/|\|/g,"");
var_content=var_content.replace(/[0-9]/g,"");
//document.write(var_content+'<hr>');
/***** end parsing html-content into string *****/


//var_content =var_content.replace(/##/g,"#");

/***** begin setting up array with all relevant keywords contained in string *****/
var array_content_keywords=new Array();
var array_content_keywords=var_content.split("#");
array_content_keywords.sort();
//document.write('Array-Elemente: '+array_content_keywords.length+'<br/>');
var var_i=0;
var var_j=0;
var var_amount_of_words=0;
var var_in_blacklist="false";
var var_keyword="";
var array_content_keywords_new= new Array();
while(var_i<array_content_keywords.length)
  {
  var_keyword=array_content_keywords[var_i].replace(/[ ]/g, "");
  if(var_keyword!="") var_amount_of_words++;
  var_in_blacklist="false";
  while(var_j<array_blacklist_keywords.length)
    {
    if(var_keyword==array_blacklist_keywords[var_j])
      {
      var_in_blacklist="true";
      break;
      }
    var_j++;
    }
  var_j=0;
  if(var_keyword!="" && var_keyword.length>=var_min_letters && var_in_blacklist=="false")
    {
    //document.write(var_keyword+'<br/>');
    array_content_keywords_new.push(var_keyword);
    }
  var_i++;
  }
/***** end setting up array with all relevant keywords contained in string *****/



/***** begin setting up array with unique keywords *****/
//document.write('<hr>');
var array_content_keywords_unique=new Array();
var_i=0;
var_j=0;
var var_unique="true";
while(var_i<array_content_keywords_new.length)
  {
  var_keyword=array_content_keywords_new[var_i];
  var_unique="true";
  while(var_j<array_content_keywords_unique.length)
    {
    if(var_keyword==array_content_keywords_unique[var_j])
      {
      var_unique="false";
      break;
      }
    var_j++;
    }
  var_j=0;
  if(var_unique=="true")
    {
    //document.write(var_keyword+'<br/>');
    array_content_keywords_unique.push(var_keyword);
    }
  var_i++;
  }
/***** end setting up array with unique keywords *****/



/***** begin counting keywords and displaying statistical data *****/
var var_amount_of_irrelevant_words=var_amount_of_words-array_content_keywords_new.length;
var var_percentage=0;

if(var_show_stats_new_window=="true")document.write('<div style="display:none;">');

document.write('<div id="text_stats_sd_content_new_window">');
document.write('<p><strong><?php echo mi18n("Overview:"); ?></strong></p>');
document.write('<table style="font-size: 11px;">');
document.write('<tr><td style="font-weight: 900;white-space: nowrap;"><?php echo mi18n("Words"); ?></td><td style="text-align: right;">'+var_amount_of_words+'</td><td style="white-space: nowrap; text-align: right;">(100.00 %)</td></tr>');
var_percentage=array_content_keywords_new.length/var_amount_of_words*100;
var_percentage=Math.round(var_percentage*100)/100;
document.write('<tr><td style="font-weight: 900;white-space: nowrap;"><?php echo mi18n("Relevant words (min. "); ?>'+var_min_letters+'<?php echo mi18n(" letters)"); ?></td><td style="text-align: right;">'+array_content_keywords_new.length+'</td><td style="white-space: nowrap; text-align: right;">('+var_percentage+' %)</td></tr>');
var_percentage=Math.round((100-var_percentage)*100)/100;
document.write('<tr><td style="font-weight: 900;white-space: nowrap;"><?php echo mi18n("Irrelevant words"); ?></td><td style="text-align: right;">'+var_amount_of_irrelevant_words+'</td><td style="white-space: nowrap; text-align: right;">('+var_percentage+' %)</td></tr>');
document.write('<tr><td style="font-weight: 900;white-space: nowrap;"><?php echo mi18n("Relevant unique words"); ?></td><td style="text-align: right;">'+array_content_keywords_unique.length+'</td><td style="white-space: nowrap; text-align: right;"></td></tr>');
document.write('</table>');

document.write('<p><strong><?php echo mi18n("Details:"); ?></strong></p>');
document.write('<table style="font-size: 11px;"><tr><td style="border:1px solid #555555; padding: 3px; font-weight: 900;"><?php echo mi18n("Relevant unique keyword"); ?></td><td style="border:1px solid #555555; padding: 3px; font-weight: 900;"><?php echo mi18n("Amount"); ?></td><td style="border:1px solid #555555; padding: 3px; font-weight: 900;white-space: nowrap;"><?php echo mi18n("% of all words"); ?> ('+var_amount_of_words+')</td></tr>');

var_i=0;
var_j=0;
var var_z=0;
var_percentage=0;
while(var_i<array_content_keywords_unique.length)
  {
  var_keyword=array_content_keywords_unique[var_i];
  while(var_j<array_content_keywords_new.length)
    {
    if(var_keyword==array_content_keywords_new[var_j]) var_z++;
    var_j++;
    }
  var_j=0;
  var_i++;
  var_percentage=var_z/var_amount_of_words*100;
  var_percentage=Math.round(var_percentage*100)/100;
  if(var_percentage<var_opt_percentage_low) document.write('<tr><td>'+var_keyword+'</td><td style="text-align: right;">'+var_z+'</td><td style="text-align: right;">'+var_percentage+' %</td></tr>');
  if(var_percentage>=var_opt_percentage_low && var_percentage<=var_opt_percentage_high) document.write('<tr><td style="font-weight: 900; border-bottom: 1px dotted #555555;">'+var_keyword+'</td><td style="font-weight: 900; border-bottom: 1px dotted #555555; text-align: right;">'+var_z+'</td><td style="font-weight: 900; border-bottom: 1px dotted #555555; text-align: right;">'+var_percentage+' %</td></tr>');
  if(var_percentage>var_opt_percentage_high) document.write('<tr><td style="font-weight: 900; color: #ff0000; border-bottom: 1px dotted #555555;">'+var_keyword+'</td><td style="font-weight: 900; color: #ff0000; border-bottom: 1px dotted #555555; text-align: right;">'+var_z+'</td><td style="font-weight: 900; color: #ff0000; border-bottom: 1px dotted #555555; text-align: right;">'+var_percentage+' %</td></tr>');
  var_z=0;
  }
 
document.write('</table>');
document.write('</div>');

if(var_show_stats_new_window=="true")document.write('</div>');
/***** end counting keywords and displaying statistical data *****/


/***** begin showing stats in new window *****/
if(var_show_stats_new_window=="true")
  {
  var var_content_new_window=document.getElementById("text_stats_sd_content_new_window").innerHTML;
  fens1=window.open("", "Textausgabe", "width=500px,height=500px,scrollbars=yes,resizable=yes,font-family=arial");
  fens1.document.write('<div style="font-family: arial,helvetica,sans-serif;"><p style="font-weight: 900;">'+var_title+'</p>'+var_content_new_window+'</div>');
  }
/***** end showing stats in new window *****/
  
  
/***** begin display options 2 *****/
}
else document.write('<input type="button" value="<?php echo mi18n("show statistics"); ?>" onclick="localstorage_show(\'true\')"/>');
/***** end display options 2 *****/
</script>

</div>
<?php
}
?>
Im Modul ist ein Bereich /***** begin declaring variables for customizing *****/ zu finden, in dem man Eckwerte wie z. B. die prozentualen Unter-/ Obergrenzen oder die Blacklist für irrelevante Worte festlegen kann. Eine eigene CSS-Datei existiert nicht, das was für optische Spielereien anzupassen wäre findet ihr ganz unten im Modul unter /***** begin counting keywords and displaying statistical data *****/

2) Layout erweitern
a) Im Layout - die meisten werden die Daten unterhalb des Artikels angezeigt bekommen wollen - ganz am Ende vor dem </body>-Tag einen neuen Container einfügen

Code: Alles auswählen

<container id="????????" name="text_stats_sd" mode="fixed" default="text_stats_sd">text_stats_sd</container>
b) Bereich für die Datenermittlung festlegen
Die zu checkenden Daten werden per JavaScript und document.getElementById ermittelt. Insofern muss ein HTML-Bereich mit einer konkreten ID versorgt werden - in diesem Fall ist es id="text_stats_sd". Dazu kann der gewünschte Bereich zum Beispiel mit einem "neutralen <div>" umschlossen werden:

Code: Alles auswählen

[...]
<body>
[...]
<div id="text_stats_sd">
  <div class="info">
          <container id="50" name="Headline" types="Content" mode="optional" default="Headline">Headline</container>
          <container id="51" name="SubHeadline" types="Content" mode="optional" default="Sub_Headline">SubHeadline</container>
          <container id="52" name="Text" types="Content" mode="optional" default="">Content 1</container>
          <container id="53" name="Text" types="Content" mode="optional" default="">Content 2</container>
          <container id="54" name="Text" types="Content" mode="optional" default="">Content 3</container>
[...]
</div>
[...]
</body>
</html>
[...]
Alternativ kann aber auch ein bereits vorhandener Bereich die id zugeordnet bekommen sofern er noch keine eigene id aufweist:

Code: Alles auswählen

[...]
<body>
[...]
<div class="info" id="text_stats_sd">
          <container id="50" name="Headline" types="Content" mode="optional" default="Headline">Headline</container>
          <container id="51" name="SubHeadline" types="Content" mode="optional" default="Sub_Headline">SubHeadline</container>
          <container id="52" name="Text" types="Content" mode="optional" default="">Content 1</container>
          <container id="53" name="Text" types="Content" mode="optional" default="">Content 2</container>
          <container id="54" name="Text" types="Content" mode="optional" default="">Content 3</container>
[...]
</div>
[...]
</body>
</html>
[...]
3) Anpassen des/der Template(s)
Ggf. ist eine erneute Zuordnung des Layouts bei den Templates erforderlich. Einfach beim Template im Reiter "Editieren" das Dropdownfeld für die Auswahl des Layouts auf "--- kein ---" setzen und direkt danach wieder auf das ursprüngliche Layout.

Und Schluss is' mit der Wortezählerei... :mrgreen:
Dateianhänge
cm-text_stats_sd-screenshot-be-001.jpg
Screenshot Backend
cm-text_stats_sd-screenshot-be-001.jpg (173.12 KiB) 2995 mal betrachtet
Zuletzt geändert von McHubi am Fr 13. Apr 2012, 14:55, insgesamt 4-mal geändert.
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Die NEUAUFLAGE des Buchs zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Oldperl
Beiträge: 4072
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Franken, Bayern
Kontaktdaten:

Re: Wortstatistik für Artikel

Beitrag von Oldperl » Fr 13. Apr 2012, 10:44

Hallo Markus,

coole Idee. Schau ich mir wenn ich dazu komme am Wochenende mal an. :)
Nur 1 Punkt so beim Überfliegen. Ich fände es besser den Bereich nicht über den Param 'id' festzulegen, sondern ich würde das im 'class' machen. Der 'id'-Param ist oft anderweitig schon belegt und daher wäre 'class' flexibler einsetzbar.

Gruß aus Franken

Ortwin
*NEU* CONTENIDO 4.9 Entwickler-Handbuch
Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x *-* phpBO Search Advanced - das neue Suchwort-Plugin für CONTENIDO 4.9 *-* Mein Entwickler-Blog

McHubi
Beiträge: 959
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Wortstatistik für Artikel

Beitrag von McHubi » Fr 13. Apr 2012, 12:23

Joa, haste nicht Unrecht. Aber wie würdest Du das umsetzen? document.getElementByName als weitere Alternative z. B. funktioniert nicht. Steh da grad - is halt Fr. 13. heute :lol: - etwas auf'm Schlauch.
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Die NEUAUFLAGE des Buchs zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Wortstatistik für Artikel

Beitrag von Spider IT » Fr 13. Apr 2012, 13:00

Hallo Markus und Ortwin,

ich muss Ortwin da jetzt mal wiedersprechen, denn man kann eine eindeutige ID für den Bereich festlegen.
Mit ner Klasse wird das schon schwieriger, die kann und darf mehrfach vorkommen und ist deshalb nicht eindeutig.

Und Markus, getElementsByName() liefert dir ein Array, worauf du per Index-Wert zugreifst:

Code: Alles auswählen

document.getElementsByName('myClass')[0]
Aber um alle Elemente mit einer bestimmten Klasse zu kriegen, ist auch diese Funktion nicht geeignet, denn eine Klasse (class=) ist kein Name (name=).

Gruß
René

PS: Das Modul sieht gut aus, ich hätte allerdings ein paar Änderungswünsche (so vom Screenshot her):
  • DIV der Statistik per CSS auf position: static; und bottom: 0px; setzen
  • Dieses DIV eine minimale Höhe geben, nur für ein kurzer Überblick und ein Details-Link
  • Der Details-Link öffnet ein Popup-DIV mit den Daten aus dem Screenshot

McHubi
Beiträge: 959
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Wortstatistik für Artikel

Beitrag von McHubi » Fr 13. Apr 2012, 14:48

Hallo,

da bin ich wieder. Habe den Output im ersten Post auf eine "neue Version" aktualisiert die Renés Anregungen teilweise aufgreift:

* Die Anzeige der Statistik kann im Backend, ohne sie im Modul zu fixieren, per Button ein- und ausgeblendet werden. Die Entscheidung für oder wider wird per localstorage hinterlegt, so dass auch beim Aufruf anderer Artikel entweder ebenfalls sofort die Statistik angezeigt wird oder nicht. Wenn sie nicht angezeigt werden soll, wird auch keine Analyse durchgeführt was bei langen Texten einen etwas schnelleren Seitenaufbau ermöglicht.
* Die Statistik kann wahlweise unterhalb des Artikels eingeblendet werden oder in einem popup-Window - was die Anzeige auch während des Bearbeitens eines Artikels ermöglicht ohne den wysiwyg-Editor wieder verlassen zu müssen.

Dank euch für die Ideen und Infos... :D
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Die NEUAUFLAGE des Buchs zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Wortstatistik für Artikel

Beitrag von Spider IT » Fr 13. Apr 2012, 15:22

Na das ging ja schnell :)
Ich teste das am WE mal.

Gruß
René

Oldperl
Beiträge: 4072
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Franken, Bayern
Kontaktdaten:

Re: Wortstatistik für Artikel

Beitrag von Oldperl » Sa 14. Apr 2012, 10:21

Spider IT hat geschrieben:ich muss Ortwin da jetzt mal wiedersprechen, denn man kann eine eindeutige ID für den Bereich festlegen.
Mit ner Klasse wird das schon schwieriger, die kann und darf mehrfach vorkommen und ist deshalb nicht eindeutig.
Na wieso auch nicht, man benötigt ja gar keine eindeutige ID. Nimmt man den 'class'-Param so könnte man sogar mehrere Bereiche definieren. Der Parser würde dann immer den Text von der Fundstelle, bzw. von dem StartTag mit der entsprechenden class, bis zum EndTag dieses Tags zum Zählen nutzen.
Auch kann ich eine class-Angabe jedem Tag zuordnen (div,p,h,span), somit könnte ich auch sagen ich möchte grundsätzlich das jeder Editorbereich automatisch den entsprechenden Bezeichner erhält. Man könnte also schon in jedem Modul, ob jetzt HTML, HEADLINE, etc., einen umschließenden Tag mit entsprechender class-Angabe einbauen, bzw. ins Template schreiben, und es gäbe keine Fehler beim Validieren aufgrund doppelter IDs.
Greife ich dann mit Jacascript auf den DOM zu, kann ich diesen auch recht einfach nach Tags mit der entsprechenden class-Angabe durchsuchen und nur deren innerHTML zum Zählen nutzen.

Und noch ein Gedanke, evtl. wäre es sogar möglich die con_code zum Zählen zu nutzen, oder den entsprechenden Eintrag dort bei Inhaltsänderungen eine Neuerzeugung anzustossen. Somit müßte nicht bei jedem Aufruf neu gezählt werden, sondern man könnte den Wert für diesen Artikel zwischenspeichern und nur bei Textänderungen neu zählen.

Gruß aus Franken

Ortwin
*NEU* CONTENIDO 4.9 Entwickler-Handbuch
Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x *-* phpBO Search Advanced - das neue Suchwort-Plugin für CONTENIDO 4.9 *-* Mein Entwickler-Blog

McHubi
Beiträge: 959
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Wortstatistik für Artikel

Beitrag von McHubi » Sa 14. Apr 2012, 15:59

Hallo Ortwin,

hast Du evtl. nen Codeschnipsel der innerHTML per class ausliest? Ich wüsste jetzt nicht wie ich das anstellen soll. René hat mich ja schon bei getElementByName "erleuchtet"... Wenn das doch klappt, wäre es schon cool hierüber die Inhalte einzulesen und damit unabhängig von einem zusammenhängenden Layoutbereich zu sein. Gut, man könnte natürlich mehrere Bereiche mit weiteren IDs markieren und dann die einzelnen Strings zusammenfügen - aber so wäre das auch nett.
Und noch ein Gedanke, evtl. wäre es sogar möglich die con_code zum Zählen zu nutzen, oder den entsprechenden Eintrag dort bei Inhaltsänderungen eine Neuerzeugung anzustossen. Somit müßte nicht bei jedem Aufruf neu gezählt werden, sondern man könnte den Wert für diesen Artikel zwischenspeichern und nur bei Textänderungen neu zählen.
Hm. Gute Frage nach der Umsetzung - kann jetzt nicht sagen wie aufwändig das wäre. Durch das erste "Update" (mein Post von Fr Apr 13, 2012 2:48 pm) ist es ja so, dass man die Analyse deaktivieren kann und nicht bei jedem Artikelaufruf im Backend die Zählerei zwangsweise durchläuft. Das war im ersten Wurf ein echter Schwachpunkt, da man ja nicht unbedingt immer diese Daten benötigt sondern nur bei Bedarf.

Wie würdest Du die con_code denn überhaupt nutzen? Den innerHTML-Bereich über die Spalte "code" einlesen? Wobei sich hier die Frage stellt, was schneller ist: eine Datenbankabfrage und Durchführen der Analyse per php oder eben wie jetzt per javascript...

Viele Grüße nach Franken :D,


Markus
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Die NEUAUFLAGE des Buchs zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Wortstatistik für Artikel

Beitrag von Spider IT » So 15. Apr 2012, 13:45

Hallo Markus,

Code: Alles auswählen

<script type="text/javascript">
//<![CDATA[
var node;
if (!document.getElementsByClassName)
    document.getElementsByClassName = function(cl) {
        var retNode, myClass, elem, classes;
        retNode = [];
        myClass = new RegExp('\\b'+cl+'\\b');
        elem = this.getElementsByTagName('*');
        for (var i = 0, ii = elem.length; i < ii; i++) {
            classes = elem[i].className;
            if (myClass.test(classes)) {
                retNode.push(elem[i]);
            }
        }
        return retNode;
    };
    node = document.getElementsByClassName('red');
    for (var i = (node.length - 1); i >= 0; i --) {
        node[i].innerHTML += ' Red.';
    }
//]]>
</script>
(korrigierte Version von http://javascript.about.com/od/byexampl ... xample.htm)

Könntest du anstatt ein Popup-Fenster ein Popup-DIV machen?

Code: Alles auswählen

<div style="position: fixed; left: 0px; top: 0px; width: 100%; height: 100%; background-color: #000; opacity: 0.6;"></div>
<div style="position: fixed; left: 0px; top: 0px; width: 100%; height: 100%;">
    <table border="0" cellspacing="0" cellpadding="0" style="width: 100%; height: 100%;">
        <tr valign="middle">
            <td align="center">
                <!-- dein DIV mit style="overflow(-y): scroll;" ... -->
            </td>
        </tr>
    </table>
</div>
Das würde sich dann so verhalten wie auch alle anderen Fenster in Contenido ;)
Die Option, kein Fenster zu nutzen, hat bei mir wegen der vielen Wörten nicht hingehauen, der Bereich war zu hoch um noch was machen zu können (ich habe den Container mit style="position: fixed; bottom: 0px;" eingebunden, da scrollt dann auch nichts mehr).

Gruß
René

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast