[phpBB YTgalerry] Problem z własnym elementem na index.php

Forum przeznaczone na rozmowy między autorami modyfikacji i inne pytania związane z poważniejszą ingerencją w kod phpBB 3.0.x.
Awatar użytkownika
trajano
Posty: 9
Rejestracja: 05 listopada 2011, 21:37

[phpBB YTgalerry] Problem z własnym elementem na index.php

Post autor: trajano » 23 lutego 2013, 09:46

Chciałbym na stronie głównej index.php wyświetlić w kolumnie kilkanaście linków do różnych filmów na YouTube które zostały umieszczone w postach użytkowników. Niestety, sam skrypt działa elegancko ale nie wiem jak go poprawnie zaimplementować na stronę główną. Po wklejeniu kodu do index.php i odesłaniu do odpowiedniego pliku w index_body.html nie wyświetla mi się kompletnie nic. Jedynie dane zamieszczone bezpośrednio w pliku jako czysty html (tabelka lub tekst) natomiast wszystko to, co miał zrobić skrypt jest pominięte.
Stworzyłem taki prosty kod.

Kod: Zaznacz cały


<?php
header('Content-Type: text/html; charset=utf-8');
 
    define('IN_PHPBB', true);
    // Okresl sciezke do katalogu w którym zainstalowane jest  phpBB3.
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    // Plik common.php jest wymagany.
    include($phpbb_root_path . 'common.' . $phpEx);
    include($phpbb_root_path . '/includes/functions_display.' . $phpEx);

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);

    // okresl style i/lub lokalizacje
    // w tym przykladzie, okreslilismy ze bedziemy uzywac plik: moj_jezyk.php
    $user->setup('mods/player_lang');

    /*
     * przypisywanie stalych danych do tabeli.
     * wszystkie ciagi jezykowe beda zawarte w pliku jezykowym,
     */
	 
	// Pokaz linków
		$dbms2 = 'mysqli';
		$dbhost2 = 'xxx.xxx.xxx.xxx;
		$dbname2 = 'db_name';
		$dbuser2 = 'db_user';
		$dbpasswd2 = 'db_pswd';
		
		// nawiazujemy polaczenie 
		$connection2 = @mysql_connect($dbhost2, $dbuser2, $dbpasswd2) 
		// w przypadku niepowodznie wyswietlamy komunikat 
		or die('Brak polaczenia z serwerem MySQL.<br />Blad: '.mysql_error()); 
		// polaczenie nawiazane ;-) 
		// echo "Udalo sie polaczyc z serwerem!<br />"; 
		// nawiazujemy polaczenie z baza danych 
		
		$db2 = @mysql_select_db($dbname2, $connection2) 
		// w przypadku niepowodzenia wyswietlamy komunikat 
		or die('Nie moge polaczyc sie z baza danych<br />Blad: '.mysql_error()); 
		// polaczenie nawiazane ;-) 
		// echo "Udalo sie polaczyc z baza danych!"; 
		mysql_query('SET NAMES utf8');


        $wynik = mysql_query('SELECT * FROM phpbb_posts ORDER BY post_id DESC LIMIT 100', $connection2);
		if(mysql_num_rows($wynik) > 0) { 
		$caption = array(); 
		while($rows = mysql_fetch_array($wynik)){      
		$caption[] = $rows; 
		} 
		foreach($caption as $row) { 
		$yt = substr_count($row['post_text'], '[youtube');
		$tablica_tekst_yt = explode('[youtube',$row['post_text']);
		for ($i=0; $i<$yt; $i++) {
			$tablica_tekst_yt2 = explode('[/youtube',$tablica_tekst_yt[++$i]);
			$wydobyty_parametr_v = explode('v=',$tablica_tekst_yt2[0]);
			$parametrV = explode(' ',$wydobyty_parametr_v[1]);
			$v = $parametrV[0];
			$template->assign_block_vars('nazwa_bloku', array(
				'ICON'        => "<a href=\"http://XXXXXXXXXX.pl/viewtopic.php?f=".$row['forum_id']."&t=".$row['topic_id']."&p=".$row['post_id']."#p".$row['post_id']."\"><span>".$row['post_subject']."</span></br><span><img src=\"http://img.youtube.com/vi/".$v."/1.jpg\"></a>",
			));
		}
		}
		
}
     // Ustaw nazwe pliku szablonu którego chcesz uzyc dla tego pliku.
    // Nazwa pliku szablonu zlokalizowanego w /styles/twoj_styl/templates/.
    $template->set_filenames(array(
        'body' => 'player_body.html',
    ));

    // Konczymy skrypt i pokazujemy strone.
    page_footer();

    ?>
plik /styles/prosilver/template/player_body.html

Kod: Zaznacz cały

<!-- INCLUDE overall_header.html -->
<style type="text/css">
<!--
.style1 {
	font-size: 13px;
}
-->
</style>
<table border="0" cellspacing="2" cellpadding="2" align="center">
    <!-- BEGIN player -->
    <tr class="<!-- IF player.S_ROW_COUNT is even -->bg1<!-- ELSE -->bg2<!-- ENDIF -->" width="160px">
        <td align="center">{player.ICON}</td>
    </tr>
    <!-- END player -->
</table>
<!-- INCLUDE overall_footer.html -->

ten kod wywołany jako

Kod: Zaznacz cały

http://www.mojastrona.pl/player.php 
dziala idealnie jak trzeba, ale nie wiem, jak zaimplementować jego działanie bezpośrednio pod plik index.php w taki sposób, aby obok tabeli forumlist_body.html działał pionowa tabela lub dodatkowa kolumna właśnie z tymi linkami do filmów. Sam player działałby jako osobny plik, chodzi mi tylko o wyświeltenie linków do nich na stronie głównej. Oczywiście jest to uproszczony skrypt ponieważ nie ma filtrowania czy w zapodanej ilości odczytanych postów z bazy wogóle będzie potrzebna ilość filmów albo czy nie bdzie ich za dużo, ale to już późniejszy problem. na razie chciałbym wogóle włączyć to wykonywanie skryptu na stronie głównej.

Poniżej przedstawiłem graficznie uproszczony szkic tego, co chciałbym uzyskać.

Wiem że odwołuję siędo nienapisanego jeszcze moda, ale z waszą pomocą może taki by powstał :) chyba że istnieje a ja nic o nim jeszcze nie wiem :)
Załączniki
projektaw.GIF
Uproszczony szkich projektu pliku index.php
(5.91 KiB) Pobrany 40922 razy
======================

www.AutoWrzuta.pl

Zablokowany

Wróć do „Dla deweloperów”