fffffff
Показать сообщение отдельно
Старый 10.07.2007, 11:55   #26
Приятель
 
Регистрация: 05.04.2007
Адрес: xermit.blogspot.com
Пол: M
Провайдер: АДС FTTB
Сообщений: 245
Поблагодарил: 39
Поблагодарили 18 раз в 12 сообщениях
Открыли хайд :
0 в этом сообщении
0 Всего


По умолчанию

Да, увлекся, забыл про title.

include можно делать сколько угодно, но на php целесообразнее применять например Smarty, где создается шаблоны html страниц и в нужное место вставлются данные.

Напрямую передавать название файла в скрипт не стоит, хотя бы потому, что поломать могут и то, что нарушается актуальность данных.
То есть на страничке прописан выпадающих список с файлами, пусть даже прямо в статическом html. И может быть так, что такого файла в файловой системе не будет, реорганизация или еще что. Будет потом на страничке удручающая надпись не удалось там выполнить операцию include, ладно хоть к примеру не require. Конечно в коде можно проверку вставить существования файла, но пользователь рассудит, типа что за ....(опустим матерную брань) поставил ссылку на не существующий файл, пускай даже ошибки не возникло, но файл то не открылся, хотя ссылка имеется.

Лучше меню сгенерить по наличию файлов в определенном каталоге, чтобы не было ссылок на не существующие файлы. А ссылки создавать в коде html прямо на эти файлы в том каталоге, чтобы когда их выбирают из списка они грузились напрямую, а не через скрипт php. При этом вот как раз такое меню надо include-ить в такие файлы, а не на оборот, то есть меню включать в код загружаемой страницы, а не код загружаемой страницы в меню по запросу пользователя, название скрипта отображающее меню сайта жестко забивается прямо в коде загружаемой
страницы. Тут я немножко передернул, главное понять что код страницы обычной надо создавать по шаблону, а в самом шаблоне вставлены скрипты php в тех местах где действительно это требуется, например генерировать меню, а не наоборот писать один скрипт, который в зависимости от параметров включает в себя нужную страницу и выдает результат, на сайтах с большой загрузкой такой код просто ляжет.

Пусть к примеру, есть страница rasdel/news.php
когда грузится головная страница, которая называется /home.php, то там содержится обычный html код первой страницы сайта
и в каком-то месте require(menu.php); скрипт menu.php сгенерит тебе
меню с разделом news и это меню будет включено на первой странице сайта, ссылка будет ссылаться на файл [Для просмотра данной ссылки нужно зарегистрироваться] напрямую. а в news.php также содержится код require(../menu.php);
по какому принципу будет menu.php генерит код уже дело десятое, там может быть даже статическое menu на html созданное, а может как я писал сгенерить описание разделов и ссылок на сайте по наличию каталогов и файлов в определенном подкаталоге, но надо учитывать что операция эта медленная, кроме того menu.php может генерировать разные типы меню к примеру для разных страниц если передашь какие нить дополнительные параметры перед включением и выполнением menu.php.

Потом, прочитав посты я так и не понял что значит врезать в момент верстки. Загрузить в слой. Где это происходит?
Даже в статическом HTML можно врезать слой (div,layer, iframe) и вставить ссылку на нужную страницу и даже в динамике без перезагрузки страницы загрузить в такой слой новый файл.

Если речь идет допустим, о том, что сайт есть набор прямоугольников, каждый из которых может быть включен или выключен, то да, возможно php надо применить, но даже в этом случае можно это сделать через javascript+cookie и свойство css hide, тупо запихнуть все прямоугольники на одну страницу а потом показывать по событию или загружать в iframe в динамике что хочется. Баннеры это уже все прошли. Тот же AJAX использовать, хотя имя собирательное.

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

Сайт я тот глянул но так и не понял. Кроме того на том сайте в меню ссылка вида [Для просмотра данной ссылки нужно зарегистрироваться] может обрабатываться самим web сервером, допустим в Apache стоит плагин mod_rewrite([Для просмотра данной ссылки нужно зарегистрироваться], который переписыает такой запрос к примеру на запрос вида [Для просмотра данной ссылки нужно зарегистрироваться]
и открывает соответствующую статическую страницу.
То, что на том сайте есть, возможно делается статической версткой страницы и модулем mod_rewrite.

Допустим тебе хочется чтобы было некое автоматизированное меню сайта.
Чтобы создав каталог в файловой системе, в меню появлялся новый раздел, а создав файл в таком каталоге появлялась ссылка на него в этом разделе и при ее выборе в основное окно загружался текст выбранной страницы.
Пусть загружается основная страница с меню, а в слой или фрейм броузер загрузит нужную страницу выбранную в меню. Делается это через фрейм даже в статическом html, нужно лишь только у ссылки указать атрибут target куда грузить, например в поименованный фрейм. Если не хочется использовать фрейм, тогда можно попробовать использовать слой.

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

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

Есть один минус. Положив какой-либо секретный файл в такой сканируемый каталог мы автоматически его рассекретим.

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

Smartboy: Учимся пользоваться кнопкой "Правка"

Последний раз редактировалось Xermit; 10.07.2007 в 15:18. Причина: мультипост
Xermit вне форума  
Ответить с цитированием