Blog Artikel
load("main");
$fuser = new User($db);
// Check if this is a KB article or traditional blog post
$kb_id = GETPOST('kb', 'int');
$isKBArticle = !empty($kb_id);
$article = null;
$articleKeywords = array();
$articleImage = '';
$articleAuthor = '';
$articleIntro = '';
$articleContent = '';
$articleTitle = '';
$articleDate = 0;
$articleCreator = 0;
if ($isKBArticle) {
// Load knowledgebase article
require_once DOL_DOCUMENT_ROOT.'/knowledgemanagement/class/knowledgerecord.class.php';
$knowledgerecord = new KnowledgeRecord($db);
$result = $knowledgerecord->fetch($kb_id);
if ($result <= 0 || $knowledgerecord->status != 1) {
header("Location: blog.php");
exit;
}
// Load custom fields
$extrafields = new ExtraFields($db);
$extrafields->fetch_name_optionals_label('knowledgemanagement_knowledgerecord');
$knowledgerecord->fetch_optionals();
// Map KB fields to article structure
$articleTitle = $knowledgerecord->question;
$articleContent = $knowledgerecord->answer;
$articleDate = $knowledgerecord->date_creation;
$articleCreator = $knowledgerecord->fk_user_creat;
// Get custom field values
$keywords = isset($knowledgerecord->array_options['options_keywords']) ? $knowledgerecord->array_options['options_keywords'] : '';
$articleImage = isset($knowledgerecord->array_options['options_image']) ? $knowledgerecord->array_options['options_image'] : '';
$articleAuthor = isset($knowledgerecord->array_options['options_author']) ? $knowledgerecord->array_options['options_author'] : '';
$articleIntro = isset($knowledgerecord->array_options['options_intro']) ? $knowledgerecord->array_options['options_intro'] : '';
if (!empty($keywords)) {
$articleKeywords = array_map('trim', explode(',', $keywords));
}
} else {
// This is a traditional blog post - use existing logic
// The page would normally be generated by Dolibarr's website system
// This part maintains compatibility with existing blog posts
// You would typically load $websitepage here for traditional blog posts
// For now, redirect to maintain existing functionality
if (!isset($websitepage) || empty($websitepage->title)) {
header("Location: blog.php");
exit;
}
$articleTitle = $websitepage->title;
$articleContent = $websitepage->content;
$articleDate = $websitepage->date_creation;
$articleCreator = $websitepage->fk_user_creat;
$articleImage = $websitepage->image;
if (!empty($websitepage->keywords)) {
$articleKeywords = array_map('trim', explode(',', $websitepage->keywords));
}
}
?>
← Zurück zur Blog-Übersicht
fetchAll($website->id, 'DESC', 'date_creation', 20, 0, array('type_container'=>'blogpost', 'status'=>1));
foreach($arrayofblogs as $blog) {
if (!empty($blog->keywords)) {
$blogKeywords = array_map('trim', explode(',', $blog->keywords));
// Check for keyword overlap
if (array_intersect($articleKeywords, $blogKeywords)) {
$relatedItem = new stdClass();
$relatedItem->title = $blog->title;
$relatedItem->url = $blog->pageurl . '.php';
$relatedItem->excerpt = substr(strip_tags($blog->description), 0, 120) . '...';
$relatedArticles[] = $relatedItem;
}
}
}
// Get related KB articles
if ($isKBArticle) {
require_once DOL_DOCUMENT_ROOT.'/knowledgemanagement/class/knowledgerecord.class.php';
$kbrecord = new KnowledgeRecord($db);
$allKBArticles = $kbrecord->fetchAll('', '', 0, 20, array('status'=>1));
foreach($allKBArticles as $otherKB) {
if ($otherKB->id != $kb_id) {
$otherKB->fetch_optionals();
$otherKeywords = isset($otherKB->array_options['options_keywords']) ? $otherKB->array_options['options_keywords'] : '';
if (!empty($otherKeywords)) {
$otherKeywordArray = array_map('trim', explode(',', $otherKeywords));
// Check for keyword overlap
if (array_intersect($articleKeywords, $otherKeywordArray)) {
$relatedItem = new stdClass();
$relatedItem->title = $otherKB->question;
$relatedItem->url = 'blog-article.php?kb=' . $otherKB->id;
$relatedItem->excerpt = substr(strip_tags($otherKB->answer), 0, 120) . '...';
$relatedArticles[] = $relatedItem;
}
}
}
}
}
// Remove duplicates and limit
$relatedArticles = array_slice($relatedArticles, 0, 4);
if (!empty($relatedArticles)):
?>