SimplePortal
Support => Turkish (Türkçe) => International Support => Ki?iselle?tirme => Topic started by: grafitus on April 27, 2010, 10:40:19 AM
-
http://simpleportal.net/index.php?page=blocks_in_block_sample
Yukarıdaki sayfayı açtığınızda toplamda 5, 4'ünün bir blok içinde olduğunu göreceksiniz. Bunu SimplePortal'la yapmak oldukça kolaydır.
Birinci adım: İçte olacak blokları oluşturun. Bu blokların etkin kutucuğunun işaretli olmadığına emin olun. Bu -içteki- blokların forumunuzda herhangi bir yerde görünmesini önleyecektir.
İkinci adım: yeni oluşturduğunuz blokların id değerlerini bulmak. Blok düzenleme linkine bakarak bu değeri bulabilirsiniz:
http://ornekforum.com/index.php?action=admin;area=portalblocks;sa=edit;block_id=2;{session_var}={session_id}
İhtiyacınız olan değer block_id değeridir (yukarıdaki koda göre 2). Aşağıdaki örnekte, biz 49, 50, 52, 53 blok id değerlerini kullanacağız.
Üçüncü adım: blokları içine alacak ve portalda görünecek olan bir PHP İçerik bloğu oluşturun. Ve içeriğine bir örnek olarak şu girilecek:
$columns = 2; // Bloklarımızın kaç sütun olacağı
$block_ids = array(49, 50, 52, 53); // İçteki blokların id değerleri
$block_data = array();
foreach ($block_ids as $block)
{
$block_data[$block] = current(getBlockInfo(false, $block, false, false)); // Her bir bloğun (içteki) bilerini alıyoruz
$block_data[$block]['style'] = sportal_parse_style('explode', $block_data[$block]['style'], true); // Her bloğun stil değerlerini alıyoruz.
}
echo '
<table style="width: 100%;">
<tr>';
$counter = 0;
foreach ($block_data as $data)
{
if ($counter != 0 && $counter % $columns == 0)
{
echo '
</tr>
<tr>';
}
echo '
<td style="width: ', ceil((100 / $columns)), '%; vertical-align: top;">
', template_block($data), '
</td>';
$counter++;
}
echo '
</tr>
</table>';
Bu kadar. :nervous-happy:
Ya da blok fonksiyonlarını kullanarak, yukarıdaki gibi birden fazla blok oluşturmadan uygun parametreleri kullanarak yapabiliriz. Hatta biraz da JavaScript katarak, bunun gibi güzel bir blok elde edebiliriz:
http://simpleportal.net/index.php?page=blocks_in_block_sample#sp_collapse_54
global $txt;
$txt['recent_topics'] = 'Son İletiler';
$txt['recent_posts'] = 'Son Konular';
$buttons = array(
'recent_topics' => array(
'text' => 'recent_topics',
'image' => '',
'lang' => true,
'url' => '#recent_topics" id="b_rt" onclick="change_display(); return false;',
'active' => true,
),
'recent_posts' => array(
'text' => 'recent_posts',
'image' => '',
'lang' => true,
'url' => '#recent_posts" id="b_rp" onclick="change_display(); return false;',
),
);
echo '
<div style="overflow: auto;">
', template_button_strip($buttons), '
</div>
<div id="recent_topics">
', sp_recent(array('type' => 1, 'display' => 1), 0), '
</div>
<div id="recent_posts" style="display: none;">
', sp_recent(array('display' => 1), 0), '
</div>
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
function change_display()
{
var current = document.getElementById(\'recent_posts\').style.display;
document.getElementById(\'recent_topics\').style.display = current ? \'none\' : \'\';
document.getElementById(\'recent_posts\').style.display = current ? \'\' : \'none\';
document.getElementById(\'b_rt\').className = current ? \'button_strip_recent_topics\' : \'button_strip_recent_topics active\';
document.getElementById(\'b_rp\').className = current ? \'button_strip_recent_posts active\' : \'button_strip_recent_posts\';
}
// ]]></script>';
Bu bize "basitliğin gücü"nin çağrısıdır. Umarız bu SimplePortal'ın esnek ve güçlü yapısına bir fikir vermiştir. Eğer herhangi bir sorunuz varsa sorun çekinmeyin. ;)
Asıl konu (http://simpleportal.net/index.php?topic=5332.0), [SiNaN] (http://simpleportal.net/index.php?action=profile;u=2) tarafından hazırlanmıştır...
-
http://simpleportal.net/index.php?topic=5039.msg30593#msg30593
usta böyle bir başlık açmıştım
yukarıda bahsetmiş olduğun işlemi bu başlıkta açmış
olduğuma da uygulayabilirmiyiz..
örneğin formumuzda şiirler hikayeler fıkralar bölümlerinin son eklenen konularını ayrı ayrı bloklarda değilde hepsine tek bir blokta görüntülememiz mümkünmüdür.
buarada bu paylaşım çok güzel olmuş eline sağlık teşekkürler
floot yapmamak için düzenlemek zorunda kaldım
usta denedim ve oldu bu paylaşımın için çooooook teşekkürler acayip işime yaradı sağolasın
-
Arkadaşlar bu kodlarla konuları tanımlayamazmıyız.İsteiğimiz konun İD sini vererek o konuda yer alan ilk mesajdaki resim gelse.Teşekkürler.
-
Arkadaşlar bu kodlarla konuları tanımlayamazmıyız.İsteiğimiz konun İD sini vererek o konuda yer alan ilk mesajdaki resim gelse.Teşekkürler.
Hayır. Sizin istediğiniz daha farklı bir şey. Eğer böyle bir şey -veya başka bir şey- isterseniz, Kişiselleştirme (http://simpleportal.net/index.php?board=64.0) bölümünde yeni konu açın.
-
"Veritabanı hatası. Kodlarınızdaki veritabanı sorgularını kontrol edin." Şeklinde bir hata mesajı alıyorum.
-
"Veritabanı hatası. Kodlarınızdaki veritabanı sorgularını kontrol edin." Şeklinde bir hata mesajı alıyorum.
Yukarıda verdiğim kodların hiçbirinde veritabanı sorgusu yok. Dolaylı olarak SSI'dan böyle bir hatayı alıyor da olabilir.
-
"Veritabanı hatası. Kodlarınızdaki veritabanı sorgularını kontrol edin." Şeklinde bir hata mesajı alıyorum.
2.0.RC3 Sürümünde aynı hatayı bende alıyorum ön izleme yaptığım zaman hiçbir sorun yok ama bloğu eklemeye kalktığım zaman yukardaki gibi bir hata veriyor çözebildinizmi arkadaşlar şimdiden teşekkürler
-
Yönetim > SimplePortal > Temel Ayarlar sayfasında "PHP kodu doğrulamasını kapat" seçeneği işaretleyin. Bloğu ekledikten sonra tekrar o seçeneği pasif konuma getirmeniz sizin açınızdan daha yararlı olacaktır.
-
Yukarıda paylaşmış olduğumuz JavaScript'li örneğin, daha gelişmiş ve kolaylaştırılmış hâli:
$blocks = array(
array(
'label' => 'Son İletiler',
'type' => 'sp_recent',
'parameters' => array('display' => 1),
),
array(
'label' => 'Son Konular',
'type' => 'sp_recent',
'parameters' => array('type' => 1, 'display' => 1),
),
array(
'label' => 'En Çok İleti Gönderenler',
'type' => 'sp_topPoster',
'parameters' => array(),
),
array(
'label' => 'Takvim',
'type' => 'sp_calendar',
'parameters' => array(),
),
);
global $txt;
$button_list = array();
foreach ($blocks as $id => $block)
{
$txt['sp_bib_label_' . $id] = $block['label'];
$button_list[] = array(
'text' => 'sp_bib_label_' . $id,
'image' => '',
'lang' => true,
'url' => '#sp_bib_' . $id . '" id="sp_bib_button_' . $id . '" onclick="sp_bib_change(' . $id . '); return false;',
);
}
$button_list[0]['active'] = true;
echo '
<div style="overflow: auto;">
', template_button_strip($button_list), '
</div>';
foreach ($blocks as $id => $block)
{
echo '
<div id="sp_bib_', $id, '"', $id != 0 ? ' style="display: none;"' : '', '>';
$block['type']($block['parameters'], 0);
echo '
</div>';
}
echo '
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
function sp_bib_change(id)
{
for (var i = 0; i < ', count($blocks), '; i++)
{
document.getElementById(\'sp_bib_\' + i).style.display = i == id ? \'\' : \'none\';
document.getElementById(\'sp_bib_button_\' + i).className = \'button_strip_\' + i + (i == id ? \' active\' : \'\');
}
}
// ]]></script>';
Şu anki haliyle Son İletiler, Son Konular, En Çok İleti Gönderenler ve Takvim bloklarını gösteriyor. Daha fazlasını eklemek için: ./Sources/PortalBlocks.php'den göstermek istediğiniz blok türünün fonksiyon ismini almalın (Örneğin, Yönetim Ekibi türü için fonksiyon ismi sp_staff).
Daha sonra yukarıdaki kodda $blocks dizinine, hangi bloktan sonra görünmesini istiyorsanız, o blokun sonrasına aşağıdaki gibi bir ifadeyi ekleyin:
array(
'label' => 'Alt Blok Başlığı',
'type' => 'FONKSİYON İSMİ',
'parameters' => array(), // Parametreler
),
Yani Yönetim Ekibi bloğu için şöyle bir şey ekleyeceğiz:
array(
'label' => 'Yönetim Ekibi',
'type' => 'sp_staff',
'parameters' => array('lmod' => 0), // Moderatörleri gösterdik
),
-
Teşekkürler hocam harika oldu sayenizde. :)
-
peki profil ve online üyeler bloğunu nasıl sekmeli yapabiliriz ? fonksiyon isimlerini bulmadım,
bir de php kodla oluşturduğumuz blokları da sekmeli yapabilir miyiz, yani sonradan düzenlenen, fonksiyon ismi olmayan blokları
-
profil için; sp_userInfo
Online listesi; sp_whosOnline
arama için; sp_quickSearch
bunları buldum
php kodla oluşturduğumuz blokları da sekmeli yapabilir miyiz :)
-
Gecikme için kusura bakmayın. Telefonumdan konuyu okumuştum. Ancak bilgisayardan bakmayı unutmuşum.
$blocks = array(
array(
'label' => 'Kullanıcı Bilgisi',
'type' => 'sp_userInfo',
'parameters' => array(),
),
array(
'label' => 'Çevrimiçi Üyeler',
'type' => 'sp_whosOnline',
'parameters' => array(),
),
array(
'label' => 'Hızlı Arama',
'type' => 'sp_quickSearch',
'parameters' => array(),
),
);
global $txt;
$button_list = array();
foreach ($blocks as $id => $block)
{
$txt['sp_bib_label_' . $id] = $block['label'];
$button_list[] = array(
'text' => 'sp_bib_label_' . $id,
'image' => '',
'lang' => true,
'url' => '#sp_bib_' . $id . '" id="sp_bib_button_' . $id . '" onclick="sp_bib_change(' . $id . '); return false;',
);
}
$button_list[0]['active'] = true;
echo '
<div style="overflow: auto;">
', template_button_strip($button_list), '
</div>';
foreach ($blocks as $id => $block)
{
echo '
<div id="sp_bib_', $id, '"', $id != 0 ? ' style="display: none;"' : '', '>';
$block['type']($block['parameters'], 0);
echo '
</div>';
}
echo '
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
function sp_bib_change(id)
{
for (var i = 0; i < ', count($blocks), '; i++)
{
document.getElementById(\'sp_bib_\' + i).style.display = i == id ? \'\' : \'none\';
document.getElementById(\'sp_bib_button_\' + i).className = \'button_strip_\' + i + (i == id ? \' active\' : \'\');
}
}
// ]]></script>';
-
teşekürler eline sağlık :)
-
Javascriptli uygulamayı aynen yaptım ama biraz bozuk çıktı bende, mesela diğer menülere tıkladığımda aynı tablo içinde çıkması gerekirken alta kayıyor. Ekteki resimlerle adım adım anlatmaya çalıştım sorunu, yardımcı olursanız sevinirim.
-
Hiçbir fikrim yok neden öyle olduğuna dair. Biraz önce de tekrar denedim kodu.
-
Hiçbir fikrim yok neden öyle olduğuna dair. Biraz önce de tekrar denedim kodu.
smf sürümüyle bir alakası olabilir mi acaba, 1.1.13 kullanıyorum
-
Sorun smf sürümünden kaynaklanıyor, localhostta sıfırdan 1.1.13 ve 2.0rc5 sürümlerini ayrı ayrı kurdum ve denedim, 2.0.rc5 de sorunsuz çalışırken 1.1.13 de sorun devam ediyor...1.1.13 de uyumlu hale getiremezmiyiz bunu :|
-
Arkadaşlar aşağıda ki gibi yeni konuları 5-6 Tab oluşturara göstermek istiyorum.Fakat her Tabta farklı bir kategoride ki son konuları gösterecek şekilde.Örneğin aşağıda ki Tabta sadece "board,15" teki son konuların görünmesini nasıl sağlayabilirim.Teşekkürler.
array(
'label' => 'Primo',
'type' => 'sp_boardNews',
'parameters' => array(),
),
-
array(
'label' => 'Son İletiler',
'type' => 'sp_recent',
'parameters' => array('boards' => '15'),
),
-
Ana sayfada üst blokta konuları göstermeye çalışıyorum.Sizin yazdığınız gibi son iletiler geliyor.Ama ben resimli olarak portal üst blokta görünmesi için aşağıda ki kodu uyguladım olmadı.
array(
'label' => 'Primo',
'type' => 'sp_boardNews',
'parameters' => array('boards' => '15'),
),
Not : Yada oluşturduğum bir bloğun id nosunu vererek.Her bir tabta farklı bir bloğu gösterebilirmiyiz.
-
Ana sayfada üst blokta konuları göstermeye çalışıyorum.Sizin yazdığınız gibi son iletiler geliyor.Ama ben resimli olarak portal üst blokta görünmesi için aşağıda ki kodu uyguladım olmadı.
array(
'label' => 'Primo',
'type' => 'sp_boardNews',
'parameters' => array('boards' => '15'),
),
Not : Yada oluşturduğum bir bloğun id nosunu vererek.Her bir tabta farklı bir bloğu gösterebilirmiyiz.
array(
'label' => 'Primo',
'type' => 'sp_boardNews',
'parameters' => array('board' => '15'),
),
Bu şekilde değiştirince düzeliyor yalnız sadece 5 tane konu gösteriyor ve sayfaları numaralandırmıyor tek sayfa hakinde 5 konu şeklinde oluyor.Ayrıca sadece 1 tane board ekleniyor, 2.sini yazdığımda hata veriyor.
Şimdi belirlediğim 5-6 kategoride ve numarları olması için ne yapmam lazım ?
-
Şu şekilde kullanabilirsiniz:
array(
'label' => 'Primo',
'type' => 'sp_boardNews',
'parameters' => array(
'boards' => array('15', 'x', 'y', 'x'), // Bölümlerin ID'leri
'per_page' => 5, // Bir sayfada kaç tane konu gösterilecek
'limit' => 25, // Toplam kaç tane konu çekilecek
),
),
-
board girdisine 4 tane bölüm id si girdiğim halde tüm kategorideki konuları gösteriyor.
array(
'label' => 'Torrent Oyunlar',
'type' => 'sp_boardNews',
'parameters' => array(
'boards' => array('2', '3', '4', '5'), // Bölümlerin ID'leri
'per_page' => 5, // Bir sayfada kaç tane konu gösterilecek
'limit' => 25, // Toplam kaç tane konu çekilecek
),
),
-
Yardım edecekmisiniz ?
-
blok içerisinde blokları oluşturduk buna birde resim yanına açıklama ekleyebilirmiyiz.
örn;
(http://i.imgur.com/pK186.jpg)
bunun bir blok olduğunu düşünürsek bu şekilde resim yanına yazı.
-
Kendinize göre editleyin.
<div align="center">
<table border="0" bordercolor="#003c74" width="210" >
<tr style="align:left;background:#f5f5f5;">
<td style=" border:solid 1px #003c74; height: 60px ; width: 60px ;">
<img border="0" src="http://www.spinabifidaturkey.com/smf/avatars/uyeavatarlari/herturk.png" width="79" height="100"></a>
</td>
<td style=" border:1px solid #003c74; height: 60px ; width: 100% ;" ><strong>
<a href="makale_linki">Makale Adı</a><br/></strong>
<a href="makale_sahibinin_profil_linki">Gönderenin Adı Soyadı</a><br/>Tarih</td>
</tr>
<tr style="align:left;background:#f5f5f5;">
<td style=" border:solid 1px #003c74; height: 60px ; width: 60px ;">
<img border="0" src="http://www.spinabifidaturkey.com/smf/avatars/uyeavatarlari/herturk.png" width="79" height="100"></td>
<td style=" border:1px solid #003c74; height: 60px ; width: 100% ;" ><strong>
<a href="makale_linki">Makale Adı</a><br/></strong>
<a href="makale_sahibinin_profil_linki">Gönderenin Adı Soyadı</a><br/>Tarih</td>
</tr>
<tr style="align:left;background:#f5f5f5;">
<td style=" border:solid 1px #003c74; height: 60px ; width: 60px ;">
<img border="0" src="http://www.spinabifidaturkey.com/smf/avatars/uyeavatarlari/herturk.png" width="79" height="100"></td>
<td style=" border:1px solid #003c74; height: 60px ; width: 100% ;" ><strong>
<a href="makale_linki">Makale Adı</a><br/></strong>
<a href="makale_sahibinin_profil_linki">Gönderenin Adı Soyadı</a><br/>Tarih</td>
</tr>
<tr style="align:left;background:#f5f5f5;">
<td style=" border:solid 1px #003c74; height: 60px ; width: 60px ;">
<img border="0" src="http://www.spinabifidaturkey.com/smf/avatars/uyeavatarlari/herturk.png" width="79" height="100"></td>
<td style=" border:1px solid #003c74; height: 60px ; width: 100% ;" ><strong>
<a href="makale_linki">Makale Adı</a><br/></strong>
<a href="makale_sahibinin_profil_linki">Gönderenin Adı Soyadı</a><br/>Tarih</td>
</tr>
<tr style="align:left;background:#f5f5f5;">
<td style=" border:solid 1px #003c74; height: 60px ; width: 60px ;">
<img border="0" src="http://www.spinabifidaturkey.com/smf/avatars/uyeavatarlari/herturk.png" width="79" height="100"></td>
<td style=" border:1px solid #003c74; height: 60px ; width: 100% ;" ><strong>
<a href="makale_linki">Makale Adı</a><br/></strong>
<a href="makale_sahibinin_profil_linki">Gönderenin Adı Soyadı</a><br/>Tarih</td>
</tr>
</table></div>
-
Kendinize göre editleyin. <div align="center">
<table border="0" bordercolor="#003c74" width="210" >
<tr style="align:left;background:#f5f5f5;">
<td style=" border:solid 1px #003c74; height: 60px ; width: 60px ;">
<img border="0" src="http://www.spinabifidaturkey.com/smf/avatars/uyeavatarlari/herturk.png" width="79" height="100"></a>
</td>
<td style=" border:1px solid #003c74; height: 60px ; width: 100% ;" ><strong>
<a href="makale_linki">Makale Adı</a><br/></strong>
<a href="makale_sahibinin_profil_linki">Gönderenin Adı Soyadı</a><br/>Tarih</td>
</tr>
<tr style="align:left;background:#f5f5f5;">
<td style=" border:solid 1px #003c74; height: 60px ; width: 60px ;">
<img border="0" src="http://www.spinabifidaturkey.com/smf/avatars/uyeavatarlari/herturk.png" width="79" height="100"></td>
<td style=" border:1px solid #003c74; height: 60px ; width: 100% ;" ><strong>
<a href="makale_linki">Makale Adı</a><br/></strong>
<a href="makale_sahibinin_profil_linki">Gönderenin Adı Soyadı</a><br/>Tarih</td>
</tr>
<tr style="align:left;background:#f5f5f5;">
<td style=" border:solid 1px #003c74; height: 60px ; width: 60px ;">
<img border="0" src="http://www.spinabifidaturkey.com/smf/avatars/uyeavatarlari/herturk.png" width="79" height="100"></td>
<td style=" border:1px solid #003c74; height: 60px ; width: 100% ;" ><strong>
<a href="makale_linki">Makale Adı</a><br/></strong>
<a href="makale_sahibinin_profil_linki">Gönderenin Adı Soyadı</a><br/>Tarih</td>
</tr>
<tr style="align:left;background:#f5f5f5;">
<td style=" border:solid 1px #003c74; height: 60px ; width: 60px ;">
<img border="0" src="http://www.spinabifidaturkey.com/smf/avatars/uyeavatarlari/herturk.png" width="79" height="100"></td>
<td style=" border:1px solid #003c74; height: 60px ; width: 100% ;" ><strong>
<a href="makale_linki">Makale Adı</a><br/></strong>
<a href="makale_sahibinin_profil_linki">Gönderenin Adı Soyadı</a><br/>Tarih</td>
</tr>
<tr style="align:left;background:#f5f5f5;">
<td style=" border:solid 1px #003c74; height: 60px ; width: 60px ;">
<img border="0" src="http://www.spinabifidaturkey.com/smf/avatars/uyeavatarlari/herturk.png" width="79" height="100"></td>
<td style=" border:1px solid #003c74; height: 60px ; width: 100% ;" ><strong>
<a href="makale_linki">Makale Adı</a><br/></strong>
<a href="makale_sahibinin_profil_linki">Gönderenin Adı Soyadı</a><br/>Tarih</td>
</tr>
</table></div>
hocam bunu tek oval çerçeve içine alıp resimle yazı arasına sadece çizgi çekmek istiyorum :|
-
board girdisine 4 tane bölüm id si girdiğim halde tüm kategorideki konuları gösteriyor.
array(
'label' => 'Torrent Oyunlar',
'type' => 'sp_boardNews',
'parameters' => array(
'boards' => array('2', '3', '4', '5'), // Bölümlerin ID'leri
'per_page' => 5, // Bir sayfada kaç tane konu gösterilecek
'limit' => 25, // Toplam kaç tane konu çekilecek
),
),
bendede aynı şekilde oluyor
-
Benden bu kadar.
-
Şu şekilde kullanabilirsiniz:
array(
'label' => 'Primo',
'type' => 'sp_boardNews',
'parameters' => array(
'boards' => array('15', 'x', 'y', 'x'), // Bölümlerin ID'leri
'per_page' => 5, // Bir sayfada kaç tane konu gösterilecek
'limit' => 25, // Toplam kaç tane konu çekilecek
),
),
yazmış olduğum bölüm id'lerindekini değilde forumda mesaj atılmış son konuları gösteriyor bu şekilde
-
Şu şekilde kullanabilirsiniz:
array(
'label' => 'Primo',
'type' => 'sp_boardNews',
'parameters' => array(
'boards' => array('15', 'x', 'y', 'x'), // Bölümlerin ID'leri
'per_page' => 5, // Bir sayfada kaç tane konu gösterilecek
'limit' => 25, // Toplam kaç tane konu çekilecek
),
),
yazmış olduğum bölüm id'lerindekini değilde forumda mesaj atılmış son konuları gösteriyor bu şekilde
konu güncel. keşke bunun içinde yeni sürümde bir güncelleme çıksa ve bu konuda kilitlense ;P
-
Sanırım ne istediğinizi anlayamadım ben. Başka bir şekilde anlatabilir misiniz?
-
Sanırım ne istediğinizi anlayamadım ben. Başka bir şekilde anlatabilir misiniz?
tabiki :nervous-happy:
(http://i.imgur.com/rArQV.png)
hocam aynen yukarıdaki gibi bloklar olacak ancak son konular son iletiler yerine orneğin;
sadece bu kategorilerde açılan son konuların çıkmasını istiyorum.
Kategori 1:
(http://i.imgur.com/GBFVd.png)
Kategori 2:
(http://i.imgur.com/nxAbC.png)
Kategori 3:
(http://i.imgur.com/DGs8f.png)
yani
1. tab filmler olacak film kategorisindeki son konular çıkacak
2. tab oyunlar olacak oyun kategorisindeki son konular gösterilecek
3. kategori belgesel olacak belgeseller kategorisindeki son konular görüntülenecek
her tabda farklı alanlarda açılan son konuları göstermek istiyorum
-
hhmercan da benim anlatmak istediğimi söylüyor.Yani boardsa yazdığım nolar hiç bir işe yaramıyor.
-
Öyleyse sanırım şu işinizi görür:
$blocks = array(
array(
'label' => 'Film',
'type' => 'sp_recent',
'parameters' => array('boards' => '12|85|6|73', 'type' => 1, 'display' => 1),
),
array(
'label' => 'Oyun',
'type' => 'sp_recent',
'parameters' => array('boards' => '12|85|6|73', 'type' => 1, 'display' => 1),
),
array(
'label' => 'Belgesel',
'type' => 'sp_recent',
'parameters' => array('boards' => '12|85|6|73', 'type' => 1, 'display' => 1),
),
);
global $txt;
$button_list = array();
foreach ($blocks as $id => $block)
{
$txt['sp_bib_label_' . $id] = $block['label'];
$button_list[] = array(
'text' => 'sp_bib_label_' . $id,
'image' => '',
'lang' => true,
'url' => '#sp_bib_' . $id . '" id="sp_bib_button_' . $id . '" onclick="sp_bib_change(' . $id . '); return false;',
);
}
$button_list[0]['active'] = true;
echo '
<div style="overflow: auto;">
', template_button_strip($button_list), '
</div>';
foreach ($blocks as $id => $block)
{
echo '
<div id="sp_bib_', $id, '"', $id != 0 ? ' style="display: none;"' : '', '>';
$block['type']($block['parameters'], 0);
echo '
</div>';
}
echo '
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
function sp_bib_change(id)
{
for (var i = 0; i < ', count($blocks), '; i++)
{
document.getElementById(\'sp_bib_\' + i).style.display = i == id ? \'\' : \'none\';
document.getElementById(\'sp_bib_button_\' + i).className = \'button_strip_\' + i + (i == id ? \' active\' : \'\');
}
}
// ]]></script>';
Maalesef direk kategori olarak giriş yapamazsınız. Her bölüm ID'sini "|" (dizey çizgi) karakteriyle ayırıp ilgili yerdeki 'boards' => '12|85|6|73' yerinde değer olarak yazmalısınız.
-
Öyleyse sanırım şu işinizi görür:
$blocks = array(
array(
'label' => 'Film',
'type' => 'sp_recent',
'parameters' => array('boards' => '12|85|6|73', 'type' => 1, 'display' => 1),
),
array(
'label' => 'Oyun',
'type' => 'sp_recent',
'parameters' => array('boards' => '12|85|6|73', 'type' => 1, 'display' => 1),
),
array(
'label' => 'Belgesel',
'type' => 'sp_recent',
'parameters' => array('boards' => '12|85|6|73', 'type' => 1, 'display' => 1),
),
);
global $txt;
$button_list = array();
foreach ($blocks as $id => $block)
{
$txt['sp_bib_label_' . $id] = $block['label'];
$button_list[] = array(
'text' => 'sp_bib_label_' . $id,
'image' => '',
'lang' => true,
'url' => '#sp_bib_' . $id . '" id="sp_bib_button_' . $id . '" onclick="sp_bib_change(' . $id . '); return false;',
);
}
$button_list[0]['active'] = true;
echo '
<div style="overflow: auto;">
', template_button_strip($button_list), '
</div>';
foreach ($blocks as $id => $block)
{
echo '
<div id="sp_bib_', $id, '"', $id != 0 ? ' style="display: none;"' : '', '>';
$block['type']($block['parameters'], 0);
echo '
</div>';
}
echo '
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
function sp_bib_change(id)
{
for (var i = 0; i < ', count($blocks), '; i++)
{
document.getElementById(\'sp_bib_\' + i).style.display = i == id ? \'\' : \'none\';
document.getElementById(\'sp_bib_button_\' + i).className = \'button_strip_\' + i + (i == id ? \' active\' : \'\');
}
}
// ]]></script>';
Maalesef direk kategori olarak giriş yapamazsınız. Her bölüm ID'sini "|" (dizey çizgi) karakteriyle ayırıp ilgili yerdeki 'boards' => '12|85|6|73' yerinde değer olarak yazmalısınız.
hocam ellerine sağlık şimdi oldu teşekkürler :)
-
Merhaba ben tam olarak anlayamadığım bir şey var 4 tane etkin olmayan block oluşturdum.Verdiğiniz link'ten block ids numarasını bulamadım
-
http://simpleportal.net/index.php?page=blocks_in_block_sample
Yukarıdaki sayfayı açtığınızda toplamda 5, 4'ünün bir blok içinde olduğunu göreceksiniz. Bunu SimplePortal'la yapmak oldukça kolaydır.
Birinci adım: İçte olacak blokları oluşturun. Bu blokların etkin kutucuğunun işaretli olmadığına emin olun. Bu -içteki- blokların forumunuzda herhangi bir yerde görünmesini önleyecektir.
İkinci adım: yeni oluşturduğunuz blokların id değerlerini bulmak. Blok düzenleme linkine bakarak bu değeri bulabilirsiniz:
http://ornekforum.com/index.php?action=admin;area=portalblocks;sa=edit;block_id=2;{session_var}={session_id}
İhtiyacınız olan değer block_id değeridir (yukarıdaki koda göre 2). Aşağıdaki örnekte, biz 49, 50, 52, 53 blok id değerlerini kullanacağız.
Üçüncü adım: blokları içine alacak ve portalda görünecek olan bir PHP İçerik bloğu oluşturun. Ve içeriğine bir örnek olarak şu girilecek:
$columns = 2; // Bloklarımızın kaç sütun olacağı
$block_ids = array(49, 50, 52, 53); // İçteki blokların id değerleri
$block_data = array();
foreach ($block_ids as $block)
{
$block_data[$block] = current(getBlockInfo(false, $block, false, false)); // Her bir bloğun (içteki) bilerini alıyoruz
$block_data[$block]['style'] = sportal_parse_style('explode', $block_data[$block]['style'], true); // Her bloğun stil değerlerini alıyoruz.
}
echo '
<table style="width: 100%;">
<tr>';
$counter = 0;
foreach ($block_data as $data)
{
if ($counter != 0 && $counter % $columns == 0)
{
echo '
</tr>
<tr>';
}
echo '
<td style="width: ', ceil((100 / $columns)), '%; vertical-align: top;">
', template_block($data), '
</td>';
$counter++;
}
echo '
</tr>
</table>';
Bu kadar. :nervous-happy:
Ya da blok fonksiyonlarını kullanarak, yukarıdaki gibi birden fazla blok oluşturmadan uygun parametreleri kullanarak yapabiliriz. Hatta biraz da JavaScript katarak, bunun gibi güzel bir blok elde edebiliriz:
http://simpleportal.net/index.php?page=blocks_in_block_sample#sp_collapse_54
global $txt;
$txt['recent_topics'] = 'Son İletiler';
$txt['recent_posts'] = 'Son Konular';
$buttons = array(
'recent_topics' => array(
'text' => 'recent_topics',
'image' => '',
'lang' => true,
'url' => '#recent_topics" id="b_rt" onclick="change_display(); return false;',
'active' => true,
),
'recent_posts' => array(
'text' => 'recent_posts',
'image' => '',
'lang' => true,
'url' => '#recent_posts" id="b_rp" onclick="change_display(); return false;',
),
);
echo '
<div style="overflow: auto;">
', template_button_strip($buttons), '
</div>
<div id="recent_topics">
', sp_recent(array('type' => 1, 'display' => 1), 0), '
</div>
<div id="recent_posts" style="display: none;">
', sp_recent(array('display' => 1), 0), '
</div>
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
function change_display()
{
var current = document.getElementById(\'recent_posts\').style.display;
document.getElementById(\'recent_topics\').style.display = current ? \'none\' : \'\';
document.getElementById(\'recent_posts\').style.display = current ? \'\' : \'none\';
document.getElementById(\'b_rt\').className = current ? \'button_strip_recent_topics\' : \'button_strip_recent_topics active\';
document.getElementById(\'b_rp\').className = current ? \'button_strip_recent_posts active\' : \'button_strip_recent_posts\';
}
// ]]></script>';
Bu bize "basitliğin gücü"nin çağrısıdır. Umarız bu SimplePortal'ın esnek ve güçlü yapısına bir fikir vermiştir. Eğer herhangi bir sorunuz varsa sorun çekinmeyin. ;)
Asıl konu (http://simpleportal.net/index.php?topic=5332.0), [SiNaN] (http://simpleportal.net/index.php?action=profile;u=2) tarafından hazırlanmıştır...
ne tür blok oluşturacaz nasıl yapacağımızı daha ayrıntılı anlatırmısın
-
$columns = 2; // Bloklarımızın kaç sütun olacağı
$block_ids = array(49, 50, 52, 53); // İçteki blokların id değerleri
$block_data = array();
foreach ($block_ids as $block)
{
$block_data[$block] = current(getBlockInfo(false, $block, false, false)); // Her bir bloğun (içteki) bilerini alıyoruz
$block_data[$block]['style'] = sportal_parse_style('explode', $block_data[$block]['style'], true); // Her bloğun stil değerlerini alıyoruz.
}
echo '
<table style="width: 100%;">
<tr>';
$counter = 0;
foreach ($block_data as $data)
{
if ($counter != 0 && $counter % $columns == 0)
{
echo '
</tr>
<tr>';
}
echo '
<td style="width: ', ceil((100 / $columns)), '%; vertical-align: top;">
', template_block($data), '
</td>';
$counter++;
}
echo '
</tr>
</table>';
Hocam yukarıdaki kodlarla blok oluşturmaya kalktığımda önizlemeyi falan yapıyor ama blok ekle dediğim zaman
PHP sözdizimi hatası. Kodlarınızı kontrol edin.
uyarısı veriyor ve kaydedemiyorum. Bunun bir çözümü var mı?
-
ayarlardan PHP kodu doğrulamasını kapat özelliğini aktif edin.