XenForo Destek, Eklenti ve Tema Geliştirme ve Paylaşım Platformu

Çalışmalarınıza, sorunlarınıza destek ve çözüm arıyorsanız doğru yerdesiniz! XenForo konusunda uzman ekibimiz ile 7/24 yanınızdayız. Sizde bu ailenin bir üyesi olmak için kayıt olmanız yeterli.

XenForo Harici Sayfa İçerisinde Belirli Bir Mesajı Gösterme

XDinc

XDinc

Emektar Üye
Katılım
Ocak 2, 2017
Mesajlar
1,234
Beğeniler
2,705
Online Süre
10Saat 19Dak.
#1
Bu konuda xenforo için oluşturduğunuz bir sayfada nasıl belirli bir mesajı gösterebileceğinizi anlatacağım.
Ek olarak nasıl sayfa oluşturabileceğinizi bu yazımda anlattım,daha detaylı olarak görebilirsiniz.

Adım 1 – Kodu oluşturma

Hadi yazının içeriğini kod ile almakla başlayalım

İlk yapmanız gereken şey yeni bir dosya oluşturmak. Bu dosyayı istediğiniz herhangi bir yere koyabilirsiniz,fakat biz bu yazıda onun için ayrılmış yeri kullanacağız.

Xenforonun kurulu olduğu dizinde library klasörüne girin ve bu dizin yapısını oluşturun:

--|library
------|ShowAPost *bu klasörü oluştur*
---------|View.php *bu dosyayı oluştur*
---------|Index.php *bu dosyayı oluştur*

Index.php dosyası sayfamız için geri çağırım sınıf ve metodunu tanımlayacak dosyadır.Aşağıdaki içeriği kopyalayın ve onun içine yapıştırın.

Kod:
<?php
/**
* Sayfa belirli bir mesajı gösterir.
* Bu kod sayfada belirli bir mesajı göstermek için tüm gereksinimlere sahiptir. Sadece yorumları okuyabilirsiniz.
* Fuhrmann
*/

class ShowAPost_Index
{
public static function showAPostInPage(XenForo_ControllerPublic_Abstract $controller, XenForo_ControllerResponse_Abstract &$response)
{
/* Yüklenecek olan yazının idsini atayın*/
$postId = 180;

/* Yeni bir ControllerHelper tanımlayalım bu yazıyı almamıza yardım edecektir */
$ftpHelper = new XenForo_ControllerHelper_ForumThreadPost($controller);

/* Yazıyı gözatan kullanıcının görebilir olmasını istiyorsak ControllerHelper kullanıyoruz.*/
list($post, $thread) = $ftpHelper->assertPostValidAndViewable($postId);

/* Yazıda eklenti varsa */
if ($post['attach_count'] > 0)
{
/* Eğer varsa yazıya ilişkin tüm eklentileri alalım */
$attachmentModel = XenForo_Model::create('XenForo_Model_Attachment');
$attachments = $attachmentModel->getAttachmentsByContentId('post', $postId);
foreach ($attachments AS $attachment)
{
/* Yazı içeriğine eklentileri ekleyelim */
$post['attachments'][$attachment['attachment_id']] = $attachmentModel->prepareAttachment($attachment);
}
}

/* Bu parametreler şablonumuzda kullanılacaktır. Bunları yanıt olarak göndermemiz gerekecektir. $post parametresi XenForo_ViewPublic örneğinde de kullanılacaktır. */
$viewParams = array (
'post' => $post,
'title' => $thread['title']
);

/* Bu yolla yazımızı ve eklentilerinide işleyeceğiz :) */
$response = $controller->responseView('ShowAPost_View', $response->params['templateTitle'], $viewParams);

/* Son olarak,yanıtı gönder!*/
return $response;
}
}
(Bu kod içerisinde yorum olarak tümü açıklanmıştır.Lütfen biraz zaman ayırarak daha iyi anlamak için tamamını okuyun. Gelişmiş şeyler yeteri kadar açıklanmamıştır,çünkü yazının amacı basittir.)

PostId yi istediğinizle değiştirmeyi unutmayın.

Kod:
$postId = 180;
Kaydedin!

Şimdi View.php dosyasını açın.Bu dosya yazıdaki tüm bbcode larını ayrıştıracaktır.

Bunları dosyaya ekleyin:

Kod:
<?php
class ShowAPost_View extends XenForo_ViewPublic_Base
{
public function renderHtml()
{
/* Ayrıştırmak istediğimiz yazıyı getirelim */
$post = $this->_params['post'];

/* BbCode ları ayrıştırmak için Ayrıştırıcıyı oluşturalım*/
$bbCodeParser = new XenForo_BbCode_Parser(XenForo_BbCode_Formatter_Base::create('Base', array('view' => $this)));

/* Ayrıştırma seçenekleri */
$bbCodeOptions = array(
'states' => array(
'viewAttachments' => true //Eklentileri göstermek istemiyorsanız bu seçeneği false yapın.
)
);

/* yazıyı ayrıştır ve yazının verisiyle birleştir*/
$this->_params['post']['messageParsed'] = XenForo_ViewPublic_Helper_Message::getBbCodeWrapper($post, $bbCodeParser, $bbCodeOptions);
}
}
Adım 2 – Sayfayı oluşturma

Şimdi göstermek istediğiniz yazıyı gösterecek sayfayı oluşturacağız.AdminCP->Uygulamalar->Yeni sayfa oluştur.Sonraki sayfada,bazı alanları doldurmanız gerekecektir.Aşağıdaki bilgileri kullanın:

  • Url kısmı: showapost
  • Başlık: Yazı göster (Başlığın ne olduğu farketmez, çünkü konu başlığını kullanacağız)
  • Açıklama: Sayfa içinde yazı göster
  • HTML şablonu:
Kod:
<xen:h1>{$title}</xen:h1>

{xen:raw $post.messageParsed}
  • PHP Callback: ShowAPost_Index::showAPostInPage
Bu en sonda elde ettiğiniz şey olmalıdır.

upload_2017-1-12_19-47-47-png.295


upload_2017-1-12_19-48-19-png.296


upload_2017-1-12_19-48-57-png.297


Sayfayı kaydedin.

Adım 3 – Test

Şimdi forum listesine gidin.Orada bir sayfa düğümü göreceksiniz.

Sayfaya tıklayarak sonucu görebilirsiniz.Artık yazınız sayfa içinde görüntülenebilir.
upload_2017-1-12_19-49-45-png.298


  • Eğer konu başlığı değilde sayfa başlığını göstermek istiyorsanız sadece HTML şablonunu şöyle düzenleyin:
Kod:
{xen:raw $post.messageParsed}
  • Navigasyonu gizlemek istiyorsanız sayfanın HTML şablonunun en üstüne bunları ekleyin:
Kod:
<style>
.breadcrumb {
display:none !important;
}
</style>
Sonuç:

upload_2017-1-12_19-51-58-png.299
 
V

vbasic

Üye
Katılım
Ağu 28, 2017
Mesajlar
2
Beğeniler
2
Online Süre
40Dak.
Yaş
29
#2
Ellerine sağlık, bunun xf 2 için anlatımını yapar mısın hocam lütfen.
 
B

Buadamon

Üye
Katılım
Kas 14, 2018
Mesajlar
5
Beğeniler
0
Online Süre
1Saat 59Dak.
Yaş
33
#4
Ellerine sağlık
 

Üst