PDA

View Full Version : این کد رو بهتر و خلاصه تر هم میشه نوشت؟!



alifallah
جمعه 14 فروردین 1394, 00:34 صبح
سلام، من این تابع رو برای لیست کردن موضوعات با قالب بوت استرپ تو ساید بار نوشتم، میخوام ببینم میشه اینو بهتر و خلاصه تر نوشت؟! هم از لحاظ تراکم کد و هم اینکه تو کوئری ها بهینه باشه، ممنون میشم راهنمایی کنید.



function GetSidebarCatsMenu(){
$allcats = GetVar('AllCats');
if(!$allcats) return '<p align="center">هیچ گرو بندی برای کالاها لحاظ نشده است</p>';
$html = '<ul class="nav nav-pills nav-stacked pd_mg_free">';
foreach($allcats as $allcat){
$subcats = Select('*', 'products_cats', 'parent_id="'.$allcat->id.'"', 'id ASC');
if($subcats){
$catsarray = array();
foreach($subcats as $arr){ $catsarray[] = $arr->id; }
if(in_array(GetVar('SelectedCat'), $catsarray)){
$html .= '<li role="presentation" class="dropdown active">';
}else{
$html .= '<li role="presentation" class="dropdown">';
}
$html .= '<a href="'.SiteUrl('search.php?catid='.$allcat->id).'" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">'.$allcat->name.' <span class="caret pull-left" style="margin-top:5px;"></span></a>';
$html .= '<ul class="dropdown-menu" role="menu">';
foreach($subcats as $subcat){
if(GetVar('SelectedCat') == $subcat->id){
$html .= '<li role="presentation" class="active">';
}else{
$html .= '<li role="presentation">';
}
$html .= '<a href="'.SiteUrl('search.php?catid='.$subcat->id).'" role="menuitem" style="text-align: right; font-size: 11px;">'.$subcat->name.'</a>';
$html .= '</li>';
}
$html .= '</ul>';
$html .= '</li>';
}else{
if(GetVar('SelectedCat') == $allcat->id){
$html .= '<li class="active">';
}else{
$html .= '<li>';
}
$html .= '<a href="'.SiteUrl('search.php?catid='.$allcat->id).'">'.$allcat->name.'</a>';
$html .= '</li>';
}
}
$html .= '</ul>';
return $html;
}

alifallah
جمعه 14 فروردین 1394, 19:24 عصر
واقعا از این 60 نفری که این تاپیک رو دیدن کسی راهی نداشت پیشنهاد بده؟!

MMSHFE
جمعه 14 فروردین 1394, 23:33 عصر
کد رو مرتب بگذارین. الان همش توی یه خطه. بگذارین ادیتور صفحه کامل لود بشه بعد ویرایش کنید.

alifallah
جمعه 14 فروردین 1394, 23:43 عصر
ممنون جناب شهرکی :)
چند بار ویرایش کردم و باز به همون صورت در یک خط نمایش داده می شد که مجبور شدم داخل تگ CODE بزارم
امیدوارم دیگه کسی پیدا بشه و کمک کنه

j_naroogha@yahoo.com
شنبه 15 فروردین 1394, 07:49 صبح
بهتر نیس که عناصر نمایش (تگ های html) رو جداگانه بنویسی ؟
منظورم اینه که کد سعی کنی تا حد امکان کدهای html رو به صورت دستی بنویسی...
اینطوری برنامه نویسای client راحتتر میتونن کار کنن.
مثل MVC.

MMSHFE
شنبه 15 فروردین 1394, 08:42 صبح
function GetSidebarCatsMenu()
{
if(!$allcats = GetVar('AllCats')) {
return '<p align="center">هیچ گرو بندی برای کالاها لحاظ نشده است</p>';
}
$html = '<ul class="nav nav-pills nav-stacked pd_mg_free">';
foreach($allcats as $allcat) {
if($subcats = Select('*', 'products_cats', 'parent_id="' . $allcat->id . '"', 'id ASC')) {
$catsarray = array();
foreach($subcats as $arr) {
$catsarray[] = $arr->id;
}
$html .= '<li role="presentation" class="dropdown' . (in_array(GetVar('SelectedCat'), $catsarray) ? ' active' : '') . '">';
$html .= '<a href="' . SiteUrl('search.php?catid=' . $allcat->id) . '" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">' . $allcat->name . ' <span class="caret pull-left" style="margin-top:5px;"></span></a>';
$html .= '<ul class="dropdown-menu" role="menu">';
foreach($subcats as $subcat) {
$html .= '<li role="presentation"' . (GetVar('SelectedCat') == $subcat->id ? ' class="active">' : '') . '>';
$html .= '<a href="' . SiteUrl('search.php?catid=' . $subcat->id) . '" role="menuitem" style="text-align: right; font-size: 11px;">' . $subcat->name . '</a>';
$html .= '</li>';
}
$html .= '</ul>';
$html .= '</li>';
}
else {
$html .= '<li' . (GetVar('SelectedCat') == $allcat->id . ' class="active"' : '') . '>';
$html .= '<a href="' . SiteUrl('search.php?catid=' . $allcat->id) . '">' . $allcat->name . '</a>';
$html .= '</li>';
}
}
$html .= '</ul>';
return $html;
}

alifallah
یک شنبه 16 فروردین 1394, 00:48 صبح
عالی بود استاد :)
یه سوال و جسارت خدمت شما، نمیشه به یه روشی با یک کوئری همه دسته ها رو گرفت و بعد با توابع آرایه زیرشاخه ها رو به هر دسته متصل کرد؟! نمیخوام به سرور فشار بساد! مثلا اینجا اگر 10 تا دسته داشته باشیم، حداقل 11 بار کوئری در هربار رفرش برای یه بخش کوچیک از سایت اجرا میشه

alifallah
یک شنبه 16 فروردین 1394, 00:50 صبح
بهتر نیس که عناصر نمایش (تگ های html) رو جداگانه بنویسی ؟
منظورم اینه که کد سعی کنی تا حد امکان کدهای html رو به صورت دستی بنویسی...
اینطوری برنامه نویسای client راحتتر میتونن کار کنن.
مثل MVC.
ممنون از اینکه پاسخ دادید، فکر خوبیه، انشاالله روش کار میکنم و کدها رو به view منقل میکنم :)

MMSHFE
یک شنبه 16 فروردین 1394, 08:46 صبح
ضمناً برای بهینه سازی بهتره از کش استفاده کنید.