PDA

View Full Version : سوال: ایجاد لینک های مولتی مثل وردپرس



tem988
چهارشنبه 13 اسفند 1393, 20:53 عصر
سلام
دوستان اگر توی وردپرس دیده باشید موضوعات به صورت مولتی هست مثلا به این صورت

-cat
--cat2
---cat3
-cat4
--cat5
-cat6

و لینک هاشون به این صورته


cat
cat/cat2
cat/cat2/cat3
cat4
cat4/cat5
cat6

کدی که نوشتم موضوعات مولتی رو ایجاد کردم ولی لینک های مولتی رو نتونستم دوستان اگر کسی بلده لطفا همین کد رو لینک هاشو درست کنه

کدی که نوشتم


$arrays = unserialize('a:7:{i:1;a:3:{s:2:"id";s:1:"1";s:4:"name";s:8:"Document";s:6:"par_id";s:1:"0";}i:2;a:3:{s:2:"id";s:1:"2";s:4:"name";s:7:"image_1";s:6:"par_id";s:1:"1";}i:7;a:3:{s:2:"id";s:1:"7";s:4:"name";s:7:"image_2";s:6:"par_id";s:1:"1";}i:8;a:3:{s:2:"id";s:1:"8";s:4:"name";s:7:"image_2";s:6:"par_id";s:1:"2";}i:4;a:3:{s:2:"id";s:1:"4";s:4:"name";s:5:"Music";s:6:"par_id";s:1:"0";}i:5;a:3:{s:2:"id";s:1:"5";s:4:"name";s:7:"Music_1";s:6:"par_id";s:1:"4";}i:6;a:3:{s:2:"id";s:1:"6";s:4:"name";s:7:"Music_2";s:6:"par_id";s:1:"4";}}');

/*
echo "<pre>";
print_r($arrays);
echo "</pre>";
*/

function buildTreess(array &$elements, $parentId = 0) {

$branch = array();

foreach ($elements as &$element) {

if ($element['par_id'] == $parentId) {
$children = buildTreess($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[$element['id']] = $element;
unset($element);
}
}
return $branch;
}


function menu($arr)
{
global $Create_Array;
echo "<ul>";
foreach ($arr as $val) {

if (!empty($val['children'])) {
echo "<li><a href='?dir=".$val['name']."'>" . $val['name']."</a>";
menu($val['children']);
echo "</li>";
} else {
echo "<li><a href='?dir=".$val['name']."'>" . $val['name'] . "</a></li>";
}
}
echo "</ul>";
}

$tree = buildTreess( $arrays , 0);
echo menu($tree);

خروجی که ایجاد میکنه


<ul>
<li><a href='?dir=Document'>Document</a>
<ul>
<li><a href='?dir=image_1'>image_1</a>
<ul>
<li><a href='?dir=image_2'>image_2</a></li>
</ul>
</li>
<li><a href='?dir=image_2'>image_2</a></li>
</ul>
</li>
<li><a href='?dir=Music'>Music</a>
<ul>
<li><a href='?dir=Music_1'>Music_1</a></li>
<li><a href='?dir=Music_2'>Music_2</a></li>
</ul>
</li>
</ul>

به طور مثال الان باید لینک دوم به این صورت باشه


?dir=Document/image_1

...

prans.info
پنج شنبه 14 اسفند 1393, 00:36 صبح
سلام
در حال حاضر در همین حد تونستم درست کنم :


<?php
$arrays = unserialize('a:8:{i:1;a:3:{s:2:"id";s:1:"1";s:4:"name";s:8:"Document";s:6:"par_id";s:1:"0";}i:2;a:3:{s:2:"id";s:1:"2";s:4:"name";s:7:"image_1";s:6:"par_id";s:1:"1";}i:7;a:3:{s:2:"id";s:1:"7";s:4:"name";s:7:"image_2";s:6:"par_id";s:1:"1";}i:8;a:3:{s:2:"id";s:1:"8";s:4:"name";s:7:"image_2";s:6:"par_id";s:1:"2";}i:9;a:3:{s:2:"id";s:1:"9";s:4:"name";s:7:"image_3";s:6:"par_id";s:1:"2";}i:4;a:3:{s:2:"id";s:1:"4";s:4:"name";s:5:"Music";s:6:"par_id";s:1:"0";}i:5;a:3:{s:2:"id";s:1:"5";s:4:"name";s:7:"Music_1";s:6:"par_id";s:1:"4";}i:6;a:3:{s:2:"id";s:1:"6";s:4:"name";s:7:"Music_2";s:6:"par_id";s:1:"4";}}');
function buildTreess(array &$elements, $parentId = 0) {
$branch = array();
foreach ($elements as &$element) {
if ($element['par_id'] == $parentId) {
$children = buildTreess($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[$element['id']] = $element;
unset($element);
}
}
return $branch;
}
function menu($arr,$unset=true){
global $Create_Array,$dir;
static $url,$num;
echo '<ul>';
foreach ($arr as $val) {
if (!empty($val['children'])){
if($num){
$url = mb_substr ($url,0,-(mb_strlen(end (explode ('/',$url)),'UTF-8')),'UTF-8');
$num = 0;
}
$url .= $val ['name'].'/';
echo '<li><a href="?dir='.$url.'">' . $val['name'].'</a>';
menu($val['children'],false);
echo '</li>';
}else{
echo '<li><a href="?dir='.$url.$val ['name'].'">' . $val['name'] . '</a></li>';
$num = 1;
}
if($unset){
$url = '';
}
}
echo '</ul>';
}
$tree = buildTreess( $arrays , 0);
echo menu($tree);

prans.info
پنج شنبه 14 اسفند 1393, 02:45 صبح
سلام مجدد
کاملا perfect (البته از لحاظ کارایی ، بهینه تر هم میشه نوشت ...) :


<?php
$arrays = unserialize('a:8:{i:1;a:3:{s:2:"id";s:1:"1";s:4:"name";s:8:"Document";s:6:"par_id";s:1:"0";}i:2;a:3:{s:2:"id";s:1:"2";s:4:"name";s:7:"image_1";s:6:"par_id";s:1:"1";}i:7;a:3:{s:2:"id";s:1:"7";s:4:"name";s:7:"image_2";s:6:"par_id";s:1:"1";}i:8;a:3:{s:2:"id";s:1:"8";s:4:"name";s:7:"image_2";s:6:"par_id";s:1:"2";}i:9;a:3:{s:2:"id";s:1:"9";s:4:"name";s:7:"image_3";s:6:"par_id";s:1:"2";}i:4;a:3:{s:2:"id";s:1:"4";s:4:"name";s:5:"Music";s:6:"par_id";s:1:"0";}i:5;a:3:{s:2:"id";s:1:"5";s:4:"name";s:7:"Music_1";s:6:"par_id";s:1:"4";}i:6;a:3:{s:2:"id";s:1:"6";s:4:"name";s:7:"Music_2";s:6:"par_id";s:1:"4";}}');
function mother ($array,$mother = 0){
foreach ($array as $a){
if($a ['par_id']!=$mother){
unset ($array [$a ['id']]);
}
}
return $array;
}
$mother = mother ($arrays);
foreach ($mother as $array){
$url ['0'] = $array ['name'].'/';
$arrays [$array ['id']]['url'] = $url['0'];
$mother2 = mother ($arrays,$array ['id']);
foreach ($mother2 as $array2){
$url ['1'] = $url ['0'] .$array2 ['name'].'/';
$arrays [$array2 ['id']]['url'] = $url ['1'];
$mother3 = mother ($arrays,$array2 ['id']);
foreach ($mother3 as $array3){
$url ['2'] = $url ['1'] .$array3 ['name'].'/';
$arrays [$array3 ['id']]['url'] = $url ['2'];
}

}
unset ($url);
}
function prans (array &$elements, $mother = 0) {
$branch = array();
foreach ($elements as &$element) {
if ($element['par_id'] == $mother) {
$children = prans ($elements, $element['id']);
if ($children) {
$element ['children'] = $children;
}
$branch[$element['id']] = $element;
unset($element);
}
}
return $branch;
}
function menu($arr){
global $Create_Array,$dir;
echo '<ul>';
foreach ($arr as $val) {
if (!empty($val['children'])){
$url .= $val ['name'].'/';
echo '<li><a href="?dir='.$val ['url'] .'">' . $val['name'].'</a>';
menu($val['children']);
echo '</li>';
}else{
echo '<li><a href="?dir='.$val ['url'].'">' . $val['name'] . '</a></li>';
}
}
echo '</ul>';
}
$tree = prans ($arrays, 0);
echo menu($tree);