Вход • Регистрация

Шаблоны дизайна и сторонние скрипты

  • 12 октября 2012 г.
  • Есть файл который выводит результаты поиска:

    Цитата
    <?php

    /* Скрипт поиска по сайту на основе Яндекс.XML.
    php-MyAdmin.ru/learning/search.html 0.6 (utf-8). 28.11.2010
    */

    $sSearch_text = (isset($_REQUEST['find']) && strlen($_REQUEST['find']) > 2)
    ? htmlspecialchars($_REQUEST['find']) : '';

    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Поиск по сайту с помощью Яндекс XML - Разработка php-MyAdmin.ru</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link href="search.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="search.js"></script>
    </head>

    <body>

    <!-- Поиск. Начало. -->
    <div>
    <form method="post" action="" onsubmit="javascript:Search_onsubmit(1); return false;">
    <div>
    <input type="text" id="search_text" value="<?php echo $sSearch_text; ?>" maxlength="100" size="50" />
    <input type="submit" id="search_submit" value="Искать" />
    </div>
    </form>
    <noscript>Для работы поиска включите в браузере JavaScript.</noscript>
    <div class="search_div" id="search_div"></div>
    <script type="text/javascript">
    <!--
    document.onkeydown = L_page_onkeydown;
    <?php
    if (!empty($sSearch_text)) echo 'Search_onsubmit(1)' . "\n";
    ?>
    //-->
    </script>
    </div>
    <!-- Поиск. Конец. -->

    </body>

    </html>


    Можно ли это как-то все в шаблон сайта запихнуть? И сделать эту страницу как /search/index.php чтобы она выводила результаты поиска? Или наоборот, можно ли шаблон дизайна сайта подключать на этой странице?
    • 14 октября 2012 г.
    • Можно и отдельным индексным файлом сделать, но тогда в нем работать будет только поиск. Без шаблонных тегов, блоков новостей сайта, меню и пр. Если надо сделать в дизайне сайта, то надо идти через создание шаблонных тегов. В functions.php создаете функцию, в нее ставите свой РНР-код и затем шаблонным тегом запускаете в шаблоне.
      • 14 октября 2012 г. , редакция: 14 октября 2012 г.
      • До этого я уже сам допер. :) Вопрос лишь в том, что я не программист и не могу разбить этот файл на отдельные части и сделать их них шаблонные теги. Точнее просто синтаксис не осилю. Хороша у вас cms, но для людей неплохо знающих php. Но я явно не из этой категории. И комьюнити пока не сформировалось, где могли бы помочь.
  • 14 октября 2012 г.
  • В шаблоне где будет поисковая строка вставляете код
    Код

    <link href="/search.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="/search.js"></script>
    <form method="post" action="" onsubmit="javascript:Search_onsubmit(1); return false;">
    <div>
    <input type="text" id="search_text" value="<?php echo $sSearch_text; ?>" maxlength="100" size="50" />
    <input type="submit" id="search_submit" value="Искать" />
    </div>
    </form>
    <script>document.onkeydown = L_page_onkeydown;</script>

    search.js и search.css должны быть в корне сайта
    у дива в котором основное содержание страницы стоит добавить два атрибута
    class="search_div" id="search_div", нужно смотреть сам шаблон, id может быть уже указан у этого тега
    • 14 октября 2012 г.
    • Андрей, спасибо, но ведь php код не обрабатывается в шаблонах.
      Поэтому все фрагменты типа:
      Код
      $sSearch_text = (isset($_REQUEST['find']) && strlen($_REQUEST['find']) > 2)
      ? htmlspecialchars($_REQUEST['find']) : '';


      Код
      <input type="text" id="search_text" value="<?php echo $sSearch_text; ?>" maxlength="100" size="50" />


      Код
      <?php
      if (!empty($sSearch_text)) echo 'Search_onsubmit(1)' . "\n";
      ?>
      //-->


      Надо в function.php превращать в шаблонные теги.
      • 15 октября 2012 г.
      • Можете превращать по отдельности в несколько тегов. Можете загнать в один тег, вместе с формой и прочим html-кодом
        • 15 октября 2012 г.
        • Мочь то я могу, да не знаю как Но надо конечно же по отдельности, чтобы была возможно каждый элемент в необходимом месте прописать.
      • 15 октября 2012 г.
      • забыл убрать из формы код
        Код
        <?php echo $sSearch_text; ?>

        и без него должно работать
        Код
        <?php
        if (!empty($sSearch_text)) echo 'Search_onsubmit(1)' . "\n";
        ?>

        вырезал по той же причине
        • 15 октября 2012 г.
        • Андрей, могли бы Вы просто дать целевой код:
          Как вот эти фрагменты сделать шаблонными тегами, причем отдельными тегами.
          1.
          Код
          <?php
          $sSearch_text = (isset($_REQUEST['find']) && strlen($_REQUEST['find']) > 2)
          ? htmlspecialchars($_REQUEST['find']) : '';
          ?>


          2.
          Код
          <?php echo $sSearch_text; ?>


          3.
          Код
          <?php
          if (!empty($sSearch_text)) echo 'Search_onsubmit(1)' . "\n";
          ?>
          • 15 октября 2012 г.
          • Владимир, Вы действительно совсем новичек в программировании...
            Ох, с чего бы начать... Смотрите, в Вашем исходном коде важны две вещи:
            1. Чтобы на странице сайта был код в head
            Код
            <script type="text/javascript" src="search.js"></script>

            2. Чтобы в теле сайта, где нужно Вам, была форма <div>
            Код
            <form method="post" action="" onsubmit="javascript:Search_onsubmit(1); return false;">
            <div>
            <input type="text" id="search_text" value="<?php echo $sSearch_text; ?>" maxlength="100" size="50" />
            <input type="submit" id="search_submit" value="Искать" />
            </div>
            </form>
            <noscript>Для работы поиска включите в браузере JavaScript.</noscript>
            <div class="search_div" id="search_div"></div>
            <script type="text/javascript">
            <!--
            document.onkeydown = L_page_onkeydown;
            <?php
            if (!empty($sSearch_text)) echo 'Search_onsubmit(1)' . "\n";
            ?>
            //-->
            </script>
            </div>

            Все! Остальное будет делать скрипт search.js, который, видимо, идет в яндекс, ищет по сайту и затем просто ниже подгружает результаты поиска в слой id_search.
            Значит, как это работает на странице:
            при первом запуске просто выходит форма. В форме есть строковая переменная, вот эта
            Код
            <input type="text" id="search_text" value="<?php echo $sSearch_text; ?>" maxlength="100" size="50" />

            ( Зачем там код <?php echo $sSearch_text; ?> чуть ниже объясню. )
            Когда посетитель тыкает "Искать", форма сабмитится сама на себя и вызывается еще раз. Тогда в скрипт приходит переменная $_REQUEST['find']
            Код
            $sSearch_text = (isset($_REQUEST['find']) && strlen($_REQUEST['find']) > 2)
            ? htmlspecialchars($_REQUEST['find']) : '';
            и тогда она вверху скрипта и обрабатывается условиями "если $_REQUEST['find'] существует, то есть пользователь что-то ввел, и количество символов более 2, то удаляем html-символы и присваиваем очищенную строку переменной $sSearch_text.
            Затем ниже выводится снова форма и уже срабатывает код
            Код
            value="<?php echo $sSearch_text; ?>"
            для того, чтобы вывести в строке поиска то самое, что пользователь ищет.
            И еще ниже срабатывает конструкция
            Код
            <?php
            if (!empty($sSearch_text)) echo 'Search_onsubmit(1)' . "\n";
            ?>
            которая просто выводит на сайт строку Search_onsubmit(1), если не пустая поисковая строка. Эта Search_onsubmit(1) - это запуск JS, который грузит результаты поиска с Яндекса в слой....
            Понимаете логику?

            То есть, как сделать все проще?
            1. Вы создаете страницу сайта, называете ее "Поиск по сайту яндексом". В "Дополнительно" в поле "Java Script" вписываете
            Код
            <script type="text/javascript" src="search.js"></script>

            А в поле контента в визуалььном редакторе в HTML-источник вписываете
            Код
            <insert name="moi_poisk">
            (Такого тега пока нет, мы его создадим ниже)
            2. Идете в function.php
            и там создаете функцию moi_poisk()
            где пишете:
            Код
            moi_poisk(){
            $sSearch_text = (isset($_REQUEST['find']) && strlen($_REQUEST['find']) > 2)
            ? htmlspecialchars($_REQUEST['find']) : '';
            ?>
            <!-- Поиск. Начало. -->
            <div>
            <form method="post" action="" onsubmit="javascript:Search_onsubmit(1); return false;">
            <div>
            <input type="text" id="search_text" value="<?php echo $sSearch_text; ?>" maxlength="100" size="50" />
            <input type="submit" id="search_submit" value="Искать" />
            </div>
            </form>
            <noscript>Для работы поиска включите в браузере JavaScript.</noscript>
            <div class="search_div" id="search_div"></div>
            <script type="text/javascript">
            <!--
            document.onkeydown = L_page_onkeydown;
            <?php
            if (!empty($sSearch_text)) echo 'Search_onsubmit(1)' . "\n";
            ?>
            //-->
            </script>
            </div>
            <!-- Поиск. Конец. -->
            <?
            }


            Все.
            • 16 октября 2012 г.
            • Виталий, огромное спасибо! Сложно описать, как Вы меня выручили.
              Но я конечно затупил по страшному. Самый просто вариант и не увидел, даже и знаю что меня так заклинило. :( Мне все гораздо сложнее представлялось.
              Наверное все таки не хватает подобных примеров в документации. Увидел бы нечто подобное, не тормозил бы так. Еще раз спасибо!
              • 16 октября 2012 г.
              • Как раз сейчас плотно работаем надо документацией, последние дни выкладываем on-line, уже почти все обновили. В ближайшие дни будем насыщать примерами текущие разделы документации, а также примемся за практический раздел. Кстати, велкам в тему, накидайте еще пунктов, что нам надо осветить, с чем у Вас были загвоздки

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум