Differences

This shows you the differences between two versions of the page.

deutsch:ersetzer_rts:frontend_render:relatedx [2012/09/25 10:05]
Knut Heermann (flip-flop)
deutsch:ersetzer_rts:frontend_render:relatedx [2018/06/03 18:09] (current)
Line 1521: Line 1521:
\\ \\
 +\\
 +
 +==== V 1.31 ====
 +
 +**27.09.12 KH Update:** Sortiert die Artikel innerhalb der Kategorie nach manueller Reihenfolge.
 +
 +In der Datei ##config\phpwcms\conf.template_default.inc.php## im Bereich **%%// related articles based on keywords%%** setze bitte  
 +
 +   $template_default['related']['sort_by']      = 'sort_asc|sort_desc';    
\\ \\
 +
 +
 +<code php|h {RELATEDX:count:key words:category-ID} |h>
 +<?php
 +/*************************************************************************************
 +   Copyright notice
 + 
 +   (c) 2002-2011 Oliver Georgi (oliver@phpwcms.de) // All rights reserved.
 + 
 +   This script is part of PHPWCMS. The PHPWCMS web content management system is
 +   free software; you can redistribute it and/or modify it under the terms of
 +   the GNU General Public License as published by the Free Software Foundation;
 +   either version 2 of the License, or (at your option) any later version.
 + 
 +   The GNU General Public License can be found at http://www.gnu.org/copyleft/gpl.html
 +   A copy is found in the textfile GPL.txt and important notices to the license
 +   from the author is found in LICENSE.txt distributed with these scripts.
 + 
 +   This script is distributed in the hope that it will be useful, but WITHOUT ANY
 +   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 +   PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 + 
 +   This copyright notice MUST APPEAR in all copies of the script!
 + 
 +-------------------------------------------------------------------------------------
 +V 1.0
 +15.03.09 KH (flip-flop) RT RELATED cut out (frontend snippet)
 +   {RELATEDX:count:key word´s:category-ID}
 +...Please always fill out all fields: e.g.
 +   {RELATEDX:0:tip,top,flip,flop:0}  -> Search beginning behind cad-ID=0 = home
 +   {RELATEDX:5:tip,top,flip,flop:2}  -> Output first 5 entries, search beginning behind cad-ID=2
 + 
 +V 1.1
 +20.01.11 KH - Update: Last version don´t work right in newer CMS vrsions (since r400).
 + http://code.google.com/p/phpwcms/source/detail?r=400&path=/trunk/include/inc_front/front.func.inc.php
 +22.01.11 KH : Start category in result
 + 
 +V 1.2
 +27.01.11 KH - Update: Added "article creaded date" -> see CUSTOM VAR
 + 
 +V 1.21
 +25.04.11 KH - Update: Added "article changed date" -> see CUSTOM VAR
 +                      Added: Output selection switch for article [date creaded | date changed]
 +V 1.3
 +27.04.11 KH - Update: Added "show article in hidden categories" -> see CUSTOM VAR
 +                      Added: Output selection switch for article in [no hidden categories | all categories]
 +03.05.11 KH - Update: Error correction in the function call "buildStruct_TopDown"
 + 
 +V 1.31
 +27.09.12 KH - Update: Added: Sorts the articles in the category for manual order.
 + 
 + 
 +*************************************************************************************/
 +// ----------------------------------------------------------------------------------
 +// obligate check for phpwcms constants
 +if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");}
 +// ----------------------------------------------------------------------------------
 + 
 + 
 + 
 +// related articles based on keywords, inspired by Magnar Stav Johanssen
 +if(strpos($content["all"],'{RELATEDX:') !== false) {
 + 
 +// CUSTOM VAR ========================== +KH: 27.01.11
 +// Article date created or arcticle date changed (+KH 25.04.2011)
 +// Set in conf_template_default.inc.php e.g: $template_default['related']['date_format'] = 'd.m.Y';
 +// or set up in var $date_form
 + 
 +    $date_output      = 2;       // [0|1|2] No date | date created | date changed  // +KH: 25.04.11
 +    $date_form        = 'd.m.Y'; // '';
 +    $date_form_before = '<span style="font-size:70%; color: grey;"> [';
 +    $date_form_after  = ']</span>';
 +    $show_hidden      = 1;       // search in [0] = no hidden categories  [1] = all categories
 + 
 +// =====================================
 + 
 + 
 +    $date_form = (!isset($template_default['related']['date_format'])) ? $date_form : $template_default['related']['date_format'];  // +KH: 27.01.11
 + 
 +    if (!$no_content_for_this_page && !empty($content["articles"][$aktion[1]]["article_keyword"])) {
 +        $related_keywords = $content["articles"][$aktion[1]]["article_keyword"];
 +    } else {
 +        $related_keywords = '';
 +    }
 + 
 +// -------------------------------------------------------------
 + 
 +// Function imported from   /include/inc_front/front.func.inc.php ->  line 3305
 +// Added KH 27.04.2011: Var $show_hidden
 +function my1_getStructureLevelDisplayStatus(&$level_ID, &$current_ID, $show_hidden=1) {
 + 
 +    if($GLOBALS['content']['struct'][$level_ID]['acat_struct'] == $current_ID && $level_ID) {
 +        if($GLOBALS['content']['struct'][$level_ID]['acat_regonly'] && !FEUSER_LOGIN_STATUS) {
 +            return false;
 +        }
 +        // Added KH 27.04.2011: OR xxxx = Show_hidden
 +        if(empty($GLOBALS['content']['struct'][$level_ID]['acat_hidden']) OR $GLOBALS['content']['struct'][$level_ID]['acat_hidden']==$show_hidden) {
 +            return true;
 +        } elseif($GLOBALS['content']['struct'][$level_ID]["acat_hidden"] == 2 && isset($GLOBALS['LEVEL_KEY'][$level_ID])) {
 +            return true;
 +        }
 +        return false;
 +    }
 +    return false;
 +}
 + 
 +function buildStruct_TopDown($start=0, &$my_cat_id='',$show_hidden=1) {  // KH: V1.1 25.01.2011
 + 
 +        // Original from: function my_getStructureChildData($level_id=0) +KH 27.04.2011
 +        $struct_data = array();
 +        if( isset($GLOBALS['content']['struct'][$start]) ) {
 +            foreach($GLOBALS['content']['struct'] as $key => $value) {
 +                if( my1_getStructureLevelDisplayStatus($key, $start,$show_hidden) ) {
 +                    $struct_data[$key]    = $value;
 +                }
 +            }
 +        }
 +        $struct = $struct_data;
 + 
 + 
 +    foreach($struct as $value) {
 + 
 +        $my_cat_id .= ($my_cat_id != '') ? ','.$value['acat_id'] : $value['acat_id'];
 +        buildStruct_TopDown($value['acat_id'],$my_cat_id,$show_hidden);
 + 
 +//        echo  '||'.$value['acat_id'].' ,';
 + 
 +    }
 + 
 +return $my_cat_id;
 + 
 +}
 + 
 +// =================================================================
 + 
 + 
 + 
 +function my_get_related_articles($keywords='', $current_article_id=0, $template_default='', $max_cnt_links=10, $dbcon ,$cat_id='', $date_output, $date_form, $date_form_before, $date_form_after,$show_hidden) {
 +    // find keyword for current article used for RELATED replacementtag
 +    // prepared and inspired by Magnar Stav Johanssen
 + 
 +    $dummy = '';
 +    $temp = buildStruct_TopDown($cat_id,$dummy,$show_hidden);    // find all permitted IDs behind $cat_id
 + 
 +    if (!empty($temp)) $cat_id = $cat_id.','.$temp;  // +KH: 20.01.11 add start category
 +// PATCH01
 +//    $cat_id = $temp;                               // If you don´t need the start cat in result
 + 
 +    $keyword_links = "";
 +    $max_cnt_links = intval($max_cnt_links);
 + 
 +    $keywords = str_replace("ALLKEYWORDS", $GLOBALS['content']['all_keywords'].',', $keywords);
 + 
 +    // replace unwanted chars and convert to wanted
 +    $keywords = str_replace(";", ",", $keywords);
 +    $keywords = str_replace("'", "", $keywords);
 +    $keywords = str_replace(" ", ",", $keywords);
 +    $keywords = str_replace(",,", ",", $keywords);
 + 
 +    // choose comma separated keywords
 +    $keywordarray = explode (",", $keywords);
 +    $keywordarray = array_map('trim', $keywordarray);
 +    $keywordarray = array_diff($keywordarray, array(''));
 +    $keywordarray = array_unique($keywordarray);
 +    $keywordarray = array_map('strtoupper', $keywordarray);
 +    // check for empty keywords or keywords smaller than 3 chars
 +    if(is_array($keywordarray) && count($keywordarray)) {
 +        foreach($keywordarray as $key => $value) {
 + 
 +            if(substr($keywordarray[$key], 0, 1) == '-') {
 +                $doNotUse = substr($keywordarray[$key], 1);
 +                foreach($keywordarray as $key2 => $value2) {
 +                    if($doNotUse == $value2) {
 +                        unset($keywordarray[$key2]);
 +                         unset($keywordarray[$key]);
 +                    }
 +                }
 +            }
 + 
 +            if(isset($keywordarray[$key]) && (strlen($keywordarray[$key]) < 3 || empty($keywordarray[$key]))) {
 +                unset($keywordarray[$key]);
 +            }
 +        }
 +    }
 + 
 +    if(is_array($keywordarray) && count($keywordarray)) {
 +        $where = "";
 +         foreach($keywordarray as $value) {
 +            //build where keyword = blabla
 +            $where .= ($where) ? " OR " : "";
 +            //replace every "'" to "''" for security reasons with aporeplace()
 +            $where .= "article_keyword LIKE '%".aporeplace($value)."%'";
 +        }
 +        $limit = ($max_cnt_links) ? " LIMIT ".$max_cnt_links : "";
 +// -KH:200111
 +//         $sql  =    "SELECT article_id, article_title, article_cid, article_subtitle, article_summary, article_alias ";
 +// +KH:200111
 +        $sql  =    "SELECT article_id, article_title, article_cid, article_subtitle, article_summary, article_alias, article_redirect, article_morelink, article_created, UNIX_TIMESTAMP(article_tstamp) AS article_changed ";
 +        $sql .=    "FROM ".DB_PREPEND."phpwcms_article WHERE article_deleted=0 AND ";
 +        $sql .=    "article_id<>".intval($current_article_id)." AND ";
 +        $sql .=    "article_cid IN (".$cat_id.") AND ";
 +        // VISIBLE_MODE: 0 = frontend (all) mode, 1 = article user mode, 2 = admin user mode
 +        switch(VISIBLE_MODE) {
 +            case 0: $sql .=    "article_public=1 AND article_aktiv=1 AND ";
 +                    break;
 +                case 1: $sql .= "article_uid=".$_SESSION["wcs_user_id"]." AND ";
 +                    break;
 +            //case 2: admin mode no additional neccessary
 + 
 +        }
 +        $sql .=    "article_begin < NOW() AND article_end > NOW() AND (".$where.") ";
 + 
 +        if(empty($template_default['sort_by'])) $template_default['sort_by'] = '';
 + 
 +        switch($template_default['sort_by']) {
 + 
 +            // +KH:27.09.12  Sorts the articles in the category for manual order.
 +            case 'sort_asc':
 +                    $sql .=    "ORDER BY article_cid, article_sort";
 +                    break;
 +            case 'sort_desc':
 +                    $sql .=    "ORDER BY article_cid, article_sort DESC";
 +                    break;
 +            // ----------
 + 
 +            case 'title_asc':
 +                    $sql .=    "ORDER BY article_title";
 +                    break;
 + 
 +            case 'title_desc':
 +                    $sql .=    "ORDER BY article_title DESC";
 +                    break;
 + 
 +            case 'ldate_asc':
 +                    $sql .=    "ORDER BY article_begin";
 +                    break;
 + 
 +            case 'ldate_desc':
 +                    $sql .=    "ORDER BY article_begin DESC";
 +                    break;
 + 
 +            case 'kdate_asc':
 +                    $sql .=    "ORDER BY article_end";
 +                    break;
 + 
 +            case 'kdate_desc':
 +                    $sql .=    "ORDER BY article_end DESC";
 +                    break;
 + 
 +            case 'cdate_asc':
 +                    $sql .=    "ORDER BY article_created";
 +                    break;
 + 
 +                case 'cdate_desc':
 +                    $sql .=    "ORDER BY article_created DESC";
 +                    break;
 + 
 +            default:
 +                    $sql .=    "ORDER BY article_tstamp DESC";
 +        }
 + 
 +        $sql .= $limit;
 + 
 +        // related things
 +        $target = $template_default["link_target"] ? ' target="'.$template_default["link_target"].'"' : '';
 +        $result = _dbQuery($sql);
 +        if(isset($result[0])) {
 +            foreach($result as $row) {
 +// echo 'Article ===========';
 + 
 +                if(empty($row['article_redirect'])) {
 +                    if(empty($row['article_morelink'])) {
 +                        continue;
 +                    }
 +                    $article_link = 'index.php?'.setGetArticleAid($row).'"'.$target;
 +                } else {
 +                    $redirect = get_redirect_link($row['article_redirect'], ' ', '');
 +                    $article_link = $redirect['link'].'"'.$redirect['target'];
 +                }
 + 
 +                if($template_default["link_length"] && strlen($row['article_title']) > $template_default["link_length"]) {
 +                    $article_title = substr($row['article_title'], 0, $template_default["link_length"]).$template_default["cut_title_add"];
 +                } else {
 +                    $article_title = $row['article_title'];
 +                }
 +                $keyword_links .= $template_default["link_before"];
 +                $keyword_links .= $template_default["link_symbol"];
 +                $keyword_links .= '<a href="' . $article_link . '>';
 +                $keyword_links .= html_specialchars($article_title);
 +                if (!empty($date_form)) {
 +                    switch($date_output) { // [0|1|2] No date | date created | date last change  // +KH: 25.04.11
 +                        case 1: $keyword_links .= $date_form_before.date($date_form, $row['article_created']).$date_form_after;
 +                        break;
 + 
 +                        case 2: $keyword_links .= $date_form_before.date($date_form, $row['article_changed']).$date_form_after;
 +                        break;
 + 
 +                        default: $keyword_links .= '';
 +                    }
 +//                    $keyword_links .= $date_form_before.date($date_form, $row['article_created']).$date_form_after; // +KH: 27.01.11
 +                }
 + 
 +                $keyword_links .= '</a>' . $template_default["link_after"];
 +            }
 +        }
 +    }
 + 
 +    // parses all system RTs  +KH 25.01.2011
 +    $keyword_links = html_parser($keyword_links);
 + 
 +    //enclose whole
 +    return (empty($keyword_links)) ? '' : $template_default["before"].$keyword_links.$template_default["after"];
 +}
 + 
 + 
 + 
 +    $content["all"] = preg_replace('/\{RELATEDX:(\d+)\}/e','get_related_articles($related_keywords,$aktion[1],$template_default["related"],"$1",$db);',$content["all"]);
 +    $content["all"] = preg_replace('/\{RELATEDX:(\d+):(.*?):(\d+)\}/e','my_get_related_articles("$2",$aktion[1],$template_default["related"],"$1",$db, "$3",$date_output,$date_form,$date_form_before, $date_form_after, $show_hidden);',$content["all"]);
 + 
 + 
 +}
 + 
 +?>
 +</code>
 +
 +\\
 +\\
 +
deutsch/ersetzer_rts/frontend_render/relatedx.1348560303.txt.gz · Last modified: 2018/06/03 18:07 (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