WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 24.01.2025 08:36:01

benvo
Member

RSS Feed - Probleme mit Validierung

Ich habe auf einer Internetseite mittels "/modules/news_img/rss.php?page_id=X&section_id=XX" einen RSS-Feed meiner Newsbeiträge eingerichtet aber bekomme immer wieder Fehlermeldungen beim Validieren des Feeds auf: W3C-Feed Validator

Das Problem ist, das ich in den News teilweise auf Unterseiten verlinkt habe und dies mit [wblinkXX] gemacht habe um die Links dynamisch zu halten.

Der RSS-Feed gibt mir aber genau das als Fehler aus, da er diese Links nicht verarbeitet sondern einfach ausgibt. Hat jemand dazu eine Lösung, die nicht die Eingabe der fixen URL des Links beinhaltet, ich würde gerne weiter mit [wblink] arbeiten, da ich hier und da im Rahmen von SEO die URLs der Unterseiten anpasse.

Ich freue mich über Vorschläge – Danke!

Offline

#2 24.01.2025 19:29:08

florian
Administrator

Re: RSS Feed - Probleme mit Validierung

Ändere in der rss.php Zeile 81

while($item = $result->fetchRow()){  ?>

zu

while($item = $result->fetchRow()){ 

$pattern = '/\[wblink([0-9]+)\]/isU';
if (preg_match_all($pattern, $item["content_short"], $aMatches, PREG_SET_ORDER))
{
	$aSearchReplaceList = array();
	foreach ($aMatches as $aMatch) {
		 // collect matches formatted like '[wblink123]' => 123
		$aSearchReplaceList[strtolower($aMatch[0])] = $aMatch[1];
	}
	// build list of PageIds for SQL query
	$sPageIdList = implode(',', $aSearchReplaceList); // '123,124,125'
	// replace all PageIds with '#' (stay on page death link)
	array_walk($aSearchReplaceList, function(&$value, $index){ $value = '#'; });
	$sql = 'SELECT `page_id`, `link` FROM `'.TABLE_PREFIX.'pages` '
		 . 'WHERE `page_id` IN('.$sPageIdList.')';
	if (($oPages = $database->query($sql))) {
		while (($aPage = $oPages->fetchRow(MYSQLI_ASSOC))) {
			$aPage['link'] = ($aPage['link']
							 ? PAGES_DIRECTORY.$aPage['link'].PAGE_EXTENSION
							 : '#');
			// collect all search-replace pairs with valid links
			if (is_readable(WB_PATH.$aPage['link'])) {
				// replace death link with found and valide link
				$aSearchReplaceList['[wblink'.$aPage['page_id'].']'] =
					WB_URL.$aPage['link'];
			}
		}
	}
	// replace all found [wblink**] tags with their urls
	$item["content_short"] = str_ireplace(
		array_keys($aSearchReplaceList),
		$aSearchReplaceList,
		$item["content_short"]
	);
}

(ist aus dem Tiny Newsletter Modul übernommen und angepasst)


Sorgen sind wie Nudeln: man macht sich meist zu viele.

Offline

Board footer

up