SHOW_ARTICLE_CP

Gibt die CPs der Artikel die sich in der aktiven Struktur befinden an der Stelle {SHOW_ARTICLE_CP} im Template aus. (Nur im Artikel Listen-Modus verfügbar). Wenn ein CP ausgegeben werden soll wird der Tag {SHOW_CP} in das CP Kommentarfeld eingefügt.

Der Tag {SHOW_ARTICLE_CP} legt fest, wo die CPs in der Vorlage angezeigt werden sollen.

Es werden nur die CPs der Artikel in der aktuellen Ebene ausgegeben.



Docu: –
Forum: {SHOW_ARTICLE_CP} <-> {SHOW_CP}

Autor: K.Heermann (flip-flop) http://planmatrix.de / O.Georgi http://phpwcms.de
CMS Version: >= 1.3
Version: V1.0
Update: V1.1: Wechseln des Sortierkriteriums (17.01.2010)

Tag: {SHOW_ARTICLE_CP} ↔ {SHOW_CP}

Dateiname: rt_show_article_cp.php
Verzeichnis: template/inc_script/frontend_render/

Bedingung:/config/phpwcms/conf.inc.php

  • $phpwcms['allow_ext_render'] = 1;



- struktur level (Artikel im Listen-Modus)
--- 1. article .... Listen-Modus aber kein Schlagtext (summary)
------ CP Images .... (Z.B. Ausgabe an der rechten Seite) A{SHOW_CP}
--- 2. article .... Listen-Modus mit Schlagtext
------ CP Text .... (Ausgabe an der rechten Seite)        B{SHOW_CP}
------ CP Images .... (Ausgabe an der rechten Seite)      C{SHOW_CP}
------ CP Link list .....
--- 3. article .... Listen-Modus mit Schlagtext
------ CP Text/Bild ....


TAG: {SHOW_ARTICLE_CP} um den RT zu aktivieren und den Ort der Ausgabe in der Vorlage zu bestimmen.

TAG: [X]{SHOW_CP} im Kommentarfeld des anzuzeigenden CPs.

Wobei [X] das Sortierkriterium ist, z.B. A{SHOW_CP} ….B{SHOW_CP} …. C{SHOW_CP} ….

:!: Platziere diesen Tag als ersten Eintrag in das Kommentarfeld wenn eine korrekte Sortierung verlangt wird :!:

Und → CP Status: [x] sichtbar (Oder ändere im Skript “acontent_visible” für die Darstellung unsichtbarer CPs).

Es wird autoamtisch ein Wrapper <div class=“show_article_cp”>OUTPUT</div> erzeugt.
Bitte lege die Klasse class .show_article_cp in einer eingebundenen CSS Datei an wenn benötigt.

Sinn: Wenn der Tag keine Ausgabe erzeugt (z.B. in einem anderen Strukturlevel) wird kein überflüssiger Quelltext erzeugt der u.U. die Formatierung der Seite sprengt.




Code V1.0:

Location: template/inc_script/frontend_render/rt_show_article_cp.php

{SHOW_ARTICLE_CP} - {SHOW_CP}

<?php
// **************************************************************************
// 24.04.08 Show CP from an article in list mode (V 1.0)
// Knut Heermann (flip-flop) http://planmatrix.de
// 25.04.08 Edit by Oliver Georgi
// 26.04.08 KH: Output in only active site level doesn´t run
// 26.04.08 OG: Optimized source and add manual sorting e.g.
//              A{SHOW_CP} B{SHOW_CP} C{SHOW_CP} ....
//
// http://forum.phpwcms.org/viewtopic.php?p=102704#p102704
// http://forum.phpwcms.org/viewtopic.php?p=102798#p102798
//
// TAG:      {SHOW_ARTICLE_CP} for activating in your template
// TAG:      [X]{SHOW_CP} in the comment field of the displayed CP
//           Where [X] is the sort criterion e.g. A{SHOW_CP} B{SHOW_CP} ....
//           Places this tag first in comment field!!!
//
// Condition: CP status: [x] visible  (Or change "acontent_visible")
// Location: Put it into the file e.g.:
//           /template/inc_script/frontend_render/rt_show_article_cp.php
// Switch in conf.inc.php: $phpwcms['allow_ext_render']  = 1;
// **************************************************************************
// ----------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {
   die("You Cannot Access This Script Directly, Have a Nice Day.");
}
// ----------------------------------------------------------------
 
// Nur ausfuehren wenn der Listenmodus eingeschaltet ist
// Only run if list mode is true
if( $content['list_mode'] == true && strpos($content["all"], '{SHOW_ARTICLE_CP}') !== false ) {
 
  $content["all"] = str_replace('{SHOW_ARTICLE_CP}','<div class="show_article_cp">'.my_article_count_cp().'</div>', $content["all"]);
 
} else {
 
   $content["all"] = str_replace('{SHOW_ARTICLE_CP}', '', $content["all"]);
 
}
 
function my_article_count_cp() {
 
  // Artikel der aktuellen Seitenebene holen
   // get current listed article IDs
   $article = array();
   foreach($GLOBALS['content']['articles'] as $value) {
      $article[] = $value['article_id'];
   }
 
   if(count($article)) {
 
      // Artikel in der DB suchen und CP-ID bereitstellen
      // Search for the article and make the CP-ID available
      $sql  = "SELECT acontent_id ";
      $sql .= "FROM ".DB_PREPEND."phpwcms_articlecontent ";
      $sql .= "WHERE acontent_visible=1 AND acontent_trash=0 ";
      $sql .= 'AND acontent_aid IN ('.implode(',', $article).') ';
      $sql .= "AND acontent_comment LIKE '%{SHOW_CP}%' ";
      //  SORTING ORDER: sort by comment = "acontent_comment" | sort by id = "article_aid" | sort by structure = "acontent_sorting"
      $sql .= "ORDER BY acontent_comment"; //  acontent_comment, article_aid, acontent_sorting
 
      $result = _dbQuery($sql);
 
      if(isset($result[0]['acontent_id'])) {  // Any result available?
 
 
         // CP-ID String fuer SHOW_CONTENT bereitstellen
         // Create CP-IDs string for SHOW_CONTENT
         $cp_my_id_str   = '';
 
         foreach($result as $value) {
            $cp_my_id_str .= ','.$value['acontent_id'];
         }
 
         // Ausgabe der betroffenen CPs mit SHOW_CONTENT
         // Make the encountered CPs available with SHOW_CONTENT
         return showSelectedContent('CP'.$cp_my_id_str);
      }
   }
   return '';
}
 
?>

Update v1.1: Wechseln des Sortierkriteriums

Die Sortierung durch den Kommentar kann abgeschaltet und die Sortierung wie in der Struktur vorgegeben eingeschaltet werden: In der Datei
“template/inc_script/frontend_render/rt_show_article_cp.php”
etwa ab Zeile 48
von

// CUSTOM INPUT ==============================================
// sort order: [true|false] [by comment field | by structure]
  $sort_by_comment = true;
// ===========================================================

nach

// CUSTOM INPUT ==============================================
// sort order: [true|false] [by comment field | by structure]
  $sort_by_comment = false;
// ===========================================================

geändert wird.


Code V1.1

Location: template/inc_script/frontend_render/rt_show_article_cp.php

rt_show_article_cp.php

<?php
// **************************************************************************
// 24.04.08 Show CP from an article in list mode (V 1.0)
// 17.01.10 Show CP from an article in list mode (V 1.1)
// Knut Heermann (flip-flop) http://planmatrix.de
// 25.04.08 Edit by Oliver Georgi
// 26.04.08 KH: Output in only active site level doesn´t run
// 26.04.08 OG: Optimized source and add manual sorting e.g.
//              A{SHOW_CP} B{SHOW_CP} C{SHOW_CP} ....
// 17.01.09 KH: Sort order switch $sort_by_comment
//              sort order: [true|false] [by comment field | by structure]
//
// http://forum.phpwcms.org/viewtopic.php?p=102704#p102704
// http://forum.phpwcms.org/viewtopic.php?p=102798#p102798
//
// TAG:      {SHOW_ARTICLE_CP} for activating in your template
// TAG:      [X]{SHOW_CP} in the comment field of the displayed CP
//           Where [X] is the sort criterion e.g. A{SHOW_CP} B{SHOW_CP} ....
//           Places this tag first in comment field!!!
//
// Condition: CP status: [x] visible  (Or change "acontent_visible")
// Location: Put it into the file e.g.:
//           /template/inc_script/frontend_render/rt_show_article_cp.php
// Switch in conf.inc.php: $phpwcms['allow_ext_render']  = 1;
// **************************************************************************
// ----------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {
   die("You Cannot Access This Script Directly, Have a Nice Day.");
}
// ----------------------------------------------------------------
 
// Nur ausfuehren wenn der Listenmodus eingeschaltet ist
// Only run if list mode is true
if( $content['list_mode'] == true && strpos($content["all"], '{SHOW_ARTICLE_CP}') !== false ) {
 
  $content["all"] = str_replace('{SHOW_ARTICLE_CP}','<div class="show_article_cp">'.my_article_count_cp().'</div>', $content["all"]);
 
} else {
 
   $content["all"] = str_replace('{SHOW_ARTICLE_CP}', '', $content["all"]);
 
}
 
function my_article_count_cp() {
 
 
// CUSTOM INPUT ==============================================
// sort order: [true|false] [by comment field | by structure]
  $sort_by_comment = true;
// ===========================================================
 
 
  // Artikel der aktuellen Seitenebene holen
   // get current listed article IDs
   $article = array();
   foreach($GLOBALS['content']['articles'] as $value) {
      // $article[$value['article_sort']] = $value['article_id'];
      $article[] = $value['article_id'];
   }
 
 
   if(count($article)) {
 
      // Artikel in der DB suchen und CP-ID bereitstellen
      // Search for the article and make the CP-ID available
      $sql  = "SELECT acontent_id, acontent_aid ";
      $sql .= "FROM ".DB_PREPEND."phpwcms_articlecontent ";
      $sql .= "WHERE acontent_visible=1 AND acontent_trash=0 ";
      $sql .= 'AND acontent_aid IN ('.implode(',', $article).') ';
      $sql .= "AND acontent_comment LIKE '%{SHOW_CP}%' ";
      // SORTING ORDER: sort by comment = "acontent_comment" | sort by id = "article_aid" | sort by structure = "acontent_sorting"
      $sql .= ($sort_by_comment)
           ? "ORDER BY acontent_comment"
           : "ORDER BY acontent_sorting"; //,acontent_comment, article_aid, acontent_sorting
 
      $result = _dbQuery($sql);
 
      if(isset($result[0]['acontent_id'])) {  // Any result available?
 
         // CP-ID String fuer SHOW_CONTENT bereitstellen
         // Create CP-IDs string for SHOW_CONTENT
         $cp_my_id_str   = '';
 
         if ($sort_by_comment)  {  // sort by comment?
 
            foreach($result as $value) {
              $cp_my_id_str .= ','.$value['acontent_id'];
            }
 
         }
         else { // sort by structure
 
            foreach($article as $value1) {   // The article sort order by structure
 
              foreach($result as $value2) {  // CP sort order by structure
 
                 if ($value2['acontent_aid'] == $value1)  // CP in article?
 
                    $cp_my_id_str .= ','.$value2['acontent_id'];
              }
 
            }
 
         }
 
 
         // Ausgabe der betroffenen CPs mit SHOW_CONTENT
         // Make the encountered CPs available with SHOW_CONTENT
         return showSelectedContent('CP'.$cp_my_id_str);
      }
   }
   return '';
}
 
?>


Für Programmierer:

Die Basisroutine um die IDs aller Artikel einer Kategorie zu bestimmen:

   $article = array();
 
   foreach($GLOBALS['content']['articles'] as $value) {
      $article[] = $value['article_id'];
   }
 
   if(count($article)) {
      ........


Die ID des aktuellen Artikels:

$GLOBALS['aktion'][1];


Wenn die IDs der CPs eines Artikels verlangt werden, müssen diese aus der DB ausgelesen werden. CP-IDs werden nicht in der übergeordneten Hierarchie, in diesem Fall den Artikeln, festgehalten.
Die Routine dazu ist im RT abgebildet.

Interessant hierzu ist der eingebaute TAG {SHOW_CONTENT:….} bzw. die Funktion

function showSelectedContent($param='') { ...

in ''/include/inc_front/ext.func.inc.php''.

deutsch/ersetzer_rts/frontend_render/show_article_cp.txt · Last modified: 2018/06/03 18:09 (external edit)
www.planmatrix.de www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0