Позиция из файла модуля.
1.
Жека (21.05.2015 / 17:33)
Доброго, давно маюсь пыхом, но на базе, тут у меня загвоздка как можно от сортировать выводимую массу на странице если в файле module.ini стоит переменная sort = 1; в других файлах с таким же названием стоит 2,3,4,5.. и т.д, в общем нужно выводить по сортировке первая 1 а ниже уже по порядку
Вот код что выводит
$modules = scandir(ROOT.'/modules');
foreach($modules as $module)
{
if($module != '.' && $module != '..')
{
$module1 = parse_ini_file(ROOT.'/modules/'.$module.'/module.ini');
if($module1['open'] == 1 && $module1['location'] == 0 сюда позицию)
{
бла бла бла
}
}
}
переменная
$module1['sort']
2.
shilo (21.05.2015 / 17:54)
Нууу... в массив заноси
$index[$module1[$sort]]=$module;
И сортируй по ключу, ksort() вроде. Значением элемента массива будет папка
3.
Жека (21.05.2015 / 18:19)
2.
shilo, я скорее всего очепятался, не сортировка а позиция
4.
shilo (21.05.2015 / 19:08)
3.
CoMMoN, не понимаю задачи... что значит позиция? номер строки в ini файле?
Опиши вообще всю задачу
5.
Жека (21.05.2015 / 20:13)
4.
shilo, кароче в каждом ini файле есть строка сорт = 1 сорт = 2 сорт = 3
http://shot.qip.ru/00FCBw-6l0Ojp5qV/ упорядочить при сорт нужно
6.
Вантуз-мен (21.05.2015 / 20:46)
5.
CoMMoN, ну вроде все правильно тебе shilo подсказал сойдай временный массив с ключами sort и отсортируй его
7.
Вантуз-мен (21.05.2015 / 20:57)
<?php
$modules = scandir(ROOT.'/modules');
$prepare_array = [];
foreach($modules as $module)
{
if($module != '.' && $module != '..')
{
$module1 = parse_ini_file(ROOT.'/modules/'.$module.'/module.ini');
if($module1['open'] == 1 && $module1['location'] == 0)
{
$prepare_array[$module1['sort']][] = бла бла бла;
}
}
}
ksort($prepare_array);
foreach ($prepare_array as $key => $value) {
тут вывод
}
8.
Жека (21.05.2015 / 21:59)
7.
Vantuz, полный код выгядит так
<?php
$modules = scandir(ROOT.'/modules');
foreach($modules as $module)
{
if($module != '.' && $module != '..' && $module != 'other' && $module != 'panel' && $module != 'pages' && $module !='.htaccess' && $module != 'index.php')
{
$_module = parse_ini_file(ROOT.'/modules/'.$module.'/module.ini');
if($_module['open'] == 1 && $_module['location'] == 0 && $_module['sort'] == 1)
{
if(file_exists(ROOT.'/modules/'.strtolower($module).'/images/icon.png'))
$img = '<img src="/'.strtolower($module).'/images/icon.png" alt="'.strtolower($module).'" />';
else
$img = img(strtolower($module).'.png');
echo '<div class="row"><a href="/'.$module.'">'.$img.' '.ucfirst(strtolower($_module['name'])).' '.(isset($_module['counter']) && $_module['counter'] == 'true' ? include_once(ROOT.'/modules/'.$module.'/_counter.php') : null).'</a> </div>';
(isset($_module['widget']) && $_module['widget'] == 'true' ? include_once(ROOT.'/modules/'.$module.'/_widget.php') : null);
}
}
}
?>
с ем что предложил ты мне придется сори по мучаться, есть другой вариант? мне нужно именно ПОЗИЦИОНИРОВАНИЕ делать позицию модулей
9.
Кевин Митник (21.05.2015 / 22:18)
можно подключить все модули, предварительно вывод каждого собрав в буфер, прочитать его положение, добавить в ключ его местоположение, в массив с таким ключем добавить вывод самого модуля и в цикле прогнать вывод
10.
ramzes (21.05.2015 / 23:27)
Кевин Митник_HHTeam (21 Мая 2015 / 22:18)
можно подключить все модули, предварительно вывод каждого собрав в буфер, прочитать его положение, добавить в ключ его местоположение, в массив с таким ключем добавить вывод самого модуля и в цикле прогнать вывод
самое логичное, и кеширование прилепить, что бы не читать каждый раз гору файлов
11.
Жека (22.05.2015 / 00:26)
10.
ramzes, 9.
Кевин Митник_HHTeam, я это в курсе а более подробно как?
12.
ramzes (22.05.2015 / 15:51)
Один раз прочитай позиции файлов, сохрани в отдельный файл, обновляй его при изменении параметров (если у какого то модуля позиция сменилась)
И выводи их циклом из этого файла.
или тебе готовый код нужен?
URL:
https://visavi.net/topics/42356