Skocz do zawartości
  • 0
X3nO

JSy w szablonie?

Pytanie

Cześć, chcę dodać do szablonu mapę Google (Dokładniej mapę San Andreas pod Google Maps: http://forum.sa-mp.com/showthread.php?p=2976662) i mam problem (znowu xd) Trzeba tam umieścić kod JS w <script> a jak to robię to mam błąd

Cytat

Whoops\Exception\ErrorException thrown with message "There is a script block in theme_gcp_front_main_mapArea. Please move all JavaScript into JS files."

Wiem, co oznacza ten błąd ale jak wrzucę ten kod do oddzielnego JSa to nie działa. Tą mapę już uruchomiłem w zwykłym HTML więc problem leży po stronie IPSu

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

6 odpowiedzi na to pytanie

Polecane posty

  • 0

Nie da się w szablonie umieszczać żadnego kod JS, jedyne jaki możesz umieścić to np. z odnośnikiem do zewnętrznego pliku np. do api google maps. Wszystko zależy od tego jak umieszczasz swój kod w pliku JS i jak wywołujesz wszystko

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Okej, problem leżał po stronie CSS xD Porównałem z kodem IPB3. 

Dla tych co by szukali:

<style type="text/css">#map-canvas {height: 563px;} .teles{  height: auto; width: auto; float: none; text-align: center; min-width: 160px; min-height: 30px;}.teles1{height: 40px; width: 155px;float: none;text-align: center;style=color:black;}</style>

Bez tego mapka się po prostu nie wyświetli

Edytowano przez X3nO

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

bo widocznie go źle umieszczasz. wrzucasz go do pliku i co dalej? jako kontroler JS w IPS4 robisz czy jako zwykły plik? poza tym musisz pamiętać, że jeśli to zwykły plik to musisz użyć

$(document).ready(function(){
...
});

a jeśli jako kontroler JS to musisz go odpowiednio załadować nie przez src tylko jako data-controller elementu

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Hmm, ajax nie ładuje podstrony z tymi JSami, trzeba normalnie odświeżyć stronę żeby odpaliło.

<ips:template parameters="" />
<h2 class="ipsType_sectionTitle ipsType_medium ipsType_reset ipsClear">{lang="game_map"}</h2>
<style type="text/css">#map-canvas {height: 563px;} .teles{  height: auto; width: auto; float: none; text-align: center; min-width: 160px; min-height: 30px;}.teles1{height: 40px; width: 155px;float: none;text-align: center;style=color:black;}</style>
<div id="map-canvas"></div>

<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script src="map/SanMap.min.js"></script>
<script src="map/mapka.js"></script>

Mam tak zrobione

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@edit   

Zrobiłem tak:

	protected function _map()
	{
		$gracze_c = 0;
		$gracze_cs = 0;
		$outs = '';
		foreach( \IPS\Db::i( 'samp_db' )->select("*", "playersOnline") as $gracze ) {
			$gracze_c++;
			$gracze_cs++;

			$gracz = '<h3 style="color:black;" class="teles">ID: <b>#</b>'.$gracze['id'].'</h3>';
			$pozycja = explode(" ", $gracze['player_pos']);
			$gracze['pos_x'] = $pozycja[0];
			$gracze['pos_y'] = $pozycja[1];

			$outs .= 'var playerInfoWindow_'.$gracze_cs.' = new google.maps.InfoWindow({
				content: \''.$gracz.'\'
			});
			var playerMarker_'.$gracze_cs.' = new google.maps.Marker({
				position: SanMap.getLatLngFromPos('.$gracze['pos_x'].', '.$gracze['pos_y'].'),
				map: sm.map,
				icon: \'map/icons/spawn.gif\'
			});
			google.maps.event.addListener(playerMarker_'.$gracze_cs.', \'click\', function() {
				sm.map.setCenter(playerMarker_'.$gracze_cs.'.position);
				playerInfoWindow_'.$gracze_cs.'.open(sm.map,playerMarker_'.$gracze_cs.');
			});';
		}

		return \IPS\Theme::i()->getTemplate( 'main' )->mapArea( $outs );
	}

Ale teraz nie wiem jak do <script> dodać zmienną $outs, bo w szablonie się nie da :/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

te zmienne nie są zadeklarowane w kodzie bo nie są w <script> ujęte. tutaj musisz jak już zrobić to wszystko w pliku JS.

Masz 2 wyjścia:

  1. w elemencie h3 dać data-information i zapisać tam dane jsonem a później obrobić w dołączonym pliku
  2. zrobić coś takiego jak ja w katalogu firm mam przykładowo:
    \IPS\Output::i()->jsVars[ 'mapPoint' ] = $mapPoints;
    , gdzie
    $mapPoinsts
    jest zwykłą tablicą w php zawierającą potrzebne mi informacje

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony


  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×

Ważne informacje

Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies.