Hoş Geldiniz...

XenForoTR.CoM üzerinde yer alan içeriklere erişim sağlayabilmek, projelerinizde karşılaştığınız sorunlara birlikte çözüm üretebilmek adına üye olunuz. Unutmayalım ki, bilgi paylaşıldıkça değer kazanır.

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

X-Man

Yönetici
Admin
2 Ocak 2017
1,064
2,174
115
#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

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

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

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

  • 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
 

Aynı Kategoriden Daha Fazla Konu