Neues einfaches Blogsystem [TvsBlog]

Alles über die Anwendung und Entwicklung von AddOns.

Re: Neues einfaches Blogsystem [TvsBlog]

Beitragvon nuxx » 20. Apr 2011, 09:25

Hallö :)
Vielen Dank für die fixe und umfassende Antwort. Dann hab ich ja nun meine Hausaufgabe für Ostern :)
Beste Grüße
Markus
nuxx
 
Beiträge: 91
Registriert: 16. Dez 2005, 17:45

Re: Neues einfaches Blogsystem [TvsBlog]

Beitragvon Micha0466 » 20. Apr 2011, 09:55

Hallo,

ich habe ein Problem mit dem AddOn.
Egal welche Einstellung ich vornehme immer hab ich Verif: Ja, Akzep: Nein

Ich möchte jedoch Kommentare sofort freigeben haben. (E-Mail Bestätigung)
Irgendwie bekomme ich das nicht hin.

Redaxo 4.3.1
PHP: 5.1.12

Danke

Micha
Micha0466
 
Beiträge: 26
Registriert: 14. Jul 2007, 20:01

Re: Neues einfaches Blogsystem [TvsBlog]

Beitragvon nuxx » 19. Sep 2011, 11:13

Hallo allerseits.
hat jemand schon mal ne Ausgabemodul gebastelt, das die Blogeinträge anteasert ?
l.g Nuxx
nuxx
 
Beiträge: 91
Registriert: 16. Dez 2005, 17:45

Re: Neues einfaches Blogsystem [TvsBlog]

Beitragvon nixwieraus » 28. Okt 2011, 10:56

Moin moin.

nuxx hat geschrieben:hat jemand schon mal ne Ausgabemodul gebastelt, das die Blogeinträge anteasert ?


Ja, habe ich. Im Eingabemodul vom Standard tvsblog-Modul für die Artikelausgabe habe ich ein weiteres Feld hinzugefügt, wobei die Vorgabe bei mir die Standardvorgabe bei 250 Zeichen liegt, und speichere dies zusätzlich im Slice.
Code: Alles auswählen
<?php
   $table_pre = "rex_".$REX['ADDON']['rxid']['tvsblog'];
   $art_table = $table_pre . "_articles";
   $cat_table = $table_pre . "_categories";

   $tvsblog_entries = "";
   
   echo "<h1>TVSBlog</h1><br />";

   if ("REX_VALUE[1]" == "")
      $tvsblog_entries = 5;
   else
      $tvsblog_entries = "REX_VALUE[1]";
   
   if ("REX_VALUE[3]" == "")
      $tvsblog_laenge = 250;
   else
      $tvsblog_laenge = "REX_VALUE[3]";
?>

Anzahl Blogeinträge pro Seite: <input name="VALUE[1]" type="text" size="5" value="<?php echo $tvsblog_entries; ?>" />
<br />

Anzahl der Zeichen für Artikel, welcher angeteasert wird: <input name="VALUE[3]" type="text" size="5" value="<?php echo $tvsblog_laenge; ?>" />
<br />

Nur aus folgender Kategorie:
<select name="VALUE[2]" class="rex-form-select">
   <option value=""></option>
   <?php
      $cat_sql = new rex_sql();
      $cat_sql->setQuery("SELECT * FROM " . $cat_table);

      if ($cat_sql->getRows() > 0 )
      {
         for ($i = 1; $i <= $cat_sql->getRows(); $i++)
         {
            if ("REX_VALUE[2]" == $cat_sql->getValue('id'))
               $selected = "selected";
            else
               $selected = "";
            echo '<option value="' . $cat_sql->getValue('id') . '" ' . $selected . '>' . htmlspecialchars($cat_sql->getValue('title')) . '</option>';
            $cat_sql->next();
         }
      }
   ?>
</select>

<br />
<br />


Das Ausgabemodul habe ich entsprechend meiner bedürfnisse angepasst.
Code: Alles auswählen
<?php

   /* ******************************************************************
   Ausgabe
   */
   $laenge_standardwert = 250;
   
   $table_pre = "rex_".$REX['ADDON']['rxid']['tvsblog'];
   $thispage = "tvsblog";
   $art_table = $table_pre . "_articles";
   $cat_table = $table_pre . "_categories";

   $tvsblog_post_id = rex_get('post_id', 'int', -1);

   $tvsblog_tag = rex_get('tag', 'string', '');

   $tvsblog_start = rex_get('tvsblog_start', 'int', -1);

   // auslesen der vorgebenen Werte
   if ($tvsblog_start != -1) {
      $tvsblog_limit = "REX_VALUE[1]";
   }
   else
      if ("REX_VALUE[1]" == "") {
         $tvsblog_start = 0;
         $tvsblog_limit = 5;
      }
      else {
         $tvsblog_start = 0;
         $tvsblog_limit = "REX_VALUE[1]";
      }
   if ("REX_VALUE[3]" != "") {
      $tvsblog_laenge = "REX_VALUE[3]";
   }

   $myIniFile = $REX['INCLUDE_PATH'] . "/addons/" . $thispage . "/" . $thispage . ".ini";
   $settings = parse_ini_file($myIniFile);

   $sql_limit = " LIMIT " . $tvsblog_start . ", " . $tvsblog_limit;
   
   $tvsblog_category = rex_get('tvsblog_category', 'int', -1);
   
   if ($tvsblog_category == -1 && "REX_VALUE[2]" != "")
      $tvsblog_category = "REX_VALUE[2]";

   if($tvsblog_category != -1) {
      $tvssql = " AND categories = " . $tvsblog_category;

      $sql = new rex_sql();
      $sql->setQuery("SELECT * FROM " . $cat_table . " WHERE id = " . $tvsblog_category);
      if ($sql->getRows() > 0 )
      {
         echo "<h1>Die neuesten Blogeinträge aus der Kategorie '" . $sql->getValue('title') . "':</h1>";
      }
   }
   else {
      $tvssql = "";
   }
   
   if ($tvsblog_tag != "")
      $tvssql .= " AND keywords like '%" . $tvsblog_tag . "%'";
      
   // post_id hat Priorität...
   if ($tvsblog_post_id != -1)
      $tvssql .= " AND id = " . $tvsblog_post_id;
      
   $sql = new rex_sql();
   $sql->setQuery("SELECT * FROM " . $art_table . " WHERE status = 1 " . $tvssql . " ORDER BY create_date DESC ");
   $total_rows = $sql->getRows();
   
   $sql->setQuery("SELECT * FROM " . $art_table . " WHERE status = 1 " . $tvssql . " ORDER BY create_date DESC " . $sql_limit);

   if ($sql->getRows() > 0 )
   {
      for ($i = 1; $i <= $sql->getRows(); $i++) {
         echo "<div class=\"tvsblog_entry\">";
         echo "  <br />";
         echo "  <h2><a href='" . rex_getUrl(20,'', array('post_id'=>$sql->getValue('id')), '&amp;') . "' target='_parent'>" . $sql->getValue('title') . "</a></h2>";

         if ($tvsblog_laenge != "") {
            if (strlen($sql->getValue('description')) > $laenge_standardwert) {
               // Von Zeichen 0 an bis Wert REX_VALUE[3] + "..." bilden den neuen String.
               $tvsoutput = substr($sql->getValue('description'),0,$tvsblog_laenge) . "...";
               }
            else {
               // Sollte der Text kuerzer als 250 Zeichen sein, so wird der Text ungekuerzt ausgegeben.
               $tvsoutput = $sql->getValue('description');
            }
         }
         else {
            // Sollte kein Wert hinterlegt sein, so wird der Text auf 250 Zeichen gekuerzt.
            $tvsoutput = substr($sql->getValue('description'),0,$laenge_standardwert) . "...";
         }
         
         // Ausgabe des Datum
         echo "   <div class=\"tvsblog_author\">";
         echo "    <p>vom " . date("d.m.Y", $sql->getValue('create_date')) . "</p>";
         echo "   </div>";
         
         $article = new rex_article();
         echo $article->replaceLinks($tvsoutput);
         echo "  <p>&nbsp;</p>";
         
         $sql->next();
      }
   }
   else
      echo "Derzeit liegen keine neuen News vor. Schauen Sie später doch noch einmal vorbei.";
?>


Sicherlich kann das noch eleganter und kürzer gelöst werden, in dem man gleich bei der SQL-Abfrage den String passend präpariert. Weitere Verbesserungsvorschläge gerne willkommen.

Gruß aus der Wetterau
Lars
Benutzeravatar
nixwieraus
 
Beiträge: 13
Registriert: 16. Aug 2011, 14:22
Wohnort: Bad Vilbel

Re: Neues einfaches Blogsystem [TvsBlog]

Beitragvon michaelwandel » 17. Nov 2011, 20:55

Hi,

ja gute Idee, nervt mich selbst oft, ich werde das mal in der nächsten Version mal mit einbauen, ich denke aber eher noch über eine Kapselung in eine vernünftige Klasse nach, mal schauen ;-)

Gruß, Michael
Benutzeravatar
michaelwandel
 
Beiträge: 120
Registriert: 1. Jul 2010, 12:54

Vorherige

Zurück zu AddOns [R4]

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 2 Gäste