Skocz do zawartości
  • Zarejestruj się
  • 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

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

  • Kto przegląda   0 użytkowników

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

×

Ważne informacje

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.