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

  • Mit einem TAG im Notizfeld z.B. [Xanchor:nice-cp-text-anchor]
  • oder Titel oder Untertitel werden für den Text verwendet.

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

  • $phpwcms['allow_ext_render'] = 1;



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"]);
        }
 
    }
 
}
 
?>
deutsch/ersetzer_rts/frontend_render/change-cp-anchor-text.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