Verwandte (related) Links

Begonnen von Webfan, 06 Januar 2008, 21:01:06

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Webfan

Hallo,
hab es irgendwie nicht hinbekommen für ein Suchwort mehrere Links anzugeben.

Habe folgendes ausprobiert:
im Block block-vkp_News_Related.php habe ich alles von
// Relationen aus Tabelle
bis $content .= $related; gelöscht und ersetzt durch:
// Relationen aus Array
include("includes/mxRelatedArray.php");
$relatedarray = array_change_key_case($relatedarray);
$search = join('|', array_keys($relatedarray));
$search = '#(?:[^[:alnum:]])(' . $search . ')(?:[^[:alnum:]])#i';
if (preg_match_all($search , strip_tags($GLOBALS['story_blocks']["completetext"]), $matches)) {
    $matches = array_change_key_case(array_flip(array_unique($matches[1])), CASE_LOWER);
    foreach ($matches as $key => $dummy) {
      foreach($relatedarray[$key] as $title => $url)
         {
         $content .='- <a href="'.$url.'" target="_blank">'.$title.'...</a><br>';
         }
      }
}


Das Array $relatedarray in includes/mxRelatedArray.php habe ich nun in folgender Fom:

$relatedarray = array (

        "Suchwort_1" => array(
                            "Linkname_1" => "http://www.link1...",
                            "Linkname_2"=>"http://www.link2...",
                            ),
        "Suchwort_2" => array(
                            "Linkname_3" => "http://www.link3...",
                            "Linkname_4"=>"http://www.link5...",
                            ),
//und so weiter...
);

Das funktioniert so ganz prima, trotzdem mal die Frage ob ich zu doof war das Array wie vorgesehen anzupassen (die Findefunktion zu benutzen  ;) ), oder sind mehrere Links pro Suchwort einfach nicht vorgesehen?

mfg

Webfan

Änderungen: auch den title durchsuchen, keine doppelten Links, target _blank nur bei externen Links (webfan.de ersetzen !!!):

// Relationen aus Array
include("includes/mxRelatedArray.php");
$relatedarray = array_change_key_case($relatedarray);
$search = join('|', array_keys($relatedarray));
$search = '#(?:[^[:alnum:]])(' . $search . ')(?:[^[:alnum:]])#i';
if (preg_match_all($search , strip_tags($GLOBALS['story_blocks']["completetext"]), $matches)
    || preg_match_all($search , strip_tags($GLOBALS['story_blocks']["title"]), $matches) ) {
    $matches = array_change_key_case(array_flip(array_unique($matches[1])), CASE_LOWER);
    foreach ($matches as $key => $dummy) {
      foreach($relatedarray[$key] as $title => $url)
         {
         if(!eregi($url, $content))
                 {
                 if(eregi('webfan.de',$url) ){
                                              $content .='- <a href="'.$url.'">'.$title.'...</a><br>';
                                             }
                                             else{
                                             $content .='- <a href="'.$url.'" target="_blank">'.$title.'...</a><br>';
                                                 }
                 
                 }
         }
      }
}