Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Пожалуйста помогите разобраться с ошибкой синтаксиса. jQuery

Здравствуйте. Пожалуйста помогите разобраться с ошибкой синтаксиса: Fatal error: Smarty error: : syntax error: unrecognized tag: $j('a').qtip({ position: { corner: { target: 'bottomRight', tooltip: 'topLeft' (smarty_compiler.class.php, line 446) in Z:\home\shopos\www\includes\lib\smarty\smarty.class.php on line 1108

Вставляю полностью работоспособные строчки скрипта. (проверены на моих сайтах)
<script type="text/javascript">

      $j(document).ready(function()

      {

$j('a').qtip({

position: {

corner: {

target: 'bottomRight',

tooltip: 'topLeft'

}

},

style: {

name: 'blue',

padding: '7px 13px',

width: {

max: 200,

min: 0

},

tip: true

}

});

});


Как вы поняли ни какие телодвижения с :

var $j = jQuery.noConflict();

не проходят.
Ошибка выдается даже при отключении абсолютно всех плагинов, и библиотек.

Скрипт взят тут _craigsworks.com_


Eсли вставляете в шаблон, то надо  так: {literal}...{/literal}


Спасибо. Ошибка синтаксиса устранена. Теперь борюсь с конфликтом jQuery.


Подскажите где прописать

var $j = jQuery.noConflict();
чтобы он подключался сразу после загрузки jQuery.js
пробовал в general.js.php. выходит все равно над этой стройкой есть уже пару загруженных скриптов


Сейчас я тебе подробно опишу почему не работает.
В шаблонизаторе smarty есть много недочетов, который просто не понимают код яваскриптов и  прочее, т.к. в них совпадают ковычки, знаки (тем самым закрывая шаблонизатор посередине).

Моё решение было бы таким:

1. В папке includes есть файл header.php

В нем найти: add_js('jscript/jscript_ajax.js', $HEAD, 'jscript_ajax');


И где нибудь ниже разместить:

add_js_code
("
      $j(document).ready(function()

      {

$j('a').qtip({

position: {

corner: {

target: 'bottomRight',

tooltip: 'topLeft'

}

},

style: {

name: 'blue',

padding: '7px 13px',

width: {

max: 200,

min: 0

},

tip: true

}

});

});
", $HEAD, 'jquery');



Сейчас я тебе подробно опишу почему не работает.

И где же ПОДРОБНО описано, с указанием точным, в каком месте ошибка?


В шаблонизаторе smarty есть много недочетов, который просто не понимают код яваскриптов и  прочее, т.к. в них совпадают ковычки, знаки (тем самым закрывая шаблонизатор посередине).

Нет там никаких недочетов. Есть пользователи, который не знают, как легко и просто в Smаrty вставлять произвольный текст, чтобы он не обрабатывался, а оставался как есть. Кстати, в этой же ветке про это чуть выше написано.


Моё решение было бы таким...

Это, конечно, работает. Но это не есть решение. Делать так - это значит работать шиворот-навыворот, вместо простого способа использовать сложное. Это уход от использования шаблонизатора. И не всегда такое хорошо. 



Подскажите где прописать
var $j = jQuery.noConflict();
чтобы он подключался сразу после загрузки jQuery.js
пробовал в general.js.php. выходит все равно над этой стройкой есть уже пару загруженных скриптов

includes/header.php


korshunov, ну допустим  глупо и т.п. А ты считаешь что нужно в каждый шаблон писать этот код, когда это хид и должен быть уникален для всех шаблонов? Не?

И ещё ради опыта сравни Smarty и HsTemplate допустим и увидишь где легко и просто, а где через ж.



korshunov, ну допустим  глупо и т.п. А ты считаешь что нужно в каждый шаблон писать этот код, когда это хид и должен быть уникален для всех шаблонов? Не?

Не считаю.
Но, во-первых этот Ваш вопрос уже несколько в сторону от темы.  Во-вторых, предчувствуя подобный вопрос, я написал "И не всегда такое хорошо", тем самым намекая на то, что это уже на усмотрение пользователя.


В принципе мне будет очень интересно твое решение, как это вставить в шаблоне. Т.к. по работе со смарти сам имею значительно маленький опыт работы.



В принципе мне будет очень интересно твое решение, как это вставить в шаблоне. Т.к. по работе со смарти сам имею значительно маленький опыт работы.



Нет там никаких недочетов. Есть пользователи, который не знают, как легко и просто в Smаrty вставлять произвольный текст, чтобы он не обрабатывался, а оставался как есть. Кстати, в этой же ветке про это чуть выше написано.



Eсли вставляете в шаблон, то надо  так: {literal}...{/literal}



Сейчас я тебе подробно опишу почему не работает.
В шаблонизаторе smarty есть много недочетов, который просто не понимают код яваскриптов и  прочее, т.к. в них совпадают ковычки, знаки (тем самым закрывая шаблонизатор посередине).

Моё решение было бы таким:

1. В папке includes есть файл header.php

В нем найти: add_js('jscript/jscript_ajax.js', $HEAD, 'jscript_ajax');


И где нибудь ниже разместить:

add_js_code
("
      $j(document).ready(function()

      {

$j('a').qtip({

position: {

corner: {

target: 'bottomRight',

tooltip: 'topLeft'

}

},

style: {

name: 'blue',

padding: '7px 13px',

width: {

max: 200,

min: 0

},

tip: true

}

});

});
", $HEAD, 'jquery');


Для вставки JS или чего угодно между head в шаблон есть файл themes/шаблон/javascript/general.js.php

В шаблонизаторе smarty есть много недочетов, который просто не понимают код яваскриптов и  прочее

Что делать, если smarty использует фигурные скобки? Да и не только smarty. Тут разработчики же предусмотрели literal для этих целей. Просто не все о нем знают и не используют. В доках smarty все есть. Причем на русском для 2 ветки.


Разъясню ситуацию. Код:
<script class="example" type="text/javascript">

// Create the tooltips only on document load
$j(document).ready(function()
{
  // By suppling no content attribute, the library uses each elements title attribute by default
  $j('#content a').qtip({
      content: {
        text: false // Use each elements title attribute
      },
      style: 'cream' // Give it some style
  });
 
  // NOTE: You can even omit all options and simply replace the regular title tooltips like so:
  // jQuery('#content a').qtip();
});

</script>
По инструкции должен стоять после всего контента перед закрывающим body.
Следовательно его оборачиваю в {literal}.
Мне нужно подключить саму библиотеку скрипта :

<script type="text/javascript" src="jquery.qtip-1.0.0-rc3.js"></script>

Тут прошу отнестись с пониманием, скрипты я знаю весьма поверхностно.
В этой библиотеке , в самом начале я вставляю
var j = jQuery.noConflict();

, Ниже заменяю все $ на j
Следовательно (как я понимаю), jQuery.noConflict() должен быть
вызван после того как вызывается библиотека  jQuery. т.е сразу после jQuery должна полключаться библиотека jQuery.noConflict().
Если вызывать эту библиотеку в general.js.php
то после jQuery.js
подключаются :
<script type="text/javascript" src="jscript/jquery/plugins/fancybox/jquery.fancybox-1.2.5.pack.js"></script>
<script type="text/javascript"><!--
$(document).ready(function() {
$("a.zoom").fancybox({
"zoomOpacity" : true,
"overlayShow" : false,
"zoomSpeedIn" : 500,
"zoomSpeedOut" : 500
});
});
//--></script>
<script type="text/javascript" src="jscript/jscript_JsHttpRequest.js"></script>
<script type="text/javascript" src="jscript/jscript_ajax.js"></script>

И только потом jquery.qtip-1.0.0-rc3.js.
Я попробовал подключить библиотеку в jQuery.php
После
add_js('jscript/jquery/jquery.js', $head_new, 'jquery');

вставил
add_js('jscript/jquery/jquery.qtip-1.0.0-rc3.js', $head_new, 'jquery');

В таком случае jquery.qtip-1.0.0-rc3.js подключается сразу после jquery.js.
Но пока это не помогло.
Пробую дальше(


Зачем вы в начало скрипта ставите var j = jQuery.noConflict(); ?

Вам нужно разместить всего два куска
1 - в конце кода, перед BODY
2 - в themes/шаблон/javascript/general.js.php подключать сам скрипт qtip
Все


Вот же описано как подключать http://www.craigsworks.com/projects/qtip/docs/#installation


Может что-то другое подойдет
http://dimox.name/beautiful-tooltips-with-jquery/
http://onehackoranother.com/projects/jquery/tipsy/



Зачем вы в начало скрипта ставите var j = jQuery.noConflict(); ?

Чтобы избежать конфликта с другими библиотеками. а он явно есть т.к. скрипт не работает

Вам нужно разместить всего два куска
1 - в конце кода, перед BODY
2 - в themes/шаблон/javascript/general.js.php подключать сам скрипт qtip
Все

Размещал не виходит.
Попробуйте сами. шаблон clenshop
На локалке пробую на чистой странице без других скриптов  все работает.


библиотека это jQuery. Все остальное - плагины для нее или какие там еще термины используются для определения этих мини-скриптов...

Сейчас нет возможности проверить. Завтра попробую поставить.
Если вам не принципиально именно этот, но попробуйте те, которые я ранее указал. они работают, проверено.



Сейчас нет возможности проверить. Завтра попробую поставить.
Если вам не принципиально именно этот, но попробуйте те, которые я ранее указал. они работают, проверено.

Принципиально. Необходим вывод title и изображение. Перепробовал уже несколько таких.
Кстати этот тоже у меня не заработал ) http://nebox.ru/js/mootools/delaem-prostenkie-vsplyvayushhie-podskazki-tooltip-na-mootools/


ну так этот на mootools. там без конфликта никак.


Вот у меня работает, я это как то делал и до конца его не доработал,
а QTIP не везде показывает, потому что некоторых местах надо поправить title!
Вот ссылка _ttp://for-babies.ru/



а QTIP не везде показывает, потому что некоторых местах надо поправить title!

Скорее не в некоторых а там где он нужен)



Сейчас я тебе подробно опишу почему не работает.
В шаблонизаторе smarty есть много недочетов, который просто не понимают код яваскриптов и  прочее, т.к. в них совпадают ковычки, знаки (тем самым закрывая шаблонизатор посередине).

Моё решение было бы таким:

1. В папке includes есть файл header.php

В нем найти: add_js('jscript/jscript_ajax.js', $HEAD, 'jscript_ajax');


И где нибудь ниже разместить:

add_js_code
("
      $j(document).ready(function()

      {

$j('a').qtip({

position: {

corner: {

target: 'bottomRight',

tooltip: 'topLeft'

}

},

style: {

name: 'blue',

padding: '7px 13px',

width: {

max: 200,

min: 0

},

tip: true

}

});

});
", $HEAD, 'jquery');


Большое спасибо. ваш вариант сработал)) ;D


NeBox, вряд ли было бы красиво в js файле мешать код jquery и ajax))


dj-avtosh, причем тут смешивание ajax и jquery и где я такое предлагал? Вы о чем?


Кстати вы первую версию ставили или вторую?
Сейчас уже вторую сделали http://www.craigsworks.com/projects/qtip2/demos/


Вторую видел. но ставил ток первую ) Всем спасибо)


Пользуясь моментом еще один вопрос:
Как то возможно привязать эту кнопку к вкладке страницы? Т.е. что бы при закрытии всплывало это окно. Похожий пример есть тут _ruseller.com/lessons.php?rub_id=32&id=195
Только минус только в том что он срабатывает при наведении на любую вкладку и каждый раз при наведении.
Думаю было бы не плохо если бы пользователю при выходе Предлогалось добавить сайт в закладки)


сейчас в закладки такой фигней добавляют только проно-сайты и подобные ГС.
В большинстве случаев при заходе на сайт предлагается подписаться на фиды или mail. у шопоса обширные каналы RSS. можно отдавать много чего.
Сделайте блок на сайте и разместите там ссылки на подписки RSS или mail. Будет полезнее.


Источник



Copyright ShopOS