Özellikleri:
- Tüm linkler eksiksiz çekilir
- İçerikte olan linkler iç sayfada açılır yani liçerikte paylaşılan linkler aynı sitede açılır
- İçerik resimleri ajax/modal açılır (Bu modül için ajax ve bootstrap kütüphanesi kullanmanız gerek)
- Gereksiz tüm wikipedia linkleri etkisiz hale getirilmiştir
- Dilediğiniz dilde dilediğiniz içerikleri çeker
- Özel CSS yazıldı ve sitenin düzenini bozmamaktadır
- Wikipedia içerik arama motoru geliştirilecek
- İçerik hangi dildeyse dile göre içerik çektirilecek
<?php
function clear_html($comment)
{
$allow_tags = "<br><a><img><div><b><strong><em><i><ul><li><ol><pre><code><blockquote><ins><p><del><h><h1><h2><h3><h4><h5><h6><table><tr><td><th><tbody><thead><tfoot><style><small><strike><tt><sub><sup><center><u><dl><dt><dd><fieldset><label><video><button><caption><pre><big><abbr><figcaption><figure>";
return strip_tags($comment, $allow_tags);
}
function wikiArticle($wikidata, $lang)
{
$options = [
'http' => [
'method' => "GET",
'header' =>
"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n" . // check function.stream-context-create on php.net
"User-Agent: Mozilla/5.0 (Linux; Android 10; SM-G980F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36\r\n", // i.e. An iPad
],
];
$context = stream_context_create($options);
$l = "https://".$lang.".wikipedia.org/wiki/".$wikidata;
if ($wikidata != "") {
$wiki = file_get_html($l, false, $context);
$html_data = $wiki->find('div[class="mw-parser-output"]', 0);
if (!$html_data) {
echo "Henüz Bilgi Eklenmedi. En Kısa Sürede Ekleyeceğiz...";
exit();
}
$html1 = str_get_html($html_data);
foreach ($html1->find('a[class="new"]') as $new_a) {
$ara1 = ara('/w/index.php?title=', '"', $new_a);
$ara2 = ara('title="', '"', $new_a);
$html1 = str_replace([$ara1[0], $ara2[0]], ["", ""], $html1);
$html1 = str_replace("/w/index.php?title=", "javascript:void(0);", $html1);
}
$html2 = str_get_html($html1);
foreach ($html2->find('a') as $a_data) {
$ara1 = ara('/wiki/', ':', $a_data);
$ara2 = ara('/wiki/' . $ara1[0] . ':', '"', $a_data);
$html2 = str_replace('/wiki/' . $ara1[0] . ':' . $ara2[0], 'javascript:void(0);', $html2);
}
$html3 = str_get_html($html2);
foreach ($html3->find('h2[class="section-heading"]') as $h2_data) {
$html3 = str_replace($h2_data, '<h2 style="font-size:20px;" class="section-heading collapsible-heading" id="' . $h2_data->find('span[class="mw-headline"]', 0)->id . '">' . $h2_data->find('span[class="mw-headline"]', 0)->innertext . '</h2>', $html3);
}
$html4 = str_get_html($html3);
foreach ($html4->find('h3') as $h3_data) {
$html4 = str_replace($h3_data, '<h3 style="font-size:17px;" class="mw-headline" id="' . $h3_data->find('span[class="mw-headline"]', 0)->id . '">' . $h3_data->find('span[class="mw-headline"]', 0)->innertext . '</h3>', $html4);
}
$html5 = str_get_html($html4);
foreach ($html5->find('h4') as $h4_data) {
$html5 = str_replace($h4_data, '<h4 style="font-size:14px;" class="mw-headline" id="' . $h4_data->find('span[class="mw-headline"]', 0)->id . '">' . $h4_data->find('span[class="mw-headline"]', 0)->innertext . '</h3>', $html5);
}
$html6 = str_get_html($html5);
foreach ($html6->find('span[class="mw-editsection"]') as $span_data) {
$html6 = str_replace($span_data, '', $html6);
}
$html7 = str_get_html($html6);
$html7 = str_replace(
array($html7->find('table[class="metadata plainlinks mbox-small"]', 0),
$html7->find('div[class="documentation-container"]', 0), $html7->find('a[class="mw-kartographer-map mw-kartographer-container center"] img', 0)),
array('', '', ''), $html7);
echo clear_html($html7);
} else {
echo "Henüz Bilgi Eklenmedi. En Kısa Sürede Ekleyeceğiz...";
}
}
?>
<html>
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
<link href="https://countryinfo.io/material/css/wiki/wiki_doc.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wiki-bodyContent" class="wiki-content">
<div id="wiki-mw-content-text" class="wiki-mw-body-content wiki-mw-content-ltr" lang="tr" dir="ltr">
<?php
echo wikiArticle("Türkiye", "tr");
?>
</div>
</div>
<script>
$('.mw-file-description img').click(function() {
var image = $(this).attr("src");
var width = $(this).attr("data-file-width");
if(width) {
var img_width = width+"px";
} else {
var img_width = "450px";
}
var wiki_image = image.replace(/\/(\d+)\px/g,'/600px');
$("#wiki_image_modal").modal('show');
$("#wiki_image").attr("src", wiki_image);
});
$('.image img').click(function() {
var image = $(this).attr("src");
var width = $(this).attr("data-file-width");
if(width) {
var img_width = width+"px";
} else {
var img_width = "450px";
}
var wiki_image = image.replace(/\/(\d+)\px/g,'/600px');
$("#wiki_image_modal").modal('show');
$("#wiki_image").attr("src", wiki_image);
});
</script>
<div class="modal fade" id="wiki_image_modal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Resim Detayı</h5>
</div>
<div class="modal-body language-style" style="max-height:450px;">
<img id="wiki_image" loading="lazy" style="width:100%;" src="<?php echo siteConf()->site_url."/material/img/svg/loading.svg";?>" />
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary light" data-bs-dismiss="modal">Kapat</button>
</div>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.7.0.min.js" integrity="sha256-2Pmvv0kuTBOenSvLm6bvfBSSHrUJ+3A7x6P5Ebd07/g=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.min.js" integrity="sha384-cuYeSxntonz0PPNlHhBs68uyIAVpIIOZZ5JqeqvYYIcEL727kskC66kF92t6Xl2V" crossorigin="anonymous"></script>
https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js
</body>
</html>Örnek DenemeÖrnek denemede resimlerin modal olarak açılması için bootstrap ve ajax kütüphanesini kullanınız (Örneğe eklenmiştir). Özel olarak yazılmış wiki_doc.css'yi de örnekteki linkten indirebilirsiniz.
Demo: https://countryinfo.io/wiki/Türkiye
Görüş ve önerilerinizi belirtirseniz sevinirim.