Artikelhistorie / besuchte Seiten

Alles rund um Module und Plugins in CONTENIDO 4.9.
Antworten
McHubi
Beiträge: 956
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Artikelhistorie / besuchte Seiten

Beitrag von McHubi » Di 29. Mär 2016, 16:55

Hallo,

Aufhänger für dieses Modul war folgendes Thema: http://forum.contenido.org/viewtopic.php?f=90&t=36765. Gewünscht war die Möglichkeit, dem Seitenbesucher die letzten x aufgerufenen Webartikel als Linkliste anzuzeigen. Genutzt wird hierfür der localstorage des verwendeten Webbrowsers. Die Anzahl der zuletzt aufgerufenen Webartikel kann über die Variable $amount_of_entries am Anfang der Modul-Ausgabe festgelegt werden. Für den Linktext wird die Headline des jeweiligen Webartikels verwendet. Die Ausgabe selbst ist "plain-HTML", so dass sich jeder selbst bei der Optik austoben kann...

Modul-Ausgabe

Code: Alles auswählen

<?php
/***********************************************
* article_history_sd output
*
* Author      :     seamless-design Markus Hübner
* Copyright   :     seamless-design Markus Hübner
* Created     :     2016-03-26
************************************************/

/*
important: this module uses information of array $breadcrumb, which is generated by contenido standard module 'head_title'. if you do not implement this module first in your template, 'article_history_sd' does not work. you'll have to determine necessary data right here. to do that, you'll have to turn the following comment-section into executed code by removing comment markers

known issue within contenido 4.9.9 and lower:
if you use standard-module "navigation_breadcrumb", "article_history_sd" won't work. Reason: both modules, "head_title" and "navigation_breadcrumb" use $breadcrumb as an array. If you execute "navigation_breadcrumb", contents of $breadcrumb are replaced and not suitable for using within "article_history_sd". Solution: Rename $breadcrumb within "navigation_breadcrumb" (e.g. $breadcrumb_navigation) and all works fine.
*/

/*
$breadcrumb = array();
// get category path
$helper = cCategoryHelper::getInstance();
foreach ($helper->getCategoryPath(cRegistry::getCategoryId(), 1) as $categoryLang) {
    $breadcrumb[] = $categoryLang->get('name');
}
// load current article information
$article = new cApiArticleLanguage();
$article->loadByArticleAndLanguageId(cRegistry::getArticleId(), cRegistry::getLanguageId());
$headline = strip_tags($article->getContent('CMS_HTMLHEAD', 1));
// append headline of article if existing
if ($headline != '') {
    $breadcrumb[] = $headline;
}
if ($headline === '') {
    $breadcrumb[] = mi18n("STARTPAGE");
}
*/

$amount_of_entries=5;

$uri=$_SERVER['REQUEST_URI'];
$linktext=end($breadcrumb);
?>

<script type="text/javascript">
var var_amount_of_entries=<?php echo $amount_of_entries;?>*2;

if(typeof(Storage)!=="undefined")
  {
  var var_current_localstorage=localStorage.getItem("article_history_sd");

if(var_current_localstorage!=null)
  {
  var array_current_localstorage=var_current_localstorage.split("+++");
  document.write('<hr>');
  var_current_localstorage="";
  for (i=1; i<=var_amount_of_entries; i++)
    {
   if(array_current_localstorage[i]!=undefined)
     {
     if(var_current_localstorage.indexOf(array_current_localstorage[i])<0) // if result is <0, no index is found what means: no similar entry given and article can be listed
       {
       document.write('<a href="'+array_current_localstorage[i]);
       var_current_localstorage+='+++'+array_current_localstorage[i];
       i++;
       document.write('" title="'+array_current_localstorage[i]+'">'+array_current_localstorage[i]+'</a><br/>');
       var_current_localstorage+='+++'+array_current_localstorage[i];
       }
       else i++;
     }
     else i=var_amount_of_entries;
    }
  document.write('<hr>');
  }
  else var_current_localstorage="";

var_new_localstorage="<?php echo '+++'.$uri.'+++'.$linktext; ?>"+var_current_localstorage;
localStorage.setItem("article_history_sd", var_new_localstorage);
  }
</script>
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)

peanut
Beiträge: 202
Registriert: Do 25. Nov 2004, 19:34
Kontaktdaten:

Re: Artikelhistorie / besuchte Seiten

Beitrag von peanut » Sa 2. Apr 2016, 12:50

Hallo Hubi

Vielen Dank für das geniale Script. Nun läuft es wie es sein sollte mit der einmaligen Ausgabe. Sogar mit der Responsive JQuery Slimmenu Navigation. ( Kann ich nun auch mal jemandem helfen beim Setup wenn gewünscht - Hab einige Tage damit verbracht ) Eine Sache wäre da noch. Da ich den Verlauf in meine Navigation oben mit eingebaut habe und eine Spaltenbreite von ca. 200px habe sind die HTMLHEAD 1 Texte manchmal zu lang. Wäre es möglich von dem Titel ( Eigenschaften 4.9.9 ) die Daten zu nehmen ? Die sind immer kurz und knackig :-) Oder ist dann die Sache mit dem Breadcrumb nicht mehr möglich ?

Ich bin gerade froh das es so läuft und will da nun nichts zerschiessen mit Try and Error - Und vielleicht will ja jemand anderes auch diesen Aufbau.

Danke nochmal
Gruss
Peanut
du liest nie ein Buch und weisst weise der Bildung auszuweichen ....

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

Re: Artikelhistorie / besuchte Seiten

Beitrag von McHubi » So 3. Apr 2016, 20:45

Wäre es möglich von dem Titel ( Eigenschaften 4.9.9 ) die Daten zu nehmen ?
Ja. Würde ich aber nicht empfehlen, da die im Backend vergebenen Title oftmals - kommt eben immer auf die Redakteure an - etwas "schlampig" vergeben werden.
Oder ist dann die Sache mit dem Breadcrumb nicht mehr möglich ?
Richtig. Die Datenquelle wäre eine andere.
...sind die HTMLHEAD 1 Texte manchmal zu lang
Die Headlines sind an sich optimal, da diese Headlines dem Seitenbesucher bereits bekannt sind - er hat den Artikel ja schon geöffnet und zumindest ein Blick darauf geworfen. Der im Backend vergebene Title ist nicht unbedingt identisch und so würde der Wiedererkennungseffekt fehlen. Zu Deinem Problem mit zu langen Headlines, gibt es mehrere Lösungen. Das wäre zum einen die Schriftgröße um ein paar mehr Buchstaben unterzubringen und/oder zum anderen die Möglichkeit den String nach einer bestimmten Anzahl Zeichen zu kürzen.

Wirf mal einen Blick hierauf: http://php.net/substr. Das wendest Du dann auf $linktext an. :wink:
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)

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste