Почему мой скрипт jQuery не запускается в Wordpress? - PullRequest
0 голосов
/ 14 мая 2009

Я протестировал приведенный ниже скрипт на демонстрационной странице, которая не использует CMS. Скрипт находится в файле index.php и отлично работает.

<form method="get" action="">
  <input id="label_search" type="text" value="" maxlength="40" name="inputText"/>
</form>

<script type="text/javascript">
  var options = {
      script:"includes/autosuggest.php?json=true&",
      varname:"input",
      minchars: 2,
      delay: 200,
      json:true,
      shownoresults:false,
      maxresults:15,
      timeout: 5000
  };

  var as_json = new bsn.AutoSuggest('inputText', options);
</script>

Теперь я хочу использовать тот же код в файле шаблона Wordpress. Но ничего не происходит. Похоже, скрипт вообще не запускается.

Я использую удобные URL-адреса и установил пользовательские постоянные ссылки на /% category% /% postname%. Может быть, есть что сказать?

Я знаю, что bsn.AutoSuggest_2.1.3.js работает, потому что тест "alert ('hello')" для файла выполняется при загрузке страницы.

Что может быть не так?

Это мой код WP:

sl_startpage.php:

<?php
/*
Template Name: SL - Start page
*/ 
  get_header(); ?>
  <div id="myArea">
  <?php
    include_once('includes/storeLocator/sl_header.php');
  ?>
  </div>

<?php 
  get_footer(); 
?>

Это (просто) код в sl_header.php:

  <div id="sl-header">
    <form method="get" action="">
      <input id="label_search" type="text" value="" maxlength="40" name="product_search"/>
    </form>                   
  </div>


  <script type="text/javascript">
    var options = {
        script:"includes/autosuggest.php?json=true&",
        varname:"input",
        minchars: 2,
        delay: 200,
        json:true,
        shownoresults:false,
        maxresults:15,
        timeout: 5000
    };
    var as_json = new bsn.AutoSuggest('product_search', options);
  </script>

Любые предложения кто-нибудь?

Это плагин, который я использую: http://www.brandspankingnew.net/archive/2007/02/ajax_auto_suggest_v2.html

Ответы [ 2 ]

1 голос
/ 14 мая 2009
includes/autosuggest.php?json=true&

Это URL, верно? Я думаю, что в конечном итоге он будет относиться к файлу, который генерирует ваш шаблон, поэтому, если URL-адрес autosuggest.php равен:

http://yourserver.com/includes/autosuggest.php

.. и вы используете шаблон для генерации html для следующих двух (готовых) URL:

http://yourserver.com/frontpage/
http://yourserver.com/categories/anotherpage/

Я уверен, что он будет искать ваше включение:

http://yourserver.com/frontpage/includes/autosuggest.php
http://yourserver.com/categories/anotherpage/includes/autosuggest.php

.. когда вы, вероятно, хотите, чтобы он смотрел на:

http://yourserver.com/includes/autosuggest.php

.. поэтому попробуйте добавить '/' в начало вашего URL в этом JSON и посмотреть, исправит ли это это.

0 голосов
/ 14 мая 2009

Хорошо! Примерно после 20 часов исследований я нашел ответ в блоге Райана Фариса . Как я и подозревал, это было простое решение.

Wordpress использует «удобные для пользователя URL». Поэтому мой путь закончился так: http://www.mysite.com/includes/autosuggest.php?json=true&

РЕАЛЬНЫЙ путь таков: http://www.mysite.com/wp-content/themes/my_theme/includes/autosuggest.php?json=true&

Мой скрипт не может быть расположен во внешнем скрипте .js, потому что мне нужно получить URL из Wordpress. Итак, я сделал это:

<?php $site_url = bloginfo('template_url'); ?>

 <script type="text/javascript">
    var options = {
        script:"<?php echo $site_url; ?>includes/autosuggest.php?json=true&",

Теперь мой сценарий работает, и я счастливый турист.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...