Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > Меню гиперссылок


Автор: MuradK 14.1.2005, 14:51
Я сейчас работаю над сайтом и заметил что у меня слишком много страничек, так что если придётся добавить какую нибудь ссылку в меню гиперссылок, мне что менять на каждой страничке. ФРЕЙМЫ я опробовал! Они мне не нравятся так как невозможно поставить "title".
Так вот, как мне сделать так чтобы меню отображалось на всех станицах?

Спасибо,

Мурад.

Автор: Mal Hack 14.1.2005, 16:15
С помощью SSI или PHP или перла или других серверных технологий...
ИМХО самый простой вариант SSI
ЗЫ: А ифреймы не пробовал?

Автор: MuradK 14.1.2005, 16:32
Не мог бы дать скрипт. В во всех перечмсленных языках я не разбираюсь.

Автор: Mal Hack 14.1.2005, 16:59
<!--#include file='/menu.html' -->

Автор: Bangladesh 16.1.2005, 02:52
а если проще делаешь основу - index.php а все остальное - ТЕМПЛАТЕСЫ, как в PHPBB или IPB...

смотри, допустим пишешь в меню ссылку:

href="index.php?p=news

а потом скрипт

Код

<?
if($p=="news"){

require "путь к файлу";

}

?>

Автор: $дмитрий 16.1.2005, 02:53
или <?php readfile("down.inc"); ?> для РНР
Добавлено @ 02:56
или так:

Код

readfile("top.inc");

if (isset($QUERY_STRING)) {

switch($QUERY_STRING)
{

case "info1" : require("info1.php");  break;
case "info2" : require("info2.php");  break;
case "info3" : require("info3.php");  break;

default : require("index.php");  break;

}
}  else  {
   require("index.php");
  }

readfile("down.inc");

Автор: Bangladesh 16.1.2005, 03:03
а зачем так слоно, нельзя просто условие и вставка

Автор: MuradK 16.1.2005, 09:53
Ребята, в ПХП пока я ни фига не смыслю smile(
А сколько времени нужно чтобы основательно выучить ПХП???

Автор: Gold Dragon 16.1.2005, 11:33
Вариант1 (на хосте нет SSI и РНР)

Вот пример струкрута моего сайта

Это пример страницы
Код

<html>
<head>
......
</head>
<body>
...
<!-- начало меню  -->
<td class="fon1" width="150">
<script language="JavaScript" type="text/javascript" src="menu.js"></script>
</td>
<!-- конец меню  -->
...
<!-- начало основного поля  -->
<td class="fon1" width="500">
......
</td>
<!-- конец основного поля  -->
......
</body>
</html>

Думаю понятно...

Вот сам файл меню menu.js
Код

var _a=eval("location.pathname");
function _url(name){
if (_a==name){return false;}
else{return true;}
}
document.write("<table width='100%'>");
document.write("<tr><td><a href='index.html' onclick=\"return _url('/index.html')\">Главная</a></td></tr>");
document.write("<tr><td><a href='termin.html' onclick=\"return _url('/termin.html')\">Понятие</a></td></tr>");
document.write("<tr><td><a href='istor.html' onclick=\"return _url('/istor.html')\">История</a></td></tr>");
document.write("<tr><td><a href='proiz.html' onclick=\"return _url('/proiz.html')\">Производство</a></td></tr>");
document.write("<tr><td><a href='koktel.html' onclick=\"return _url('/koktel.html')\">Коктейли</a></td></tr>");
document.write("</table>");

Как видно, это просто кусок структуры страницы, который выдран из основного и храниться в отдельном файле. И чтобы изменить меню, я меняю только один файл.

Я не стал убирать функцию, может её логика тебе пригодиться. Встроенная функция проверяет, на какую ссылку жмёт юзер, если это страница уже открыта, то документ перезагружаться не будет.

Вариант 2 (на хосте есть SSI и РНР, но ты не знаешь РНР)

Сама страница
Код

<html>
<head>
......
</head>
<body>
...
<!-- начало меню  -->
<td class="fon1" width="150">
<!--#include virtual="menu.html"-->
</td>
<!-- конец меню  -->
...
<!-- начало основного поля  -->
<td class="fon1" width="500">
......
</td>
<!-- конец основного поля  -->
......
</body>
</html>

Здесь вставляется уже не JavaScript, а кусок файла HTML

А вот и сам файл menu.html
Код

<table width="100%">
<tr><td><a href="index.html">Главная</a></td></tr>
<tr><td><a href="termin.html">Понятие</a></td></tr>
<tr><td><a href="istor.html">История</a></td></tr>
<tr><td><a href="proiz.html">Производство</a></td></tr>
<tr><td><a href="koktel.html">Коктейли</a></td></tr>
</table>


Как это всё сделать? Делаешь свою полноженную страницу в одном файле, а потом те куски которые у тебя повторяются и часто меняются вырезаешь и вставляешь в отдельные файлы. И в зависимости от варианта: это будет или JavaScript или HTML файт





Автор: lovermann 16.1.2005, 14:29
Извини за критику, но такое простое меню просто не заслуживает того, чтобы быть сделанным в виде отдельного .js, по-моему. MuradK, РНР изучается довольно быстро. Если твой сайт -- это всего 5 страничек, то можно сделать так: все тексты распихиваешь по .txt-файлам, а через одну главную страницу инклудишь разные .txt. И всё. Это быстро и легко.

Автор: Gold Dragon 16.1.2005, 18:57
Цитата(lovermann @ 16.1.2005, 14:29)
такое простое меню просто не заслуживает того, чтобы быть сделанным в виде отдельного .js
Извине конечно, но это просто глупость smile Интересно было бы услышать более профессиональное обоснование ;)

Автор: vio 19.1.2005, 20:57
Red Dragon
А можно ли в качестве гиперссылок вставить картинку???
Как тогда должен выглядеть menu.js?
И второй вопрос: почему у меня на компе не работает
<!--#include virtual="menu.html"-->? smile

Автор: Irokez 19.1.2005, 20:59
vio а у тебя веб-сервер то есть? Апач, денвер, IIS?

Автор: Gold Dragon 19.1.2005, 22:42
<!--#include virtual="menu.html"-->

это будет работать если установлен SSI. Тебе нужно установить виртуальный сервер, чтоб было видно..

Цитата(vio @ 19.1.2005, 20:57)
А можно ли в качестве гиперссылок вставить картинку???
Как тогда должен выглядеть menu.js?
Понимаешь, я в *.JS вставляю просто кусок кода HTML

вот смотри
<a href="termin.html">Понятие</a>
это обыкновенный код html

а чтобы его засунуть в js, надо просто вставить в
document.write("....")

вот и всё. А код может быть любым


Автор: vio 21.1.2005, 15:26
Подскажи где его можно скачать...
Просто дали задание сделать сайт, я его впервые деляю и пока еще не представляю как работать с сарвером...

Автор: AztEK 31.1.2005, 20:28
А кстати как настроить Apache для работы с SSI? Пробовал менять что-то в файле httpd.conf - ни фига smile

Автор: vio 3.2.2005, 19:22
AztEK
Может тебе это поможет: (не помню с какого это сайта, но мне помогло...)
6. Настройка Apache


Внимание! Это - самый ответственный момент установки. Просим соблюдать инструкции БУКВАЛЬНО.

В директории D:\usr\Apache\Apache2\conf находится файл httpd.conf, откройте его. Это - единственный файл, который необходимо настроить. Вам предстоит найти и изменить в нем некоторые строки, а именно те, о которых упоминается далее. Во избежание недоразумений не трогайте всё остальное. Следует заметить, что в нем каждый параметр сопровождается несколькими строками комментариев, разобраться в которых с первого раза довольно тяжело. Поэтому не обращайте на них внимание.

В поле Listen укажите номер порта на котором будет работать Apache, по умолчанию стоит 80:
Listen 80


лучше так и оставить, но если он занят другой программой, тогда его нужно будет изменить на другой свободный порт. Не забудьте, если Apache использует другой порт, тогда Вам придётся всегда его указывать в ссылках, например на порт 8080 будет ссылка выглядеть так http://127.0.0.1:8080


В поле ServerAdmin укажите Ваш E-mail адрес, который будет показываться в сообщениях об ошибке сервера. Например:
ServerAdmin my@email.com


В поле ServerName напишите любое слово - на работе это не сказывается, например:
ServerName ApacheServer


Только не забудьте раскомментировать поле ServerName, то есть убрать символ "#" перед этим параметром (по умолчанию он закомментирован)!


В поле DocumentRoot укажите ту директорию, в которой будут храниться Ваши html-файлы, например:
DocumentRoot D:/www


Разумеется, можете указать и любую другую директорию, если хотите. В любом случае, не забудьте ее создать, лучше сделайте это прямо сейчас!


Найдите блок, начинающийся строкой <Directory /> и заканчивающийся </Directory> (вообще, такие блоки обозначают установки для заданной директории и всех ее поддиректорий). Его нужно изменить на:
<Directory />
Options Indexes Includes
AllowOverride All
</Directory>


Таким образом, в этом блоке будут храниться установки для всех директорий по умолчанию (т.к. это - корневая директория).

Возможные значения параметров:

ExecCGI - разрешить выполнение CGI-сценариев в данном каталоге и его поддереве;
FollowSymLinks - разрешить переходы по символическим ссылкам (создаваемым командой ln);
Includes - разрешить SSI (Server Side Includes);
Indexes - разрешить выдачу листинга каталога, если в нем нет файла index.html (или файла индекса, заданного директивой DirectoryIndex);
MultiViews - разрешить поддержку многих языков; по умолчанию она отключена, и включать ее, как правило, не нужно; поддержка перекодирования "на лету" для русского языка устанавливается с помощью других директив, которые мы рассмотрим позже;
All - установить сразу все перечисленные режимы кроме MultiViews

Найдите аналогичный блок, начинающийся <Directory "d:/usr/Apache/htdocs"> и заканчивающийся </Directory>. Там будет много комментариев, не обращайте на них внимание. Этот блок следует заменить на:
<Directory "D:/www">
Options Indexes Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>


Это - установки для директории с Вашими html-документами. Если хотите, можете установить другую директорию, главное, чтобы она совпадала с той, которая прописана в параметре DocumentRoot


Идем дальше. Установите UserDir, например так:
UserDir "d:/home"


Это будет директория, в которой хранились бы домашние страницы пользователей, если бы это был настоящий Web-сервер, а также корневые каталоги виртуальных хостов (см. ниже). Не забудьте также создать этот каталог.


Установите DirectoryIndex так:
DirectoryIndex index.html index.htm


Это - так называемые файлы индекса, которые автоматически выдаются сервером при обращении к какой-либо директории, если не указано имя html-документа. В принципе, можно добавить сюда и другие имена, например, index.phtml, если Вы будите работать с PHP и т.д.


Найдите и пропишите такой параметр:
ScriptAlias /cgi-bin/ "d:/cgi-bin/"


Да, именно так, с двумя слэшами. Это будет та директория, в которой должны храниться Ваши CGI-скрипты. Если хотите, можете задать другое имя, например:
ScriptAlias /mycgi/ "d:/mycgidir/"



Подобный параметр говорит Apache о том, что, если будет указан путь вида http://localhost/cgi-bin, то на самом деле следует обратиться к директории D:/cgi-bin.


Теперь следует найти и настроить блок параметров, начинающийся с <Directory "D:/cgi-bin"> и заканчивающийся </Directory>. Это - установки для Вашей CGI-директории (если Вы установили для нее другое имя на предыдущем шаге, соответственно модифицируйте путь). Там должно быть:
<Directory "D:/cgi-bin">
AllowOverride All
Options ExecCGI
</Directory>



Теперь найдите строку AddDefaultCharset. Там должно быть:
AddDefaultCharset ISO-8859-1


измените так:
AddDefaultCharset WINDOWS-1251


Эта строка отвечает за кодировку в которой хранятся на диске Ваши файлы.


Настройте следующий параметр:
AddHandler cgi-script .bat .exe .cgi .pl


Это говорит Apache о том, что файлы с расширением .exe и .bat нужно рассматривать как CGI-скрипты.


И последнее - установите:
AddHandler server-parsed .shtml .shtm .sht


Или, если Вы хотите, чтобы и обычные файлы html обрабатывались SSI, напишите так:
AddHandler server-parsed .shtml .shtm .sht .html .htm




Поздравляем - Вы настроили свой Apache, и он должен уже работать! Для запуска сервера нажмите Пуск->Программы->Apache HTTP Server->Control Apache Server->Start при этом появится окно, очень похожее на Сеанс MS-DOS, и ничего больше не произойдет. Не закрывайте его и не трогайте пока оно само не закроется.

Ещё появится в трее иконка, с помощью которой можно запускать и отключать сервер Apache



Вот шаги, которые можно проделать для проверки работоспособности сервера:

Проверка html. В директории d:\www. Создайте файл index.html, например с таким содержанием:
<HTML>
<BODY>
<H1>УРА! Сервер работает!</H1>
</BODY>
</HTML>


Теперь запустите браузер и наберите:
http://localhost/index.html или просто http://localhost/
Загрузится Ваш файл.


Проверка CGI: в директории D:/cgi-bin для CGI-скриптов создайте файл test.bat с таким содержанием:
@echo off
echo Content-type: text/html
echo.
echo.
dir


Теперь в браузере наберите: http://localhost/cgi-bin/test.bat В окне отобразится результат команды DOS dir. (Хотелось бы отметить, что указанный тест работает не на всех версиях Windows, иногда вместо того, чтобы выполнить файл test.bat, Apache выводит в браузер его содержимое. С чем это связано - не совсем ясно, однако, кажется, можно избавиться от указанной ошибки путем манипулирования с Реестром. Если у Вас test.bat не запускается, не расстраивайтесь: вряд ли Вы когда-нибудь будете писать скрипты в виде bat-файлов, тем более, что это несовместимо с Unix.)


Проверка SSI: аналогична проверке html. Создайте файл test.html с таким содержанием:
<!--#include virtual="/cgi-bin/test.bat"-->


Если bat - файлы Ваш Apache запускать не хочет (см. выше), то дождитесь установки Perl или PHP.

Если что-то пошло не так, окно Apache открывается и тут же закрывается, или выдаёт следующее сообщение
Syntax error on line 57 of D:/usr/Apache/Apache2/conf/httpd.conf
:
ServerRoot must be a valid directory
Note the errors or messages above, and press the <ESC> key to exit. 17...23...

это значит, произошла ошибка - в httpd.conf.



Добавлено @ 19:28
AztEK, нашла <a href=http://www.apache.tut.ru/> www.apache.tut.ru </a>

Автор: AztEK 10.2.2005, 15:31
2
vio
smile smile smile smile smile smile smile
Спасибо! помогло!
smile smile smile smile smile smile smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)