Jak otworzyć szablon Smarty na serwerze lokalnym?

0

Hej. Obecnie znam CSS i HTML, chciałbym edytować layout maski sklepu pisanej w SMARTY. Niestety nie potrafię otworzyć jej na serwerze lokalnym. Korzystam z pakietu XAMPP, zainstalowanym poprawnie na Windowsie. W folderze htdocs utworzyłem folder smarty, w którym znajduje się biblioteka smarty (folder libs), folder tmp, folder views (ze wszystkimi plikami maski sklepu internetowego) oraz plik index.php, który wygląda tak:

<?php
require_once('libs\Smarty.class.php');

$smarty=new Smarty();
$smarty->template_dir='views';
$smarty->compile_dir='tmp';

$smarty->display('main.tpl');
?>

Kiedy próbuję otworzyć stronę, pojawia się taki komunikat

Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "file:C:\xampp\htdocs\smarty\views\main.tpl" on line 3 "{{assign var="meta_langcode_iso639" value="__IAI_TEMPLATE_LANG_639_2__"}}{{assign var="html5_layout" value=""}}{{capture name="asyncJS" assign="asyncJS"}}{{$txt['10001::asyncJS_vid']}}{{/capture}}{{if !( $xml->getItem("action/set_render/item"))}}{{literal}}" unknown tag "literal" <-- thrown in C:\xampp\htdocs\smarty\libs\sysplugins\smarty_internal_templatecompilerbase.php on line 3

Z tym właśnie problemem nie potrafię się uporać. Pozdrawiam.

0

Jeśli wkleisz tego tpl'a będzie nam łatwiej namierzyć błąd. Ale na razie moją sugestią może być albo zła wersja Smarty (pamiętam że jest 2 oraz 3). Sprawdź czy obie obsługują literala.

0

Tpl wrzucony w komenatarzu. Podany błąd w temacie wyskakiwał z biblioteką smarty w wersji 3. W wersji 2 wyskakuje taki błąd

Fatal error: Smarty error: [in main.tpl line 3]: syntax error: unrecognized tag: {assign var="meta_langcode_iso639" value="__IAI_TEMPLATE_LANG_639_2__" (Smarty_Compiler.class.php, line 446) in C:\xampp\htdocs\smarty\libs\Smarty.class.php on line 1100
0

Wg mnie odpowiedź jest prosta ;) domyślnie w smartach używany jest tylko taki rodzaj delimiterów { } - a tpl'ce faktycznie masz {{ }} - tak więc skonfiguruj sobie smarty tak żeby domyślnie używał tychże delimiterów

http://www.smarty.net/docs/en/language.variables.smarty.tpl#language.variables.smarty.ldelim

Dla Smarty V3

$smarty->setLeftDelimiter('{{');
$smarty->setRightDelimiter('}}');

Błędy jakie Ci się pojawią po ustawieniu tych delimiterów - będą wynikać z tego że część prawych domknięć }} jest rozbita na kilka linii lub ma spację.
Poza tym - wątpię żeby mając tylko pliki tpl/smarty - mógł to jakoś poprawić, bo tu jest tyle zależności, dziwnych pętli itp itd że bez reszty silnika pewnie nic nie zobaczysz.

0

W wersji 3 dodałem konfigurację do index.php. Teraz pojawiają się następujące błędy


Notice: Undefined index: xml in C:\xampp\htdocs\smarty\tmp\55e7fb9072180d22377533b6f19246560e489d3d_0.file.main.tpl.php on line 51

Notice: Trying to get property of non-object in C:\xampp\htdocs\smarty\tmp\55e7fb9072180d22377533b6f19246560e489d3d_0.file.main.tpl.php on line 51

Fatal error: Call to a member function getItem() on null in C:\xampp\htdocs\smarty\tmp\55e7fb9072180d22377533b6f19246560e489d3d_0.file.main.tpl.php on line 51

W pliku nie znalazłem odstępów między prawymi domknięciami.

1

To że masz ten błąd - oznacza że nie masz poprawnie zaimportowanych danych jakie są normalnie przekazywane do tego skryptu. No i niestety, ale tutaj już raczej nic nie poradzisz na to.

1 użytkowników online, w tym zalogowanych: 0, gości: 1