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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Линковка страниц

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Методы
Andrey65
Отправлено: 19 Января, 2011 - 00:27:16
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Какой способ перехода по страницам наиболее оптимален в меню. С использованием переключения страниц при помощи 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 Сильно не ругайтесь если я что-то не так написал или неправильно понял, просто хочу выбрать наиболее оптимальный вариант для постоянного использования и прислушаться к знающим кодерам!
 
 Top
OrmaJever Модератор
Отправлено: 19 Января, 2011 - 00:50:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Не понял А почему нельзя создать простые сылки без воттакого кода?
Andrey65 пишет:
Пока я нашел только 1 минус это добавление ссылок вручную

А про скорость работы подумали? Первый раз вижу чтобы простые сылки так усложняли А?!


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Andrey65
Отправлено: 19 Января, 2011 - 01:15:37
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Почему усложнили? Происходит генерация менюшки автоматом, а через админку добавляешь, редактируешь. Может пример посмотрите и подскажите, а то вдруг в неправильном направлении двигаюсь?
Скачать файл: www.rar
Скачан раз: 127
 
 Top
OrmaJever Модератор
Отправлено: 19 Января, 2011 - 01:39:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




ааа тоесть вы хотите как в блоге 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;

И в итоге получим сылки меню.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Andrey65
Отправлено: 19 Января, 2011 - 02:12:00
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




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



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




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;

даже прокоментировал


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Andrey65
Отправлено: 19 Января, 2011 - 17:06:22
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Все работает нормально. А почему Вы считаете что хранить меню удобней в menu.txt. И как сильно будет видна разница в скорости чем предложеной мной генерацией менюшки.
 
 Top
OrmaJever Модератор
Отправлено: 19 Января, 2011 - 21:51:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Ну если сравнивать с вашими примерами открыть один файл проще и быстрее чем сканировать папку и использовать регулярные выражения, а второй пример я вобще не понял.
Да редактировать и удалять тоже лутше. Открыл файл подредактировал и не нужно сильно заморачиватся + в моём примере можно называть сылки по своему а в вашем примере название будет братся из имени файла.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Andrey65
Отправлено: 19 Января, 2011 - 22:14:05
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Второй пример взят у ирбисов с MVC
А в моем случае в примере название берется из самого файла name1.php в котором считывается: <!--Name--> которое и показывает ссылка. Так же можно редактировать из админки: задавать <!--Вторая страница> и имя файла.php
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB