Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: подключение модуля ( дубль 2, упражённый вопрос :) )
 
 автор: Panker   (14.11.2006 в 11:09)   письмо автору
 
 

делаю свой шедевр потехоньку но как не мучался не копался где не могу понятЬ!

смотрите!

Есть папка plugins ( кстати если не так пишется поправте :) )

Допустим я ложу туда папку search КАК МНЕ СДЕЛАТЬ КАКОЙ СКРИПТ написать что бы в меню или где нить появилась ссылка на plugins/search/index.php автоматом?

Модули хочу присобачить что бы самму мона было делать (самому это юзеру :) )

а как не наю :(

   
 
 автор: Panker   (14.11.2006 в 12:04)   письмо автору
 
   для: Panker   (14.11.2006 в 11:09)
 

Вот ели подробней

моя навигация


<form>
<select NAME="java-navigator" onchange="index.location.href = this.options[this.selectedIndex].value;" size="1">
<option value="start.php">Гоавное меню</option>
тут главное меню которое в основе лежит и задаю я



<option value="start.php">Модульное меню</option>
а тут бы хотелось бы видить ссылки на модули.

</select>
</form>


модули как у же выше сказал лежат в папке плугинс в своей папке!
то есть мне надо как то автоматом определять все папки в папке плугинс и если есть папки давать адрес на index.php в папке модульс :(

   
 
 автор: AtomicBlast   (14.11.2006 в 12:46)
 
   для: Panker   (14.11.2006 в 12:04)
 

Могу сказать следующее: можно сгенерировать xml файл, куда прописывать url нужного модуля. Можно добавить еще и атрибут, куда прописывать название для вывода в меню, например. Потом распарсить эту эксемелину и вывести все это в том же меню.

<?xml version="1.0" encoding="windows-2151"?>
<modules>
    <module>
        <name>Super Search</name>
        <url>path-to-script</url>
    </module>
    <module>
        <name>Super Guestbook</name>
        <url>path-to-script</url>
    </module>
    <module>
        <name>Super Forum</name>
        <url>path-to-script</url>
    </module>
</modules>

   
 
 автор: elenaki   (14.11.2006 в 12:58)   письмо автору
 
   для: AtomicBlast   (14.11.2006 в 12:46)
 

упражённый вопрос - это что?

   
 
 автор: AtomicBlast   (14.11.2006 в 13:09)
 
   для: elenaki   (14.11.2006 в 12:58)
 

При подключении к.л. модуля в xml файл прописывается путь к скрипту или значения параметра GET запроса. Например, index.php?action=SuperSearch.
Данные парсятся из xml файла. При определенном url подключается определенный модуль, т.е. то, что прописано в xml файле.
Например, модуль называется Super Search. url модуля будет path-to-script
<a href="path-to-script">Super Search</a>
Или
<a href="index.php?action=path-to-script">Super Search</a>

   
 
 автор: AtomicBlast   (14.11.2006 в 13:11)
 
   для: AtomicBlast   (14.11.2006 в 13:09)
 

windows-1251 Так правилно будет :)

   
 
 автор: Panker   (14.11.2006 в 13:32)   письмо автору
 
   для: AtomicBlast   (14.11.2006 в 13:11)
 

хммм...

я думал ещё типа делаеш модуль, заходиш в админку добавляеш в базу строку чт обы создал в базе ссылку модуля1

типа модуль сделал
защёл в базу и в таблицу модулей записал ссылку на модулЬ!

было бы легко в меню выводить ссылки на модули и так далее )))
но факт в том что оно не само! :)

видимо незя сделать так что бы ПРОСТО положил папку в папку модулей и всё в меню появилась новая ссылка :)

   
 
 автор: Atomic Blast   (14.11.2006 в 14:17)   письмо автору
 
   для: Panker   (14.11.2006 в 13:32)
 

Хых... вот решение... примитивно, но... работает :)

<?
$handle 
opendir('modules/');
   while (
false !== ($file readdir($handle))) 
   { 
       if (
$file != "." && $file != ".."
      { 
                    echo 
'<a href="http://mysite.ru/modules/'.$file.'">'.$file.'</a><br>'
       } 
   }
closedir($handle);
?>

   
 
 автор: NIK   (14.11.2006 в 15:01)   письмо автору
 
   для: Atomic Blast   (14.11.2006 в 14:17)
 

это уже проще, чем с XML морочиться :) только как я понял, там архитектура такая, что каждый модуль находится в своей папке.. то есть plugins/module/index.php - и тогда потребуется сканить не фалы, а папки


<form>
<select NAME="java-navigator" onchange="index.location.href = this.options[this.selectedIndex].value;" size="1">
<option value="start.php">fafasfafaf</option>
fasfasfaf
<?php

$handle 
opendir('modules');
   while (
false !== ($module readdir($handle)))
   {
       if (
is_dir($module) AND $module != "." AND $module != "..")
      {
                    echo 
"<option value='plugins/$module/index.php'> $module";
       }
   }
closedir($handle);

?>

</select>
</form>


только вот в меню будет выводиться название папки с модулем, то есть как папку назовёшь то и выйдет.. не очень красиво...

PS: обработчик формы не работает в Firefox

   
 
 автор: Atomic Blast   (14.11.2006 в 15:05)   письмо автору
 
   для: NIK   (14.11.2006 в 15:01)
 

>только вот в меню будет выводиться название папки с модулем, то есть как папку назовёшь то и выйдет.. не очень красиво...
>

Вот потому я и предложил идею с xml. Можно и MySql для этого использовать, но юзать xml для подобных целей мне больше нравится.

   
 
 автор: Panker   (14.11.2006 в 15:34)   письмо автору
 
   для: Atomic Blast   (14.11.2006 в 15:05)
 

<form>
<select NAME="java-navigator" onchange="index.location.href = this.options[this.selectedIndex].value;" size="1">
<?php

$handle = opendir('modules');
while (false !== ($module = readdir($handle)))
{
if (is_dir($module) AND $module != "." AND $module != "..")
{
echo "<option value='../plugins/$module/index.php'>$module";
}
}
closedir($handle);

?>

</select>
</form>

чёта вааааше ноль :(э
не показывается не чего не в фаер фоксе не в любом другом браузере :)

   
 
 автор: Atomic Blast   (14.11.2006 в 16:45)   письмо автору
 
   для: Panker   (14.11.2006 в 15:34)
 

Конечно работать не будет. Обрати внимание на is_dir($module). Здесь надо полный путь прописать. Т.е.

$mods = 'modules'.$module;

   
 
 автор: Panker   (14.11.2006 в 17:23)   письмо автору
 
   для: Atomic Blast   (14.11.2006 в 16:45)
 

чё то не догоняю :(


<?php
$handle 
opendir('../');
   while (
false !== ($module readdir($handle)))
   {
       if (
is_dir($module) AND $module != "." AND $module != "plugins/")
      {
                    echo 
"<option value='$module/index.php'>$module";
       }
   }
closedir($handle);
?>


не понимаю какие пути нужны блин :( что то странно :(

   
 
 автор: Atomic Blast   (14.11.2006 в 18:38)   письмо автору
 
   для: Panker   (14.11.2006 в 17:23)
 


<?php 
$path 
'.';
$array scandir($path);
foreach(
$array as $ar)
{
    
$newPath $path.'/'.$ar;
    if(
$ar != "." && $ar != "..")
    {
        if(
is_dir($newPath))
        {
            echo 
'<a href="'.$newPath.'">'.$newPath.'</a><br>';
        }
    }
}
?> 

   
 
 автор: NIK   (14.11.2006 в 19:59)   письмо автору
 
   для: Atomic Blast   (14.11.2006 в 16:45)
 

точно :) заленился проверить.. >_<

   
 
 автор: Panker   (14.11.2006 в 21:17)   письмо автору
 
   для: NIK   (14.11.2006 в 19:59)
 

опять не понимаю1

я пишу этот код в файл админки!

то есть по отношениию к админке папка плугинов находится ../plugins/ тут папки с модулями!

я пишу так


<?php 
$path 
'../plugins';
$array scandir($path);
foreach(
$array as $ar)
{
    
$newPath $path.'/'.$ar;
    if(
$ar != "." && $ar != "")
    {
        if(
is_dir($newPath))
        {
            echo 
'<a href="'.$newPath.'">'.$newPath.'</a><br>';
        }
    }
}
?>  


а мне в ответ Fatal error: Call to undefined function: scandir() in z:\home\newcms\www\admin\admin.php on line 26

как не менял ту переменую что сканится одна фигня :(

   
 
 автор: Atomic Blast   (14.11.2006 в 23:36)   письмо автору
 
   для: Panker   (14.11.2006 в 21:17)
 

Тут, кажется, дело не в директориях. У тебя, скорее всего, само php не так скомпилировано.

   
 
 автор: Panker   (15.11.2006 в 11:53)   письмо автору
 
   для: Atomic Blast   (14.11.2006 в 23:36)
 

А что именно может быть не так?
так как я много раз переделывал этот денвер у меня он навернео метров 100 уже весит от всякого Г :)
Не могли бы подсказат ьчто подправить? или это смертельно ? :)

   
 
 автор: Atomic Blast   (15.11.2006 в 12:23)   письмо автору
 
   для: Panker   (15.11.2006 в 11:53)
 

Я денвером не пользуюсь. Устанавливаю все то, что есть под винду. Другие функции работают нормально?

   
 
 автор: Panker   (15.11.2006 в 14:33)   письмо автору
 
   для: Atomic Blast   (15.11.2006 в 12:23)
 

да вроде бы жалоб не было! всё работало и работает :(

   
 
 автор: Atomic Blast   (15.11.2006 в 16:15)   письмо автору
 
   для: Panker   (15.11.2006 в 14:33)
 

Очень странно... Fatal error: Call to undefined function: scandir() in z:\home\newcms\www\admin\admin.php on line 26

   
 
 автор: Trianon   (15.11.2006 в 16:19)   письмо автору
 
   для: Atomic Blast   (15.11.2006 в 16:15)
 

Реализована начиная с PHP 5

   
 
 автор: Atomic Blast   (15.11.2006 в 16:22)   письмо автору
 
   для: Trianon   (15.11.2006 в 16:19)
 

Тогда, конечно, понятно почему ругань матная.

   
 
 автор: Panker   (15.11.2006 в 18:18)   письмо автору
 
   для: Atomic Blast   (15.11.2006 в 16:22)
 

я смотрю всем тут всё понятно кроме меня валенка :))
что мне делать то ? :)

   
 
 автор: Atomic Blast   (15.11.2006 в 19:37)   письмо автору
 
   для: Panker   (15.11.2006 в 18:18)
 

Или php переустанавливать, или не использовать функцию scandir.

   
 
 автор: Panker   (17.11.2006 в 12:10)   письмо автору
 
   для: Atomic Blast   (15.11.2006 в 19:37)
 

хммм ну как то же можно её устоновить ? :(
скачал последнию версию ДЕНВЕРА и всё равно таже ошибка
или скан дир тока в 5 версии пхп ?
а как тогда в 4ой делали ? :)

   
 
 автор: Panker   (20.11.2006 в 09:35)   письмо автору
 
   для: Panker   (17.11.2006 в 12:10)
 

Так вот например ПХП НУКЕ!
он же вышл давно и у него сразу же был модуль модулей!

у него суешь папку в папку модулей и на странице главной рисунок с ссылкой на модуль

мне бы как нить делать что бы была просто ссылка на главную страницу модуля

   
 
 автор: Panker   (20.11.2006 в 12:21)   письмо автору
 
   для: Panker   (20.11.2006 в 09:35)
 

хммм чеопс прошёл мимо :))))

   
 
 автор: Trianon   (20.11.2006 в 13:31)   письмо автору
 
   для: Panker   (17.11.2006 в 12:10)
 

>а как тогда в 4ой делали ? :)

с помощью opendir() и readdir()
http://php.net/opendir

   
 
 автор: Panker   (20.11.2006 в 20:53)   письмо автору
 
   для: Trianon   (20.11.2006 в 13:31)
 

вот класс, сделал!


<?php
if ($handle opendir('../user_plugins/')) {
   while (
false !== ($file readdir($handle))) {
       if (
$file != "." && $file != "..") {
       echo 
"<li style='border-left-width: 1px; border-right-width: 1px; border-top-width: 1px; border-bottom-style: dotted; border-bottom-width: 3px' type='circle'><br><a target=index href=../user_plugins/$file/index.php>$file</a></li>";
       }
   }
   
closedir($handle);
}
?> 


сделал то что мне надо!

А теперь ТУЛУЛАААА самое сложное :)

Возможно ли теперь открывать ВСЕ файлы index.php во всех найденых папках и читать первую строку котоаря будет типа modules.gif что бы я брал её и выводил не просто ссылку но и картинку модуля ? :))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования