Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Линковка страниц
Форумы портала PHP.SU » PHP » Программирование на PHP » Линковка страниц

Страниц (1): [1]
 

1. Andrey65 - 19 Января, 2011 - 00:27:16 - перейти к сообщению
Какой способ перехода по страницам наиболее оптимален в меню. С использованием переключения страниц при помощи swich или же генерацией ссылок меню следующего типа


<?php
/**
* Генератор менюшки =)
*/
//начинаем...
$i = 0;
//открываем папку с контентом
$handle = opendir ('content/');
//считываем в цикле названия файлов
while($file = readdir($handle)){
//отсекаем ненужные нам файлы и ссылки на директории
if ($file != '.' && $file != '..' && $file != 'default.php'){
//считываем первые 50 символов из файла
$buffer = file_get_contents('content/'.$file);
//с помощью регулярного выражения извлекаем название для меню
preg_match('/<!--(.*)-->/',$buffer,$name);//
//формируем массив названий файлов без расширения .php
$func[$i] = substr($file, 0, -4);
//выводим ссылки меню
echo " <a href='index.php?p=$func[$i]'>$name[1]</a> ";

$i++;
}

}
closedir($handle);//закрываем директорию




А вот и пример switch c использованием буфферизации

<?php


ob_start();
$page = 'main';
/**
* Подключаем меню
* Includes the menu
*/
include './skins/tpl/menu.tpl';

/**
* The switch of modules
* Переключатель страниц
*/
switch($page)
{
/**
* Подключаем модуль приветствия
* Includes the greeting module
*/
case 'main':
include './modules/main/index.php';
include './skins/tpl/main/show.tpl';
break;
/**
* Подключаем модуль второй страницы
* Includes the module of the second page
*/
case 'second':
include './modules/second/index.php';
include './skins/tpl/second/show.tpl';
break;
/**
* Подключаем модуль приветствия по умолчанию
* Includes the greeting module
*/
default:
include './modules/main/index.php';
include './skins/tpl/main/show.tpl';
break;
}

$content = ob_get_contents();
ob_end_clean();



?>

Пока я нашел только 1 минус это добавление ссылок вручную, а так все на ура. Или же это пятое колесо? Может еще есть какие-нибудь способы постраничной навигации?
PS Сильно не ругайтесь если я что-то не так написал или неправильно понял, просто хочу выбрать наиболее оптимальный вариант для постоянного использования и прислушаться к знающим кодерам!
2. OrmaJever - 19 Января, 2011 - 00:50:51 - перейти к сообщению
Не понял А почему нельзя создать простые сылки без воттакого кода?
Andrey65 пишет:
Пока я нашел только 1 минус это добавление ссылок вручную

А про скорость работы подумали? Первый раз вижу чтобы простые сылки так усложняли А?!
3. Andrey65 - 19 Января, 2011 - 01:15:37 - перейти к сообщению
Почему усложнили? Происходит генерация менюшки автоматом, а через админку добавляешь, редактируешь. Может пример посмотрите и подскажите, а то вдруг в неправильном направлении двигаюсь?
4. OrmaJever - 19 Января, 2011 - 01:39:44 - перейти к сообщению
ааа тоесть вы хотите как в блоге wp? Вадминке добавляешь страницу и она появляется в меню? Ну тогда лутше при добавлении страницы в админке записывать сылку в файл с новой строки.
Например:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. /page1 | Главная
  3. /page2 | О сайте
  4. /page3 | Что нибудь

А затем открыть этот файл и зделать из него меню.
PHP:
скопировать код в буфер обмена
  1. $x = file('filename.txt');
  2. $menu = '';
  3. foreach($x as $val)
  4. {
  5.         list($link, $value) = explode('|' $val);
  6.         $menu .= '<a href="'.$link.'">'.$value.'</a>'; 
  7. }
  8. echo $menu;

И в итоге получим сылки меню.
5. Andrey65 - 19 Января, 2011 - 02:12:00 - перейти к сообщению
Честно говоря для меня это сложновато. На сколько я понял мы создали filename.txt с названиями ссылок на каждой строке. Потом index.php с вашим содержимым где читаем и формируем с его содержимое в меню. Верно?
выскакивает Parse error: syntax error, unexpected T_VARIABLE in Z:\home\test1.ru\www\index.php on line 5
6. OrmaJever - 19 Января, 2011 - 12:50:40 - перейти к сообщению
Andrey65 пишет:
выскакивает Parse error: syntax error, unexpected T_VARIABLE in Z:\home\test1.ru\www\index.php on line 5

ой не поставил запятую после '|'
А так поняли всё верно
создаём файл menu.txt (например) и в нем бедут сылки меню и их название.
Затем в индексе или в других файлах делаем меню
PHP:
скопировать код в буфер обмена
  1. $x = file('filename.txt'); // записываем каждую строку файла в масив $x
  2. $menu = ''; // создаём переменую
  3. foreach($x as $val) // этот цыкл перебирает масив $x и записывает каждое новое значение в $val
  4. {
  5.         list($link, $value) = explode('|' $val); // делим строку по '|' и записываем в 2 переменые
  6.         $menu .= '<a href="'.$link.'">'.$value.'</a>'; // дописываем каждую новую сылку меню в переменую $menu  
  7. }
  8. echo $menu;

даже прокоментировал
7. Andrey65 - 19 Января, 2011 - 17:06:22 - перейти к сообщению
Все работает нормально. А почему Вы считаете что хранить меню удобней в menu.txt. И как сильно будет видна разница в скорости чем предложеной мной генерацией менюшки.
8. OrmaJever - 19 Января, 2011 - 21:51:25 - перейти к сообщению
Ну если сравнивать с вашими примерами открыть один файл проще и быстрее чем сканировать папку и использовать регулярные выражения, а второй пример я вобще не понял.
Да редактировать и удалять тоже лутше. Открыл файл подредактировал и не нужно сильно заморачиватся + в моём примере можно называть сылки по своему а в вашем примере название будет братся из имени файла.
9. Andrey65 - 19 Января, 2011 - 22:14:05 - перейти к сообщению
Второй пример взят у ирбисов с MVC
А в моем случае в примере название берется из самого файла name1.php в котором считывается: <!--Name--> которое и показывает ссылка. Так же можно редактировать из админки: задавать <!--Вторая страница> и имя файла.php

 

Powered by ExBB FM 1.0 RC1