![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
SergV |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 4.8.2006 Где: Германия Репутация: нет Всего: 1 |
Привет!
Тут начал писать простой сайт на пхп с ява скриптами, решил его сделать какбы полудинамичным. В общем сделал чтото вроде заготовки, всё работает как задумал, но есть некоторые проблемки. В частности, почемуто не могу через переменную передать индетификатор текстов, для подстановки из языковыз файлов. Тоесть если я прямо указываю типа "echo _HOME", то проблем нет, а если передаю через переменную, то не срабатывает, а вот в масиве всё передаётся нормально. Единственный вариант, который остаётся, это создать масив, получать переменную, и по ней выбирать из масива нужный индетификатор, это то что на ум приходит. Может кто знает в чем проблема с простой переменной?..., пробовал все известные варианты, со скобками и без, с отдельной подстановкой знака "_" и вместе со словом. Также меня интересует, как лучше организовать страничную структуру. Сейчас я сделал типа как в хтмл, каждая страница свой файл, с той лишь разницей, что в индексах всего пару строк такой структуры.
Где переменные передают данные о странице в файл config.php, который и организует дальнейшую структуру сайта. Всё сделал без повторений кодов, кроме этих страниц. Переменная "$title", это как раз та, что нужна для передачи и подстановки для языковых файлов. Хотелось бы сделать это одной страницей, но пока из идей, только запись в куки какая страница должна грузиться. Да только у куков свои недостатки, если они отключены, то страница буде всегда главная. Может кто посоветует, как лучше это сделать, чтобы без лишнего передаваемого кода. Сайт делаю в качестве главного сайта, нужно всего с десяток страниц, база не нужна, так как контент меняться если и будет, то очень редко, другими словами постоянный контент. Динамичным будет лишь информация с сайтов поддоменов, которая и будет от туда браться. Сам сайт тут, пока в стадии разработки. Скрипт закладок взял готовый, но он мне не нравится, внути закладок нельзя использовать теги заголовков, они просто не отображаются. Календарь тоже в стадии написания, как и другое. Хотелось бы также узнать, что не так там, что следует доработать? Это сообщение отредактировал(а) SergV - 1.7.2008, 09:12 |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
вопрос непонятен абсолютно. что такое "идентификатор текстов" никто не знает. что ты там пробовал - никому неизвестно. зачем столь многословно описывать то, что можно проиллюстрировать двумя строчками кода? Одним скриптом, ты хотел сказать? Если страницы представляют из себя чистый HTML, то можно. имя файла передавать, разумеется, не в куках, а в адресной строке. обезопасить его с помощью функции basename() и прочитать этот файл. Это сообщение отредактировал(а) Feldmarschall - 1.7.2008, 09:27 |
|||
|
||||
SergV |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 4.8.2006 Где: Германия Репутация: нет Всего: 1 |
Передовал так:
Принимал так:
Написал же, пхп сайт, какой там может быть чистый хтмл код? Уже только по дному участку приведённого куска кода, должно быть понятно, что остальные файлы пхп.
|
||||||||||
|
|||||||||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Никакой "передачи" в этом коде нет. Все, что там написано, называется "присвоение переменной $title различных значений". Если ты пояснишь, что имеется ввиду под словом "передача", помочь можно будет более конкретно. Пишешь ты очень невнятно. поэтому не стоит апеллировать к своим писаниям.
Нет, непонятно. Чаще всего "страницы" представляют из себя именно HTML. Большую часть содержимого любого сайта составляюет HTML. есть понятие "пхп скрипт" и есть понятие "страница сайта". так вот, страниц обычно бывает в десятки раз больше, чем скриптов. К примеру, вот эту страницу, которую ты сейчас читаешь, показывает один скрипт. И таких страниц на сайте - десятки тысяч. Определись, что ты называешь своими "страницами". |
|||
|
||||
SergV |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 4.8.2006 Где: Германия Репутация: нет Всего: 1 |
Я не программист, и выражаюсь так, как приходит на ум в данный момент. Я присваиваю этой переменной значение, которое потом берётся из этой переменной в подкрепляемом файле. Всё что мне надо, чтобы в переменной передать значение "_HOME", которое подставится в "<?php echo $title; ?>" также, как если бы я просто написал "<?php echo _HOME; ?>". В языковом файле значение берётся из такой строки - "define( '_HOME', 'Главная' );" Думаю достаточно ясно написал?
Ладно, объясню коротко структуру того что у меня есть. 1. Это файл с кодом который привел в первом посте. Таких файлов несколько, и они отвечают за загрузку нужного контента. 2. Файл конфигурации, который содержит небольшой пхп код, подключающий те или иные файлы, в зависимости от первого пункта, и выбранного языка, а также файл шаблона. 3. Основной файл содержащий функции меню, сонтента и т.д.. а из него подключаются файлы модулей. 4. PHP файл шаблона, который содержит саму страницу HTML сайта, от куда и вызываются все функции. Всё что мне надо, это в index.php сделать так, чтобы происходило подключение нужного файла контента, в зависемости от выбранной страницы. Сейчас происходит это через переменную $page, которая подставляется в include в функии отвечающей за вывод контента.
Для каждой страницы эта переменная содержит соответственно своё значение. Вот мне и надо, както передать это значение при переходе на другую страницу, но чтобы всё это было с одним index.php. И насколько я понял, то единственный способ, это передавать переменную через адресную строку, а раз так, то как это проще и надёжней реализовать? Это сообщение отредактировал(а) SergV - 1.7.2008, 10:22 |
||||||
|
|||||||
IceDragon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 3.4.2008 Где: Питер Репутация: нет Всего: нет |
SergV, Извиняюсь за суждение
![]() Для того чтобы написать даже простенький сайт - советую почитать основы, и эксперементировать например - пройти курс на intuit.ru - http://www.intuit.ru/department/pl/plphp/ или читать документацию - http://www.php.net/manual/en/ (или русская версия - http://www.php.net/manual/ru/) |
|||
|
||||
slaw |
|
||||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 19.4.2008 Репутация: нет Всего: 1 |
используй в самом начале кода
и записывай свой идентификатор в
|
||||
|
|||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
почти. что имеется в виду под "прикреплением" файла? если оператор include, и <?php echo _HOME; ?> работает, а <?php echo $title; ?> - нет, то, скорее всего, ты вызываешь его внутри функции, и проблема связана с областью видимости переменных.
а зачем? |
|||
|
||||
IceDragon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 3.4.2008 Где: Питер Репутация: нет Всего: нет |
можно получать параметр через массив $_GET[]
т.е. $page=$_GET['page']; а страницу вызывать - index.php?page=main а потом подключать - include $page.'html'; только единственно - надо обезапасить переменную. Добавлено через 9 минут и 28 секунд по поводу языка своетую не через define работать - а через массив слов например файл который мы подключаем - /ru/home.lang.php <? $lang['title'] = 'Главная'; $lang['description'] = 'Это главная страничка сайта Васи Пупкина'; ?> и соответственно в коде - <? ... $lang='ru'; include($path.'/'.$lang.'/home.lang.php'); echo $lang['title']; ... ?> Это сообщение отредактировал(а) IceDragon - 1.7.2008, 10:30 |
|||
|
||||
SergV |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 4.8.2006 Где: Германия Репутация: нет Всего: 1 |
IceDragon, знаю что надо изучать, и постепенно изучаю, но в основном на готовых кодах, кода что нибуть править приходится. На детальное изучение нет времени, да и нужен мне пхп только для определённых целей, а сайт решил сделать, так как не хочу использовать готовы CMS из за нескольких страниц.
slaw, мне нужно без куков это сделать, с куками я знаю и так как сделать.
Проблем с видемостью нет, всё видимо, другие перемненные доступны, как и эта. Просто не хочет переменная приниматься в качестве индетификатора, или как там его. Если я просто пишу <?php echo _HOME; ?>, то перевод подставляется, если _HOME помещаю в переменную и подставляю её так <?php echo $title; ?>, то просто выводится _HOME.
На будущее, я пока не знаю, сколько страниц будет, и будет проще, если это будет в одном файле а не в нескольких десятков.
Об этом я думал, только мне как раз и не хотелось это делать так, но походу другого варианта нет, если не хочу делать кучу стартовых индексов, даже если там 3 строчки. |
||||||
|
|||||||
skyboy |
|
||||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
значит, файл с объявлением _HOME происходит после присвоения переменной $title. или в другой области видимости. то, что у тебя в title оказывается строка _HOME абсолютно не значит, что в переменную нельзя запихнуть константу, нет. это значит, что в момент присвоения константа _HOME не определена и вместо того, что ты для _HOME определил через define, черезвычайно услужливый РНР подставляет строку, равную имени константы. и такое происходит только тогда, когда константа не определена. вот вставь перед присвоением $title следующий код:
и посмотри, есть ли там в списке твоя _HOME. готов спорить, что нету. |
||||
|
|||||
Feldmarschall |
|
||||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Страниц или скриптов? Если страниц, то это вообще от индекса не зависит, их показывают соответствующие скрипты. если скриптов, то откуда их много возьмется?
чем проще? что за странная идея запихнуть все в один файл? у тебя на диске в компьютере все файлы лежат в одном каталоге? вызываются одной программой? объясни - в чем удобство, когда каждый скрипт не вызывается отдельно, а все толкаются в индексе и надо писать отдельный код, который будет их разбирать?
о господи. наконец-то написал, в чем проблема. _HOME у тебя - КОНСТАНТА. Теперь объясни, зачем ты хочешь записывать имя константы в переменную? Тебе язык, что ли, передавать надо? тогда при чем здесь подключение вообще? Вообще, если бы ты с самого начала писал, какую задачу решаешь, а не пытался изложить про качеств идентификаторов, то и ответ получил гораздо раньше. почему нельзя сразу писать реальную задачу, а не свои потуги по её решению? Первое правило - язык должен передаваться в адресной строке. второе правило - лучше, если это будет не квери стринг (то, что после знака вопроса), а другая часть адреса - каталог или субдомен ua.site.com/page.php ru.site.com/page.php или site.com/ru/page.php site.com/ua/page.php только если такой возможности нету - тогда передавать в квери стринг. но при этом надо помнить, что ижентификатор языка надо добавлять ко всем без исключения ссылкам на сайте. ведь иначе он тут же потеряется. |
||||
|
|||||
IceDragon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 3.4.2008 Где: Питер Репутация: нет Всего: нет |
ну при помощи mod_rewrite можно пользоваться аиртуальной структурой каталогов.
ИМХО тема топика - это просто один из шагов к той структуре что предложил Feldmarschall, для простого сайта сойдет ) а потом можно и посложнее |
|||
|
||||
skyboy |
|
||||||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
впрочем, если присвоение происходит так: а не как должно быть: то, конечно, может статься, что константа в нужном месте объявлена. а ты вместо константы пихаешь в переменную текстовое значение "HOME"...
если не уверен, что тебя поймут однозначно - лучше перефразировать. или здравый смысл, логичность и последовательность - качество мышления сугубо программистов? Добавлено через 28 секунд
эээ... может, с константами бы сначала разобраться? |
||||||
|
|||||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
тема топика - сначала понять, что автору надо.
сначала у него передача (куда-то, неизвестно куда) переменных. потом присвоение имени константы переменной и потом обращение к этой константе из переменной. на самом деле, вроде бы, передавать язык надо между вызовами скрипта, но это толко мои догадки. SergV, у тебя один файл с языками, что ли? как вообще структура реализована? не проще сделать для каждого языка свой файл, и в переменную писать только его имя? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |