PHP — вставка php-файлов в шаблон? @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 18 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
Nikolai Kolesnik Муж.
Куратор DeLinks
144
Сообщения: 4524
Зарегистрирован: 22.06.02
Откуда: Киев, Украина
Заголовок сообщения: PHP — вставка php-файлов в шаблон?
Сообщение Добавлено: 27 Август 2004, 00:52:59 
Возникла проблема, сколько ни парился — сам решить не могу. Перерыл книги по PHP, искал в нете — ничего вразумительного не нашёл (скорее всего, потому что ламер в программировании).
Умных терминов знаю мало, поэтому буду объяснять по-простому:
Сейчас переделываю свой сайт.
Есть страничка «Портфолио», на которой находится, пять линков на разделы портфолио. Страница является шаблоном, куда с помощью “require” вставляется шапка и подвал.
Так же на этой странице есть пять линков на разные разделы портфолио. Эти «разделы» заверстаны в отдельных php’шных файлах и должны при клике на линк (например portfolio.php?id=partname) подгружаться в шаблон. То бишь, подгружается тот файл, который задан переменной.
В свою очередь, в этих php’шных файлах-разделах, находятся списки работ (например portfolio.php?id=work035, …036, …038 etc.). При клике на которые, файл-раздел «выгружается» из шаблона, а вместо него подгружается файл-страничка с описанием работы, и самой картинкой.

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

Код:
<?php
   if ($id == "") {require "portfolio/default.php";}
   
   if ($id == "imposition") {require "portfolio/imposition.php";}
   if ($id == "i_impositionbook") {require portfolio/imposition/impositionbook.php";}
   if ($id == "bookfire") {require "portfolio/imposition/bookfire.php";}
?>


Но это криво (знаю я, знаю. и не плюйтесь :)), потому как хоть и отображает в браузере, но выдаёт ошибки.
Подозреваю, что то, что я хочу сделать — реализуется массивами. Но как написать нормальный код я не знаю.

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

Зарание, огромное спасибо.

_________________
Элитный швейцарский портфель Scona Graphics
Вот так они и жили: она рыбу ловила — он её жарил.
Nikolai Kolesnik Муж.
Куратор DeLinks
144
Сообщения: 4524
Зарегистрирован: 22.06.02
Откуда: Киев, Украина
Сообщение Добавлено: 27 Август 2004, 08:42:24 
COLT, умный, да. :)
И ты хош что бы я со своими нулячими знаниями, разобрался в этом монускрипте?
Мне что т по проще бы... :)
Но все равно — сенкс.

_________________
Элитный швейцарский портфель Scona Graphics
Вот так они и жили: она рыбу ловила — он её жарил.
@TSV
постоянный участник
11
Сообщения: 4736
Зарегистрирован: 08.05.03
Сообщение Добавлено: 27 Август 2004, 09:03:31 
Это хорошо и удобно ассоциативными массивами делать. Такими, то есть, у которых индекс - строка, и значение - строка.
Код:
<?
// Portfolio.php

// Здесь вставляется стандартная шапка
include("header.php");

// Здесь заполняем ассоциативный массив
$links = array();
$links[ "imposition" ] = "portfolio/imposition.php";
$links[ "i_impositionbook" ] = "portfolio/imposition/impositionbook.php";
$links[ "bookfire" ] = "portfolio/imposition/bookfire.php";

// Здесь определяем нужный файл, если $id пустой или неправильный,
// подставляем значение по умолчанию
$id_link = $links[ $id ];
if (empty($id_link))
   {
   $id_link = "portfolio/default.php";
   }

// На этом месте нужно бы заполнить так же массив $names, чтобы
// в цикле сгенерить список ссылок на работы, с отмеченной активной ссылкой.

// Здесь вставляем "серединку" файла, то есть нужный контент
include ($id_link);

// После всего этого ставим подвал
include ("footer.php")
?>

Еще нужно разобраться с относительными/абсолютными путями к файлам, чтобы вставляемые файлы всегда корректно находились. :glasses: :gent:


Последний раз редактировалось @TSV 27 Август 2004, 09:06:10, всего редактировалось 1 раз.
@TSV
постоянный участник
11
Сообщения: 4736
Зарегистрирован: 08.05.03
Сообщение Добавлено: 27 Август 2004, 09:04:38 
Nikolai Kolesnik, это не то чтобы рабочий код, который можно использовать сразу после Copy/Paste, а просто описание удобного принципа. :glasses:
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 27 Август 2004, 09:21:00 
@TSV, в начало скрипта:

Код:
$id = isset($_GET['id']) ? $_GET['id'] : 'someDefaultValue';


и вместо

Код:
$id_link = $links[ $id ];
if (empty($id_link))
   {
   $id_link = "portfolio/default.php";
   }


что-то типа такого:

Код:
if (isset($links[ $id ]))
    {
    $id_link = $links[ $id ];
    }
else
   {
   $id_link = "portfolio/default.php";
   }

_________________
We've got the big memory and the small memory. The small memory's to remember the small things and the big memory's to forget the big ones.


Последний раз редактировалось Crazy 27 Август 2004, 09:22:32, всего редактировалось 1 раз.
@TSV
постоянный участник
11
Сообщения: 4736
Зарегистрирован: 08.05.03
Сообщение Добавлено: 27 Август 2004, 09:22:14 
Crazy, я же передупереждал, что пишу не рабочий код, а просто принцип работы. ;)
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 27 Август 2004, 09:23:03 
@TSV, так я принцип и подправляю. :)

_________________
We've got the big memory and the small memory. The small memory's to remember the small things and the big memory's to forget the big ones.
@TSV
постоянный участник
11
Сообщения: 4736
Зарегистрирован: 08.05.03
Сообщение Добавлено: 27 Август 2004, 09:26:05 
Crazy, нее... Так не надо. Зачем лишними подробностями грузить? Так человеку неудобно будет.
- Написано во вводной, что $id уже есть? Написано. :)
- И не isset там надобно, а именно empty. Так оно понадежнее будет. ;)
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 27 Август 2004, 09:27:25 
@TSV, а чем здесь empty надежнее isset? :)

_________________
We've got the big memory and the small memory. The small memory's to remember the small things and the big memory's to forget the big ones.
@TSV
постоянный участник
11
Сообщения: 4736
Зарегистрирован: 08.05.03
Сообщение Добавлено: 27 Август 2004, 09:28:11 
Crazy, И вообще, по-хорошему нужно соответствие (id, URL, Название) брать, например, из текстового tab-delimited файла, или просто директорию читать, <title> брать. Или из какой-никакой базы данных. Но этот вопрос лучше оставить на потом. :)
@TSV
постоянный участник
11
Сообщения: 4736
Зарегистрирован: 08.05.03
Сообщение Добавлено: 27 Август 2004, 09:31:04 
Crazy, a empty надежнее вот в таких случаях:
Код:
<?
$links = array();
$links[ "imposition" ] = "portfolio/imposition.php";
$links[ "i_impositionbook" ] = "portfolio/imposition/impositionbook.php";
$links[ "bookfire" ] = "portfolio/imposition/bookfire.php";
$links[ "" ] = "";
$links[ "" ] = "";
// "А здесь я потом допишу"
?>

:) А в $id не пустое значение, а пустая строка попала. Сплошь и рядом бывает.
des
соучастник
0
Сообщения: 407
Зарегистрирован: 14.04.03
Откуда: 40км от Москвы
Сообщение Добавлено: 27 Август 2004, 10:05:06 

Crazy писал(а):
@TSV, а чем здесь empty надежнее isset? :)


isset только проверяет, что переменная установлена, а если она с пустым значением?
Для этого empty.

_________________
всё таково, каково оно есть, и больше никаково
CutCopyPaste Муж.
соучастник
0
Сообщения: 516
Зарегистрирован: 21.06.03
Откуда: Москва
Сообщение Добавлено: 27 Август 2004, 10:22:34 
des, дык , так когда empty и так подгружается дефолтовая страница. разве не так?
а isset оградит от всяких Warningofff!

_________________
Пьяный русский хакер практически непобедим!
Nikolai Kolesnik Муж.
Куратор DeLinks
144
Сообщения: 4524
Зарегистрирован: 22.06.02
Откуда: Киев, Украина
Сообщение Добавлено: 27 Август 2004, 10:27:35 
@TSV, Серёга, по-моему то что мне нужно. Вечером дома проверю. Вери сенкс. :)
des, Crazy, в том то и дело, что изначально на файл-шаблон приходят по ссылке "portfolio.php".Соответственно никакой переменной нет. Но при этом, нужно что бы в шаблон вставлялся файлик с начальной инфой и объяснениями что к чему.

_________________
Элитный швейцарский портфель Scona Graphics
Вот так они и жили: она рыбу ловила — он её жарил.
@TSV
постоянный участник
11
Сообщения: 4736
Зарегистрирован: 08.05.03
Сообщение Добавлено: 27 Август 2004, 10:29:11 
Nikolai Kolesnik,
icq 282661784, если нада. :)
Nikolai Kolesnik Муж.
Куратор DeLinks
144
Сообщения: 4524
Зарегистрирован: 22.06.02
Откуда: Киев, Украина
Сообщение Добавлено: 27 Август 2004, 10:31:47 
@TSV, ок. чувствую, скоро постучусь :)

_________________
Элитный швейцарский портфель Scona Graphics
Вот так они и жили: она рыбу ловила — он её жарил.
des
соучастник
0
Сообщения: 407
Зарегистрирован: 14.04.03
Откуда: 40км от Москвы
Сообщение Добавлено: 27 Август 2004, 12:41:14 
CutCopyPaste, варнингов с empty не бывает
эта функция работает как и isset, только ещё плюс проверяет на пустоту, на ноль если цифра, на "" если строка и на null если что-то там ещё

_________________
всё таково, каково оно есть, и больше никаково
Nikolai Kolesnik Муж.
Куратор DeLinks
144
Сообщения: 4524
Зарегистрирован: 22.06.02
Откуда: Киев, Украина
Сообщение Добавлено: 28 Август 2004, 16:15:04 
Использовал вариант, предложенный Серёгой — всё работает.
Всем спасибо за помощь! Будете в Киеве, с меня пиво. :beer:

_________________
Элитный швейцарский портфель Scona Graphics
Вот так они и жили: она рыбу ловила — он её жарил.
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 18 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100