Tausche CP-Ankertext

Dieser RT bietet die Möglichkeit CP-Ankern “sprechende Namen” zu geben.

Anker der jedem CP autom. mitgegeben werden kann z.B. <a name="cpid123"> (123 wäre die Id des CP)
wird zu: <a name="mein-toller-ankername">

Diese Namen werden eingestellt im jeweiligen CP

Die Einstellungen dazu werden im Script im Bereich CUSTOM VAR vorgenommen.

Zusätzlich kann eingestellt werden ob auch unsichtbare CPs (wenn mit CP-Alias oder SHOW_CONTENT gearbeitet wird) in den Prozess mit einbezogen werden. (Default: $visible_cp = false;)

Vor jedem Anker kann ein Text gesetzt werden z.B. $prev_anchor = 'prev-'; === > <a name="prev-nice-cp-text-anchor">.
Einstellbar ebenfalls im Script in CUSTOM VAR.

Verwendbare Zeichen:

(a-z A-Z) (0-9) (_) (-) (.)
Alle anderen Zeichen werden konvertiert, z.B. wird aus “Mein größter Ankertext” === > “mein_groesster_ankertext”.
Alle Zeichen werden in Kleinbuchstaben konvertiert. Ist das nicht gewünscht kann in ”function rt_val_special_chars($str)” die Anweisung $str = strtolower( $str ); auskommentiert werden.

Wird eine andere Ersetzung gewünscht kann das in in der o.g. Funktion geändert werden.


—-

rt_change_cp_anchor_text V1.0 12.06.2010

Docu: –
Forum: http://forum.phpwcms.org/viewtopic.php?p=124823

Autor: K.Heermann (flip-flop) http://planmatrix.de
CMS Version: >= 1.3
Version: V1.0

Tag: –

Dateiname: rt_change_cp_anchor_text.php

Verzeichnis: template/inc_script/frontend_render/

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




Code:

Datei: template/inc_script/frontend_render/rt_change_cp_anchor_text.php

rt_change_cp_anchor_text

<?php
/*
* **************************************************************************
* 12.06.09 CP (V 1.0): Change anchor for CPs into given text
* - In Notes fiels with the tag: [Xanchor:nice-cp-text]
* - Using the title text
* - Using the subtitle text
*
* E.g.: IF set [Xanchor:nice-cp-anchor] changes
* <a name="cpid10" id="cpid10" class="cpidClass"></a>
* to
* <a name="nice-cp-anchor" id="nice-cp-anchor" class="cpidClass"></a>
*
* hhttp://forum.phpwcms.org/viewtopic.php?p=124823
*
* TAG:      [Xanchor:nice-cp-anchor-text] in the comment field of the displayed CP
*           Places this tag first in comment field!!!
*
* Location: Put it into the file e.g.:
*           /template/inc_script/frontend_render/rt_change_cp_anchor_text.php
* Switch in conf.inc.php: $phpwcms['allow_ext_render']  = 1;
*
* Knut Heermann (flip-flop) http://planmatrix.de
*
* **************************************************************************
*/
// -------------------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {
   die("You Cannot Access This Script Directly, Have a Nice Day.");
}
// -------------------------------------------------------------------------
 
// Ist ein CP Anker vorhanden
// Only run if a cp achor is available
if ( strpos($content["all"], '<a name="cpid') !== false ) {
 
// ------- CUSTOM VAR ------------------------------------------------------
 
// Welcher Text soll als Anker eingesetzt werden
// What text is to be used as anchor
 $anchor_text = 0;    // [0=Notiz | 1=Inhaltstitel | 2=Untertitel]
                      // [0=notes | 1=title        | 2=subtitle  ]
 
// Text vor dem Anker   // Text before the anchor
 $prev_anchor = '';     // Z.B.: name="prev-nice-cp-anchor"
                        // E.g: name="prev-nice-cp-anchor"
 
// Zeige sichtbare CPs   // Show visible CPs
// Spezieller Schalter wenn CP-alias oder SHOW_CONTENT verwendet wird.
// Special switsch if you work with CP-alias or SHOW_CONTENT
 $visible_cp = false;    // [true|false] [Nur sichtbare CPs | alle CPs]
                         // [true|false] [Only visible CPs  | all CPs ]
 
// ------- END CUSTOM VAR --------------------------------------------------
 
 
// Validiere spezielle Zeichen   // Validate special chars
// Verwendbare Zeichen   // Usable characters: (a-z A-Z) (0-9) (_) (-) (.)
function rt_val_special_chars($str) {
 
    $replace = array(
    ' ' => '_', '\\' => '-', '/' => '-',
    'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue',
    'Ä' => 'Ae', 'Ö' => 'Oe', 'Ü' => 'Ue', 'ß' => 'ss',
    'à' => 'a', 'á' => 'a', 'â' => 'a' , 'ã' => 'a', 'å' => 'a',
    'ç' => 'c',
    'è' => 'e', 'é' => 'e', 'ê' => 'e' , 'ë' => 'e',
    'ì' => 'i', 'í' => 'i', 'î' => 'i' , 'ï' => 'i',
    'ò' => 'o', 'ó' => 'o', 'ô' => 'o' , 'õ' => 'o', 'õ' => 'o', 'ø' => 'o',
    'ù' => 'u', 'ú' => 'u', 'û' => 'u' ,
    'ý' => 'y', 'ÿ' => 'y',
    'ñ' => 'n'
    );
 
    $str = strtr( $str, $replace );
 
    // Convert into lower case: Comment it out if you do not need it.
    $str = strtolower( $str );
 
    return trim( $str );
}
 
// *************************************************************************
    // CP ID holen   // Catch cp id
    if (preg_match_all('/\<a name="cpid(.*?)"/i', $content["all"], $match)) {
 
 
        // DB Data
        $sql  = "SELECT acontent_id, acontent_title, acontent_subtitle, acontent_comment ";
        $sql .= "FROM ".DB_PREPEND."phpwcms_articlecontent ";
        $sql .= 'WHERE acontent_id IN ('.implode(',', $match[1]).') ';
        $sql .= "AND acontent_trash=0 ";
        if ($visible_cp)             $sql .= "AND acontent_visible=1 ";        // Only visible CPs
        if         ($anchor_text == 1)    $sql .= "AND acontent_title <> '' ";    // Title is anchor text
        elseif     ($anchor_text == 2)    $sql .= "AND acontent_subtitle <> '' ";    // SubTitle is anchor text
        else                          $sql .= "AND acontent_comment LIKE '%[Xanchor:%' "; // notic text is anchor text
 
        $result = _dbQuery($sql);
 
 
        // Aller verfuegbaren Anker ersetzen   // replace all available anchors
        foreach ($result as $value) {
 
            // Title is anchor text
            if     ($anchor_text == 1)     $anchor_replace = $prev_anchor.$value['acontent_title'];
            // SubTitle is anchor text
            elseif     ($anchor_text == 2)    $anchor_replace = $prev_anchor.$value['acontent_subtitle'];
            // notic text is anchor text
            else                         $anchor_replace = $prev_anchor.preg_replace('/\[Xanchor:(.*?)]/i','$1',$value['acontent_comment']);
 
            $content["all"] = str_replace('name="cpid'.$value['acontent_id'].'"', 'name="'.rt_val_special_chars($anchor_replace).'"', $content["all"]);
//            $content["all"] = str_replace('id="cpid'.$value['acontent_id'].'"', 'id="'.rt_val_special_chars($anchor_replace).'"', $content["all"]);
        }
 
    }
 
}
 
?>