|
Propozycja odchudzenia (optymalizacji) PHP-Fusion
|
| zer0 |
Dodany dnia 28.08.2009 02:29:22
|

Bywalec

Postów: 343 Pomógł: 1
Data rejestracji: 29.07.2004 23:20
|
Nie wiedzia?em w którym dziale za?o?y? ten temat, wi?c od razu przepraszam administracj?, ?e znajduje si? on w tym dziale. My?l?, ze temat mo?na uzna? jako 'propozycj?', gdy? tego co opisz?, brakuje PHP-Fusion od kilku lat.
Chodzi mi o wywalenie wszystkich tabelek, które s? w kodzie, lokalnych styli css, niepotrzebnych <br>anów i <strong>menów. Bardzo du?o osób mo?e sobie nie ?yczy? modyfikacji plików z uwagi na kolejne aktualizacje. Jednak?e chcia?bym zach?ci? ka?d? osob?, która zna si? na XHTML i CSS do takiego w?a?nie czynu. Nie jest to proste wyzwanie, lecz je?li chocia? jedna osoba odchudzi jeden plik, to w szybkim tempie zaoszcz?dzimy kilkadziesi?t kilobajtów - nie wspomn? ju? o optymalizacji pod kontem marketingowym, czy miesi?cznego transferu.
Plików tak?e nie jest wiele.. :)
Przed chwil? odchudzi?em plik news.php. Z 11Kb pomniejszy? si? do 10Kb. Przypu?cimy, ?e teraz mamy 500 ods?on dziennie, co daje nam 500Kb dziennej oszcz?dno?ci. Miesi?cznie mo?na doj?? do 15Mb, co np. dla osób maj?cych ??cze bezprzewodowe jest niezmiernie wa?ne. Poza tym, nie ma to jak wdzi?czno?? u?ytkowników, którym strona si? szybciej ?aduje.. :)
Wi?c tak wygl?da plik news.php:<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2008 Nick Jones
| http://www.php-fu...
+--------------------------------------------------------+
| Filename: news.php
| Author: Nick Jones (Digitanium)
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licen... Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
require_once "maincore.php";
require_once THEMES."templates/header.php";
// Predefined variables, do not edit these values
if ($settings['news_style'] == "1") { $i = 0; $rc = 0; $ncount = 1; $ncolumn = 1; $news_[0] = ""; $news_[1] = ""; $news_[2] = ""; } else { $i = 1; }
// Number of news displayed
$items_per_page = $settings['newsperpage'];
add_to_title($locale['global_200'].$locale['global_077']);
if (!isset($_GET['readmore']) || !isnum($_GET['readmore'])) {
$rows = dbcount("(news_id)", DB_NEWS, groupaccess('news_visibility')." AND (news_start='0'||news_start<=".time().") AND (news_end='0'||news_end>=".time().") AND news_draft='0'");
if (!isset($_GET['rowstart']) || !isnum($_GET['rowstart'])) { $_GET['rowstart'] = 0; }
if ($rows) {
$result = dbquery(
"SELECT tn.*, tc.*, user_id, user_name FROM ".DB_NEWS." tn
LEFT JOIN ".DB_USERS." tu ON tn.news_name=tu.user_id
LEFT JOIN ".DB_NEWS_CATS." tc ON tn.news_cat=tc.news_cat_id
WHERE ".groupaccess('news_visibility')." AND (news_start='0'||news_start<=".time().") AND (news_end='0'||news_end>=".time().") AND news_draft='0'
ORDER BY news_sticky DESC, news_datestamp DESC LIMIT ".$_GET['rowstart'].",$items_per_page"
);
$numrows = dbrows($result);
if ($settings['news_style'] == "1") { $nrows = round((dbrows($result) - 1) / 2); }
while ($data = dbarray($result)) {
$news_cat_image = "";
$news_subject = "<a name='news_".$data['news_id']."' id='news_".$data['news_id']."'></a>".stripslashes($data['news_subject']);
if ($data['news_cat_image']) {
$news_cat_image = "<a href='news_cats.php?cat_id=".$data['news_cat_id']."'><img src='".get_image("nc_".$data['news_cat_name'])."' alt='".$data['news_cat_name']."' class='news-category' /></a>";
} else {
$news_cat_image = "";
}
$news_news = $data['news_breaks'] == "y" ? nl2br(stripslashes($data['news_news'])) : stripslashes($data['news_news']);
if ($news_cat_image != "") $news_news = $news_cat_image.$news_news;
$news_info = array(
"news_id" => $data['news_id'],
"user_id" => $data['user_id'],
"user_name" => $data['user_name'],
"news_date" => $data['news_datestamp'],
"news_ext" => $data['news_extended'] ? "y" : "n",
"news_reads" => $data['news_reads'],
"news_comments" => dbcount("(comment_id)", DB_COMMENTS, "comment_type='N' AND comment_item_id='".$data['news_id']."'"),
"news_allow_comments" => $data['news_allow_comments']
);
if ($settings['news_style'] == "1") {
if ($rows <= 2 || $ncount == 1) {
$news_[0] .= "<h3 class='tbl2 bold'>".$news_subject."</h3>\n";
$news_[0] .= "<div class='tbl1 justify'>".$news_news."</div>\n";
$news_[0] .= "<div class='tbl2 center small2'>\n";
$news_[0] .= THEME_BULLET." <a href='profile.php?lookup=".$news_info['user_id']."'>".$news_info['user_name']."</a> ".$locale['global_071'].showdate("longdate", $news_info['news_date'])." ·\n";
if ($news_info['news_ext'] == "y" || $news_info['news_allow_comments']) {
$news_[0] .= $news_info['news_ext'] == "y" ? "<a href='".FUSION_SELF."?readmore=".$news_info['news_id']."'>".$locale['global_072']."</a> ·\n" : "";
$news_[0] .= $news_info['news_allow_comments'] ? "<a href='".FUSION_SELF."?readmore=".$news_info['news_id']."'>".$news_info['news_comments'].($news_info['news_comments'] == 1 ? $locale['global_073b'] : $locale['global_073'])."</a> ·\n" : "";
$news_[0] .= $news_info['news_reads'].$locale['global_074']." ·\n";
}
$news_[0] .= "<a href='print.php?type=N&item_id=".$news_info['news_id']."'><img src='".get_image("printer")."' alt='".$locale['global_075']."' class='news-img' /></a>";
if (checkrights("N")) { $news_[0] .= " · <a href='".ADMIN."news.php".$aidlink."&action=edit&news_id=".$news_info['news_id']."'><img src='".get_image("edit")."' alt='".$locale['global_076']."' title='".$locale['global_076']."' class='news-img' /></a></span>\n"; } else { $news_[0] .= "\n"; }
$news_[0] .= "</div>\n";
if ($ncount != $rows) { $news_[0] .= "<img src='".get_image("blank")."' alt='' />\n"; }
} else {
if ($i == $nrows && $ncolumn != 2) { $ncolumn = 2; $i = 0; }
$row_color = ($rc % 2 == 0 ? "tbl2" : "tbl1");
$news_[$ncolumn] .= "<h3 class='tbl2 news-sep bold'>".$news_subject."</h3>\n";
$news_[$ncolumn] .= "<div class='tbl1 news-sep justify'>".$news_news."</div>\n";
$news_[$ncolumn] .= "<div class='tbl2 news-sep center small2'>\n";
$news_[$ncolumn] .= "".THEME_BULLET." <a href='profile.php?lookup=".$news_info['user_id']."'>".$news_info['user_name']."</a> ".$locale['global_071'].showdate("longdate", $news_info['news_date']);
if ($news_info['news_ext'] == "y" || $news_info['news_allow_comments']) {
$news_[$ncolumn] .= "<br />\n";
$news_[$ncolumn] .= $news_info['news_ext'] == "y" ? "<a href='".FUSION_SELF."?readmore=".$news_info['news_id']."'>".$locale['global_072']."</a> ·\n" : "";
$news_[$ncolumn] .= $news_info['news_allow_comments'] ? "<a href='".FUSION_SELF."?readmore=".$news_info['news_id']."#comments'>".$news_info['news_comments'].($news_info['news_comments'] == 1 ? $locale['global_073b'] : $locale['global_073'])."</a> ·\n" : "";
$news_[$ncolumn] .= $news_info['news_reads'].$locale['global_074']." ·\n";
} else {
$news_[$ncolumn] .= " ·\n";
}
$news_[$ncolumn] .= "<a href='print.php?type=N&item_id=".$news_info['news_id']."'><img src='".get_image("printer")."' alt='".$locale['global_075']."' class='news-img' /></a>\n";
if (checkrights("N")) { $news_[$ncolumn] .= " · <a href='".ADMIN."news.php".$aidlink."&action=edit&news_id=".$news_info['news_id']."'><img src='".get_image("edit")."' alt='".$locale['global_076']."' title='".$locale['global_076']."' class='news-img' /></a></span>\n"; } else { $news_[$ncolumn] .= "\n"; }
$news_[$ncolumn] .= "</div>\n";
if ($ncolumn == 1 && $i < ($nrows - 1)) { $news_[$ncolumn] .= "<div class='br'><img src='".get_image("blank")."' alt='' /></div>\n"; }
if ($ncolumn == 2 && $i < (dbrows($result) - $nrows - 2)) { $news_[$ncolumn] .= "<div class='br'><img src='".get_image("blank")."' alt='' /></div>\n"; }
$i++; $rc++;
}
$ncount++;
} else {
echo "<!--news_prepost_".$i."-->\n";
$i++;
render_news($news_subject, $news_news, $news_info);
}
}
if ($settings['news_style'] == "1") {
opentable($locale['global_077']);
echo "<div class='news100'>";
echo "<div class='news100'>".$news_[0]."</div>";
echo "<div class='news49'>".$news_[1]."</div>";
echo "<div class='news49'>".$news_[2]."</div>";
echo "</div>";
closetable();
}
if ($rows > $items_per_page) echo "<div class='center'>\n".makepagenav($_GET['rowstart'],$items_per_page,$rows,3)."\n</div>\n";
} else {
opentable($locale['global_077']);
echo "<div class='error'>\n".$locale['global_078']."\n</div>\n";
closetable();
}
} else {
include INCLUDES."comments_include.php";
include INCLUDES."ratings_include.php";
$result = dbquery(
"SELECT tn.*, user_id, user_name FROM ".DB_NEWS." tn
LEFT JOIN ".DB_USERS." tu ON tn.news_name=tu.user_id
WHERE news_id='".$_GET['readmore']."' AND news_draft='0'"
);
if (dbrows($result)!=0) {
$data = dbarray($result);
if (checkgroup($data['news_visibility'])) {
$news_cat_image = "";
if (!isset($_POST['post_comment']) && !isset($_POST['post_rating'])) {
$result2 = dbquery("UPDATE ".DB_NEWS." SET news_reads=news_reads+1 WHERE news_id='".$_GET['readmore']."'");
$data['news_reads']++;
}
$news_subject = $data['news_subject'];
if ($data['news_cat']) {
$result2 = dbquery("SELECT * FROM ".DB_NEWS_CATS." WHERE news_cat_id='".$data['news_cat']."'");
if (dbrows($result2)) {
$data2 = dbarray($result2);
$news_cat_image = "<a href='news_cats.php?cat_id=".$data2['news_cat_id']."'><img src='".get_image("nc_".$data2['news_cat_name'])."' alt='".$data2['news_cat_name']."' class='news-category' /></a>";
}
}
$news_news = stripslashes($data['news_extended'] ? $data['news_extended'] : $data['news_news']);
if ($data['news_breaks'] == "y") { $news_news = nl2br($news_news); }
if ($news_cat_image != "") $news_news = $news_cat_image.$news_news;
$news_info = array(
"news_id" => $data['news_id'],
"user_id" => $data['user_id'],
"user_name" => $data['user_name'],
"news_date" => $data['news_datestamp'],
"news_ext" => "n",
"news_reads" => $data['news_reads'],
"news_comments" => dbcount("(comment_id)", DB_COMMENTS, "comment_type='N' AND comment_item_id='".$data['news_id']."'"),
"news_allow_comments" => $data['news_allow_comments']
);
add_to_title($locale['global_201'].$news_subject);
echo "<!--news_pre_readmore-->";
render_news($news_subject, $news_news, $news_info);
echo "<!--news_sub_readmore-->";
if ($data['news_allow_comments']) { showcomments("N", DB_NEWS, "news_id", $_GET['readmore'], FUSION_SELF."?readmore=".$_GET['readmore']); }
if ($data['news_allow_ratings']) { showratings("N", $_GET['readmore'], FUSION_SELF."?readmore=".$_GET['readmore']); }
} else {
redirect(FUSION_SELF);
}
} else {
redirect(FUSION_SELF);
}
}
require_once THEMES."templates/footer.php";
?>Kliknij i zaczekaj na załadowanie kodu ... + style CSS, które nale?y doda? do w?asnego arkusza:/* NEWS.PHP */
h1, h2, h3, h4, h5 {margin:0;}
.bold {font-weight:bold}
.justify {text-align:justify}
.center {text-align:center;}
.news49 {float:left;width:50%;}
.news100 {width:100%;margin:0 0 10px 0;}
.news-sep {margin:0 5px 0px 5px;}
.news-img {vertical-align:middle;border:0;}
.br {margin:0 0 10px 0;}
Kliknij i zaczekaj na załadowanie kodu ... Ró?nica w wygl?dzie jest niewielka i odwa?? si? twierdzi?, ?e nawet lepsza.. ;)
[EDIT] Je?li komu? nie rozci?gnie si? ramka przy dwukolumnowym uk?adzie newsów, tzn. ?e ma b??dy we w?asnym Theme. Nara?one s? na to skóry wykonane przez Max Toball, którego skóry (nie wiem jakim cudem) s? w paczkach PHP-Fusion.
No i co du wi?cej napisa?: od Was inni mog? nauczy? si? poprawnie kodowa? strony. Wtedy mo?e jako jedyny naród ze spo?eczno?ci PHP-Fusion b?dziemy pisali poprawnie. Tak jak poprawnie gramatycznie jest forum supportu PHP-Fusion.. :)
Zach?cam do optymalizacji!
Pozdro,
~ zer0
Edytowane przez zer0 dnia 28.08.2009 18:19:33
|
| |
|
|
| W?cibski Go?? |
Dodany dnia 26.10.2025 15:59:47
|
Pan Kontekstualny
Postów: n^x
Data rejestracji: Zawsze
|
|
| IP: localhost |
|
|
| bartek124 |
Dodany dnia 28.08.2009 14:41:32
|

Weteran

Postów: 3264 Pomógł: 236
v7.02.06 Data rejestracji: 26.05.2007 12:25
|
Przej?cie na divy by?oby dobrym krokiem, ale raczej nie teraz. Nadal wiele stron ma wszystko na tabelkach, wielu webmasterów nie pojmuje divów, s? z nimi k?opoty w ró?nych przegl?darkach no i jest z nimi du?o wi?cej pracy, a to raczej burzy ide? prostego CMS'a.
Ja wyjad? z optymalizacj? PHP. Owszem, du?e kroki w v7 nast?pi?y, ale nadal niektóre cz??ci nieciekawie wygl?daj?. Przyk?ad tak?e z news.php, linia 59:
"news_comments" => dbcount("(comment_id)", DB_COMMENTS, "comment_type='N' AND comment_item_id='".$data['news_id']."'"),
Jedena?cie newsów na stronie - jedena?cie dodatkowych zapyta?, bezsens.
Nie pomagam na komunikatorach oraz PW!
|
| |
|
|
| zer0 |
Dodany dnia 28.08.2009 15:21:51
|

Bywalec

Postów: 343 Pomógł: 1
Data rejestracji: 29.07.2004 23:20
|
bartek124 napisa?/a:
Przej?cie na divy by?oby dobrym krokiem, ale raczej nie teraz. Nadal wiele stron ma wszystko na tabelkach, wielu webmasterów nie pojmuje divów, s? z nimi k?opoty w ró?nych przegl?darkach no i jest z nimi du?o wi?cej pracy, a to raczej burzy ide? prostego CMS'a.
Nie wiem co rozumiesz poprzez "ide? prostego CMS'a"? :)
Subiektywna opinia:
Prosty CMS to taki, który jest zoptymalizowany. Zagl?daj?c w ?ród?o strony ju? wida? co jest od czego (je?li postawimy na DIV'ach). XHTML + CSS + DIV ma za zadanie przede wszystkim oddzielenie kodu od tre?ci, wi?c i CMS sta?by si? prostszy - nie wspominaj?c o robotach indeksuj?cych. Fakt faktem, ?e jest wyzwaniem przekodowanie zawarto?ci, lecz jest to ogromnie op?acalna inwestycja czasu.
To, ?e skóry s? na <tabelkach> nic tutaj nie zmienia, gdy? z góry narzucone 'wn?trza' themesów zosta?yby wype?nione DIV'ami. S? one wiele bardziej podatne na CSS i ?atwiej mo?na nimi manipulowa?. Chocia?by 'position' czy 'z-index' - na tym nie zbuduje si? <tabelkowego> (efektywnego) thema. Za pomoc? tych warto?ci, nawet Panel Administracyjny zyska?by na efektywno?ci (.admin-message). Ponadto, komunikaty na stronie wygl?da?yby o wiele lepiej.. :)
Podaj? zoptymalizowany user_info_panel:<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2008 Nick Jones
| http://www.php-fu...
+--------------------------------------------------------+
| Filename: user_info_panel.php
| Author: Nick Jones (Digitanium)
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licen... Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }
if (iMEMBER) {
openside($userdata['user_name']);
$msg_count = dbcount("(message_id)", DB_MESSAGES, "message_to='".$userdata['user_id']."' AND message_read='0'AND message_folder='0'");
echo "<ul class='ep-nav'>";
echo "<li><a href='".BASEDIR."edit_profile.php' class='side'>".$locale['global_120']."</a></li>\n";
echo "<li><a href='".BASEDIR."messages.php' class='side'>".$locale['global_121']."</a></li>\n";
echo "<li><a href='".BASEDIR."members.php' class='side'>".$locale['global_122']."</a></li>\n";
if (iADMIN && (iUSER_RIGHTS != "" || iUSER_RIGHTS != "C")) {
echo "<li><a href='".ADMIN."index.php".$aidlink."' class='side'>".$locale['global_123']."</a></li>\n";
}
echo "<li><a href='".BASEDIR."setuser.php?logout=yes' class='side'>".$locale['global_124']."</a></li>\n";
echo "</ul>";
if ($msg_count) { echo "<div class='center'><strong><a href='".BASEDIR."messages.php' class='side'>".sprintf($locale['global_125'], $msg_count).($msg_count == 1 ? $locale['global_126'] : $locale['global_127'])."</a></strong></div>\n"; }
} else {
openside($locale['global_100']);
echo "<div class='center'>\n";
echo "<form name='loginform' method='post' action='".FUSION_SELF."'>\n";
echo "<div>".$locale['global_101']."</div>\n<div><input type='text' name='user_name' class='textbox' /></div>\n";
echo "<div>".$locale['global_102']."</div>\n<div><input type='password' name='user_pass' class='textbox' /></div>\n";
echo "<div><input type='checkbox' name='remember_me' value='y' title='".$locale['global_103']."' style='vertical-align:middle;' />\n";
echo "<input type='submit' name='login' value='".$locale['global_104']."' class='button' /></div>\n";
echo "</form>\n";
if ($settings['enable_registration']) {
echo "<p>".$locale['global_105']."</p>\n";
}
echo $locale['global_106']."\n</div>\n";
}
closeside();
?>Kliknij i zaczekaj na załadowanie kodu ...
..zoptymalizowany navigation_panel:<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2008 Nick Jones
| http://www.php-fu...
+--------------------------------------------------------+
| Filename: navigation_panel.php
| Author: Nick Jones (Digitanium)
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licen... Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }
openside($locale['global_001']);
echo "<ul class='ep-nav'>\n";
$result = dbquery("SELECT * FROM ".DB_SITE_LINKS." WHERE link_position<='2' ORDER BY link_order");
if (dbrows($result)) {
while($data = dbarray($result)) {
if (checkgroup($data['link_visibility'])) {
if ($data['link_name'] != "---" && $data['link_url'] == "---") {
echo "<div class='side-label'><strong>".$data['link_name']."</strong></div>\n";
} else if ($data['link_name'] == "---" && $data['link_url'] == "---") {
echo "<hr class='side-hr' />\n";
} else {
$link_target = ($data['link_window'] == "1" ? " target='_blank'" : "");
if (strstr($data['link_url'], "http://") || strstr($data['link_url'], "https://")) {
echo "<li><a href='".$data['link_url']."'".$link_target." class='side tip' title='".$data['link_name']."'>".$data['link_name']."</a></li>\n";
} else {
echo "<li><a href='".BASEDIR.$data['link_url']."'".$link_target." class='side tip' title='".$data['link_name']."'>".$data['link_name']."</a></li>\n";
}
}
}
}
} else {
echo $locale['global_002'];
}
echo "</ul>";
closeside();
?>Kliknij i zaczekaj na załadowanie kodu ...
..zoptymalizowany online_users_panel:<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright © 2002 - 2007 Nick Jones
| http://www.php-fu...
+--------------------------------------------------------+
| Filename: online_users_panel.php
| Author: Nick Jones (Digitanium)
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licen... Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }
$result = dbquery("SELECT * FROM ".DB_ONLINE." WHERE online_user=".($userdata['user_level'] != 0 ? "'".$userdata['user_id']."'" : "'0' AND online_ip='".USER_IP."'"));
if (dbrows($result)) {
$result = dbquery("UPDATE ".DB_ONLINE." SET online_lastactive='".time()."' WHERE online_user=".($userdata['user_level'] != 0 ? "'".$userdata['user_id']."'" : "'0' AND online_ip='".USER_IP."'")."");
} else {
$result = dbquery("INSERT INTO ".DB_ONLINE." (online_user, online_ip, online_lastactive) VALUES ('".($userdata['user_level'] != 0 ? $userdata['user_id'] : "0")."', '".USER_IP."', '".time()."')");
}
$result = dbquery("DELETE FROM ".DB_ONLINE." WHERE online_lastactive<".(time()-60)."");
openside($locale['global_010']);
$result = dbquery(
"SELECT ton.*, tu.user_id,user_name FROM ".DB_ONLINE." ton
LEFT JOIN ".DB_USERS." tu ON ton.online_user=tu.user_id"
);
$guests = 0; $members = array();
while ($data = dbarray($result)) {
if ($data['online_user'] == "0") {
$guests++;
} else {
array_push($members, array($data['user_id'], $data['user_name']));
}
}
echo $locale['global_011'].": ".$guests."\n";
echo "<div>".$locale['global_012'].": ".count($members)."</div>\n";
echo "<ul class='ep-nav'>";
if (count($members)) {
$i = 1;
while (list($key, $member) = each($members)) {
echo "<li><a href='".BASEDIR."profile.php?lookup=".$member[0]."' class='side'>".$member[1]."</a></li>";
if ($i != count($members)) { echo ",\n"; } else { echo "\n"; }
$i++;
}
}
echo "</ul>";
echo "<div>".$locale['global_014'].": ".number_format(dbcount("(user_id)", DB_USERS, "user_status<='1'"))."</div>\n";
if (iADMIN && checkrights("M") && $settings['admin_activation'] == "1") {
echo THEME_BULLET." <a href='".ADMIN."members.php".$aidlink."&status=2' class='side'>".$locale['global_015']."</a>";
echo ": ".dbcount("(user_id)", DB_USERS, "user_status='2'")."<br />\n";
}
$data = dbarray(dbquery("SELECT user_id,user_name FROM ".DB_USERS." WHERE user_status='0' ORDER BY user_joined DESC LIMIT 0,1"));
echo "<div>".$locale['global_016'].": <a href='".BASEDIR."profile.php?lookup=".$data['user_id']."' class='side'>".$data['user_name']."</a></div>\n";
closeside();
?>Kliknij i zaczekaj na załadowanie kodu ...
+ CSS:.ep-nav {
margin:0;
padding:0 0 8px 0;
list-style-type: none;
}
Kliknij i zaczekaj na załadowanie kodu ...
Pozdro,
~ zer0
|
| |
|
|
| Gander |
Dodany dnia 28.08.2009 15:59:54
|

Bywalec

Postów: 720 Pomógł: 37
Data rejestracji: 22.05.2005 23:17
|
@zer0, a jak w?a?ciwie liczysz t? optymalizacj?? Zdajesz sobie spraw? ?e transferowany jest tylko wynikowy kod HTML a nie ?ród?a PHP? Pami?taj ?e plik PHP mo?e mie? kilkaset kilobajtów a zwrócony kod - tylko kilka bajtów.
Przeprowadzi?em test na stronie zawieraj?cej kilka newsów:
- Uk?ad dwukolumnowy: 36,88 KB
- Uk?ad jednokolumnowy: 37,95 KB
- Twój uk?ad jednokolumnowy: 38,02 KB
Edytowane przez Gander dnia 28.08.2009 16:00:40
|
| |
|
|
| zer0 |
Dodany dnia 28.08.2009 16:52:29
|

Bywalec

Postów: 343 Pomógł: 1
Data rejestracji: 29.07.2004 23:20
|
Gander napisa?/a:
@zer0, a jak w?a?ciwie liczysz t? optymalizacj?? Zdajesz sobie spraw? ?e transferowany jest tylko wynikowy kod HTML a nie ?ród?a PHP? Pami?taj ?e plik PHP mo?e mie? kilkaset kilobajtów a zwrócony kod - tylko kilka bajtów.
Nie tylko mo?na optymalizowa? HTML - przecie? tak?e jest pe?no niepotrzebnych odwo?a? do DB. Licz? tak?e style CSS, które b?d? w cash'u, a nie w ?ródle ?adowane za ka?dym razem, gdy kto? odwiedzi nasz? stron?. Zauwa? prosz? ile jest powstawianych style="" - tego mo?na unikn?? oszcz?dzaj?c na ??czach userów. Dla mnie jest to niechlujstwo programistyczne, które wymaga optymalizacji. Ta sama sytuacja tyczy si? <br>anów - mo?esz mie? poprawny XHTML, lecz umieszczaj?c w nim pe?no "nowych linijek" jest on tak samo b??dem co pogrubianie tekstu <b> - walidator W3C <br /> akceptuje, chod? nie powinien.
[EDIT] Zapomnia?bym o fix'ie <div class="floatfix"></div> - tak samo jest b??dem co marginesy na minusie. Tego shit'u jest pe?no w skórach opartych o DIV'y.. :/
Gander napisa?/a:
Przeprowadzi?em test na stronie zawieraj?cej kilka newsów:
- Uk?ad dwukolumnowy: 36,88 KB
- Uk?ad jednokolumnowy: 37,95 KB
- Twój uk?ad jednokolumnowy: 38,02 KB
Przeprowad? prosz? jeszcze testy pod k?tem botów - który kod jest dla nich lepiej przyswajalny.
Wrzu? stron? z <tabelkami> na http://www.golden...ww-grafik/ lub http://www.forum....izacja.com - zobaczymy, jak zareaguj? rzesze programistów. Nie s? to jedyne miejsca, gdzie otrzymasz konkretny feedback.
Pozdro,
~ zer0
Edytowane przez zer0 dnia 28.08.2009 16:57:15
|
| |
|
|
| Gander |
Dodany dnia 28.08.2009 17:30:13
|

Bywalec

Postów: 720 Pomógł: 37
Data rejestracji: 22.05.2005 23:17
|
Masz racj?. Chodzi?o mi jednak o to ?e twoja "odchudzona" wersja jest wi?ksza od orygina?u. Gdyby wyrzuci? style do zewn?trznego pliku, nadal orygina? by?by mniejszy. Optymalizacja kodu nie zawsze oznacza zmniejszenie jego rozmiaru. Chcia?bym po prostu ?eby? nie uzale?nia? wielko?ci pliku PHP od jego wydajno?ci. Sam staram si? robi? jak najbardziej XHTML-ow? wersj? moich modu?ów, ale z powodu braków w umiej?tno?ci kodowania DIV-ów bardzo cz?sto, niestety, musz? korzysta? z tabel.
Przeczyta?em jednak kiedy? gdzie?, ?e znaczniki typu <h> lub <strong> maj? znaczenie dla paj?czków internetowych: na przyk?ad zaznaczaj? jakie? wa?niejsze elementy - tego font-weight:bold nie robi. |
| |
|
|
| jantom |
Dodany dnia 28.08.2009 18:05:26
|

Weteran

Postów: 3460 Pomógł: 123
Data rejestracji: 31.03.2005 20:10
|
Teraz zaczynacie dywagacje na temat oddzielania zawarto?ci od wygl?du. To ju? wymaga odrobiny wprawy w pisaniu kodu HMTL, a co ciekawsze, jest ró?norodnie interpretowane przez ró?nych webmasterów. Niektóre elementy z kodu zer0 (dok?adniej przyjrza?em si? tylko news.php, wybacz) napisa?bym jeszcze inaczej, np. uwa?am, ?e odpowiedniejszym od <div class='tbl2 bold'>".$news_subject."</div> by?oby <h1 class='tbl2 bold'>".$news_subject."</h1>
Div uznawany jest tylko za pude?ko, a tytu? newsa zdecydowanie bardziej zas?uguje na form? nag?ówka.
W v7.01 i tak tych zmian nie uda si? teraz wprowadzi? - wedle tego, co czytam, wydanie uznane jest za zamkni?te, teraz tylko b??dy poprawiaj?.
Edytowane przez jantom dnia 28.08.2009 18:07:32
|
| |
|
|
| zer0 |
Dodany dnia 28.08.2009 18:10:18
|

Bywalec

Postów: 343 Pomógł: 1
Data rejestracji: 29.07.2004 23:20
|
Gander napisa?/a:
Masz racj?. Chodzi?o mi jednak o to ?e twoja "odchudzona" wersja jest wi?ksza od orygina?u. Gdyby wyrzuci? style do zewn?trznego pliku, nadal orygina? by?by mniejszy. Optymalizacja kodu nie zawsze oznacza zmniejszenie jego rozmiaru. Chcia?bym po prostu ?eby? nie uzale?nia? wielko?ci pliku PHP od jego wydajno?ci. Sam staram si? robi? jak najbardziej XHTML-ow? wersj? moich modu?ów, ale z powodu braków w umiej?tno?ci kodowania DIV-ów bardzo cz?sto, niestety, musz? korzysta? z tabel.
OK - mój b?ad - przepraszam.
Kodowanie na DIV'ach, w brew pozorom, nie jest trudne - widzia?em niejednokrotnie, ?e niektórzy id? pod górk?, a wystarcz? dwie linijki CSS i wszystko ?miga. Najgorzej jak 'webmajsterzy' tn? layout z Photoshop'a, lub z generatorów OnLine i my?l?, ?e maj? poprawny XHTML. To nie prawda. Photoshop i generatory dodaj? atrybuty 'position:absolute' co w ogóle jest niepotrzebne - wtedy DIV traci na elastyczno?ci. Naj?atwiej i najszybciej jest samemu napisa? XHTML i dopisa? do niego arkusz CSS + docina? w Photoshop'ie poszczególne elementy. Wtedy masz 100% pewno??, ?e wszystko b?dzie jak nale?ny.
Wystarczy:
//XHTML
<div class="ramka1">tre??</div>
<div class="ramka2">tre??</div>
<div class="ramka3">tre??</div>
//CSS
.ramka1, .ramka2, .ramka1 {width:33%;float;left}
Kliknij i zaczekaj na załadowanie kodu ... ...i nie trzeba kombinacji z <tabelkami>
Gander napisa?/a:
Przeczyta?em jednak kiedy? gdzie?, ?e znaczniki typu <h> lub <strong> maj? znaczenie dla paj?czków internetowych: na przyk?ad zaznaczaj? jakie? wa?niejsze elementy - tego font-weight:bold nie robi. Tak to prawda - <h> jest pot?g? SEO. Jednak?e wol? u?y? <h5> zamiast <strong> z uwagi na to, i? GoogleBot wpierw ?apie <h> a pó?niej <strong>. A po co <strong>menami ?mieci? w kodzie? :)
@jantom: masz racj?!
Poprawi?em ten b??d i usun??em wcze?niejszy nag?ówek <h3>, a 'pude?ko' zast?pi?em tym samym H3 zamiast H1.. :)
<h1> - pozostawi?bym na LOGO
<h2> - na nazwy PANELI
<h3> - NEWSY, KATEGORIE galerii, linków itp
Pozdro,
~ zer0
Edytowane przez zer0 dnia 28.08.2009 18:36:25
|
| |
|
|
| jantom |
Dodany dnia 28.08.2009 18:19:05
|

Weteran

Postów: 3460 Pomógł: 123
Data rejestracji: 31.03.2005 20:10
|
zer0 napisa?/a:
Gander napisa?/a:
Przeczyta?em jednak kiedy? gdzie?, ?e znaczniki typu <h> lub <strong> maj? znaczenie dla paj?czków internetowych: na przyk?ad zaznaczaj? jakie? wa?niejsze elementy - tego font-weight:bold nie robi. Tak to prawda - <h> jest pot?g? SEO. Jednak?e wol? u?y? <h5> zamiast <strong> z uwagi na to, i? GoogleBot wpierw ?apie <h> a pó?niej <strong>. A po co <strong>menami ?mieci? w kodzie?
Teraz mamy do czynienia z tym, o czym chwil? wcze?niej pisa?em - ró?norodne interpretacje u?ycia znaczników. Dla mnie nag?ówek, to nag?ówek - rzecz ?wi?ta, która nie mo?e pojawi? si? w tek?cie jako podkre?lenie wagi czego? - w przeciwie?stwie do stronga. Przyda?aby nam si? jeszcze osoba, która mia?a do czynienia z przygl?darkami dla osób niewidomych (ze wzgl?du na interpretacj? g?osow? widzianego tekstu)/mia?aby hopla na punkcie accessbilty.
Edytowane przez jantom dnia 28.08.2009 18:22:55
|
| |
|
|
| zer0 |
Dodany dnia 28.08.2009 18:21:17
|

Bywalec

Postów: 343 Pomógł: 1
Data rejestracji: 29.07.2004 23:20
|
jantom napisa?/a:
Teraz przyda?aby nam si? jeszcze osoba, która mia?a do czynienia z przygl?darkami dla osób niewidomych/mia?aby hopla na punkcie accessbilty.
Wi?kszej palpitacji dosta?by od tych <tabelek>, ni? od <h5>.
To samo si? tyczy braku <label> w wielu miejscach.. ;)
[EDIT]
Wpad? mi do g?owy OH, który po zalogowaniu u?ytkownika zmienia <h5> na <strong>.. :)
Pozdro,
~ zer0
Edytowane przez zer0 dnia 28.08.2009 18:33:22
|
| |
|
|
| Chemikpil |
Dodany dnia 28.08.2009 19:31:18
|

Bywalec

Postów: 999 Pomógł: 54
Data rejestracji: 04.05.2008 21:46
|
zer0 napisa?/a:
Poprawi?em ten b??d i usun??em wcze?niejszy nag?ówek <h3>, a 'pude?ko' zast?pi?em tym samym H3 zamiast H1.. 
Tak d???c ju? do doskona?o?ci to mi?dzy h3 a h1 jest ró?nica ale nie w wygl?dzie. h1 to pierwszy tytu?, a kolejne numerki to jego kolejne podtytu?y. To tak jak by? mia? rozdzia?, podrozdzia?, itd. Jest to równie? zasada której W3C nie wytyka webmasterom, a oni daj? h3 zamiast h1 dlatego ?e h1 jest za du?e. No ale to tak ju? na marginesie.
|
| |
|
|
| zer0 |
Dodany dnia 28.08.2009 20:19:45
|

Bywalec

Postów: 343 Pomógł: 1
Data rejestracji: 29.07.2004 23:20
|
Chemikpil napisa?/a:
Tak d???c ju? do doskona?o?ci to mi?dzy h3 a h1 jest ró?nica ale nie w wygl?dzie. h1 to pierwszy tytu?, a kolejne numerki to jego kolejne podtytu?y. To tak jak by? mia? rozdzia?, podrozdzia?, itd. Jest to równie? zasada której W3C nie wytyka webmasterom, a oni daj? h3 zamiast h1 dlatego ?e h1 jest za du?e. No ale to tak ju? na marginesie.
Przecie? napisa?em we wcze?niejszym po?cie:
zer0 napisa?/a:
<h1> - pozostawi?bym na LOGO
<h2> - na nazwy PANELI
<h3> - NEWSY, KATEGORIE galerii, linków itp
Mnie tego pisa? nie musisz.. 
Pozdro,
~ zer0
|
| |
|
|
| Riklaunim |
Dodany dnia 29.08.2009 00:51:01
|

Pocz?tkuj?cy

Postów: 244
Data rejestracji: 07.08.2004 10:53
|
bartek124 napisa?/a:
Przej?cie na divy by?oby dobrym krokiem, ale raczej nie teraz. Nadal wiele stron ma wszystko na tabelkach, wielu webmasterów nie pojmuje divów, s? z nimi k?opoty w ró?nych przegl?darkach no i jest z nimi du?o wi?cej pracy, a to raczej burzy ide? prostego CMS'a.
Nie zgadzam si? z tym ?e:
- s? problemy z obs?ug? DIVów i XHTML w przegl?darkach
- jest z nimi du?o wi?cej pracy
To nie stopie? trudno?ci nowoczesnych szablonów stron utrudnia ich przyswajanie przez m?odych webmasterów, lecz skrypty stosuj?ce przestarza?e rozwi?zania, które przyuczaj? ich do starych rozwi?za?.
Edytowane przez Riklaunim dnia 29.08.2009 00:51:44
|
| |
|
|
| Chemikpil |
Dodany dnia 29.08.2009 11:25:50
|

Bywalec

Postów: 999 Pomógł: 54
Data rejestracji: 04.05.2008 21:46
|
Nie chodzi o to ?e ?atwiej je wstawi? i usun??. Bardziej chodzi o ich stylizacje, pozycjonowanie itp. W tabelkach stworzysz sobie wiersz i ka?da komórka b?dzie ko?o siebie, a w divach ju? trzeba bawi? si? z przyleganiem, co do teraz dla wielu jest utrapieniem. Spotka?em tak?e takich co nie potrafi? wy?rodkowa? diva, nie wspomn? tu o osobach które wci?? u?ywaj? <center> ... eh. I chocia? nam to przychodzi z dziecinn? ?atwo?ci? to inni maj? z tym wielkie problemy.
Proponuje jednak ju? wróci? do tematu, który dotyczy odchudzenia PF.
Edytowane przez Chemikpil dnia 29.08.2009 11:26:14
|
| |
|