Lista ostatnio modyfikowanych/edytowanych artykułów
|
An |
Dodany dnia 02.02.2010 01:35:18
|
Przedszkolak
Postów: 4
Data rejestracji: 02.08.2009 12:16
|
Witam.
Nie odzywałem się tu jeszcze, do tej pory sam znajdując rozwiązania różnych 'problemów' - dzięki Waszym postom na forum. Rozwiązania mojego kolejnego kłopociku od dwóch dni jednak nie mogę znaleźć.
Chodzi mi o listę ostatnio modyfikowanych/edytowanych artykułów.
Używam wersji v7 - jest tam panel, który pokazuje ostatnio dodane artykuły z każdej kategorii.
Otóż chciałbym mieć taką samą listę, tyle że miałaby ona pokazywać ostatnio edytowane artykuły. Chodzi o to, żebym wiedział, które zostały ostatnio zmienione - gdzie coś dopisano lub usunięto.
To pewnie bardzo proste, ale ja nie daję rady... Proszę o pomoc.
Pozdrawiam serdecznie.
Proszę nie spamować Ekipy o pomoc na PW. Od tego mamy tylko i wyłącznie FORUM ! /khaman
Edytowane przez Pieka dnia 02.02.2010 19:19:38
|
|
|
|
Wścibski Gość |
Dodany dnia 24.11.2024 21:08:11
|
Pan Kontekstualny
Postów: n^x
Data rejestracji: Zawsze
|
|
IP: localhost |
|
|
dante77 |
Dodany dnia 02.02.2010 08:55:26
|
Bywalec
Postów: 332 Pomógł: 25 Ostrzeżeń: 1
Data rejestracji: 09.05.2005 00:08
|
Mam coś takiego, ale najpierw musisz zadbać o to, aby artykuł podczas edycji dawał możliwość aktualizacji daty i do tego należy w pliku administration/articles.php
znaleźć w okolicach 52 lini:
$result = dbquery("UPDATE ".DB_ARTICLES." SET article_cat='".intval($_POST['article_cat'])."', article_subject='$subject', article_snippet='$body', article_article='$body2', article_draft='$draft', article_breaks='$breaks', article_allow_comments='$comments', article_allow_ratings='$ratings' WHERE article_id='".$_POST['article_id']."'");
i zamienić na:
$article_datestamp = isset($_POST['update_datestamp']) ? ", article_datestamp='".time()."'" : "";
$result = dbquery("UPDATE ".DB_ARTICLES." SET article_cat='".intval($_POST['article_cat'])."', article_subject='$subject', article_snippet='$body', article_article='$body2', article_draft='$draft', article_breaks='$breaks', article_allow_comments='$comments', article_allow_ratings='$ratings'".$article_datestamp." WHERE article_id='".$_POST['article_id']."'");
Następnie w okolicy linii 182 znaleźć:
echo "<input type='submit' name='preview' value='".$locale['430']."' class='button' />\n";
echo "<input type='submit' name='save' value='".$locale['431']."' class='button' /></td>\n";
echo "</tr>\n</table>\n</form>\n";
i zamienić na:
if (isset($_GET['action']) && $_GET['action'] == "edit") {
echo "<input type='checkbox' name='update_datestamp' value='1'> Aktualizuj date<br /><br />\n";
}
echo "<input type='submit' name='preview' value='".$locale['430']."' class='button' />\n";
echo "<input type='submit' name='save' value='".$locale['431']."' class='button' /></td>\n";
echo "</tr>\n</table>\n</form>\n";
A potem to już z górki. Wstawiasz ten kod w panel:
openside("Ostatnie aktualizacje");
$result = dbquery(
"SELECT ta.*,tac.* FROM ".$db_prefix."articles ta
INNER JOIN ".$db_prefix."article_cats tac ON ta.article_cat=tac.article_cat_id
WHERE ".groupaccess('article_cat_access')."
ORDER BY article_datestamp DESC LIMIT 10"
);
if (dbrows($result) != 0) {
while($data = dbarray($result)) {
$itemsubject = trimlink($data['article_subject'], 100);
if ($data['article_datestamp']+604800 > time()+($settings['timeoffset']*3600)) {
$new = " <span class='small'><b><font color='red'>[NOWY]</font></b></span>";
} else {
$new = "";
}
echo "<i>".showdate("longdate", $data['article_datestamp'])." | ".$data['article_cat_name']."</i><br><a href='".BASEDIR."articles.php?article_id=".$data['article_id']."' class='orange'><b>".$itemsubject."</b></a>$new<br>";
echo "<br />";
}
}
else {
echo "<center>Brak promocji</center>\n";
}
closeside();
Przy okazji listę ostatnich aktualizacji masz ładnie sformatowaną.
Edytowane przez dante77 dnia 02.02.2010 08:58:28
|
|
|
|
An |
Dodany dnia 02.02.2010 19:17:02
|
Przedszkolak
Postów: 4
Data rejestracji: 02.08.2009 12:16
|
Dzięki wielkie!
Sprawa szybko załatwiona, wszystko chodzi jak należy.
Zmiana w administration/articles.php wpływa także na wbudowaną w v7 oryginalną listę ostatnio dodanych artykułów, również poza Twoim panelem. Faktycznie wystarczyło umożliwić aktualizację daty.
Pomogłeś bardzo, dziękuję. |
|
|
|
bynio |
Dodany dnia 01.11.2010 12:51:02
|
Przedszkolak
Postów: 11
Data rejestracji: 23.01.2010 17:44
|
Odkopuję, ale dwa pytania. Jak zrobić aby na liście nie wyświetlały się artykuły bez ustawionej daty. Tzn, te które mają w polu datestamp wartość 0. Dodatkowo jak podzielić tą listę na strony jeśli ta lista zmian będzie miała np. pow. 20 wyników.
Edytowane przez bynio dnia 01.11.2010 12:51:18
|
|
|
|
Chemikpil |
Dodany dnia 01.11.2010 19:08:26
|
Bywalec
Postów: 999 Pomógł: 54
Data rejestracji: 04.05.2008 21:46
|
Jezeli chodzi o pierwsze pytanie to albo daj if gdzie sprawdzisz czy data jest rozna od 0. Jesli tak to wyswietlaj dane, lub przy zapytaniu sql, daj klauzulr where z takim samym warukiem. Nie podam koeu bo pisze z telefonu i nie mam wgladu do kodu
|
|
|
|
bynio |
Dodany dnia 02.11.2010 08:07:30
|
Przedszkolak
Postów: 11
Data rejestracji: 23.01.2010 17:44
|
Dzięki za odpowiedź. Z niewyświetlaniem w liście linków gdy mają last_datestamp ustawione na zero poradziłem sobie dopisując do warunku:
WHERE ".groupaccess('article_cat_access')."
zapis
AND article_datestamp > 0
tak że w rezultacie zapis części kodu odpowiedzialnego za wybór najnowszych modyfikacji wygląda:
$result = dbquery(
"SELECT ta.*,tac.* FROM ".$db_prefix."articles ta
INNER JOIN ".$db_prefix."article_cats tac ON ta.article_cat=tac.article_cat_id
WHERE ".groupaccess('article_cat_access')." AND article_datestamp > 0
ORDER BY article_datestamp DESC LIMIT 20"
);
Nie wiem niestety jak zrobić wyświetlanie wyników na stronach jeżeli ich ilość jest większa niż powiedzmy 20.
Edytowane przez bynio dnia 02.11.2010 08:08:35
|
|
|
|
dante77 |
Dodany dnia 02.11.2010 11:24:24
|
Bywalec
Postów: 332 Pomógł: 25 Ostrzeżeń: 1
Data rejestracji: 09.05.2005 00:08
|
Dodałem paginację.
$rows = dbcount("(article_id)", DB_ARTICLES);
if (!isset($_GET['rowstart']) || !isnum($_GET['rowstart'])) { $_GET['rowstart'] = 0; }
if ($rows != 0) {
$result = dbquery(
"SELECT ta.*,tac.* FROM ".$db_prefix."articles ta
INNER JOIN ".$db_prefix."article_cats tac ON ta.article_cat=tac.article_cat_id
WHERE ".groupaccess('article_cat_access')."
ORDER BY article_datestamp DESC LIMIT ".$_GET['rowstart'].",20"
);
if (dbrows($result) != 0) {
while($data = dbarray($result)) {
$itemsubject = trimlink($data['article_subject'], 100);
if ($data['article_datestamp']+604800 > time()+($settings['timeoffset']*3600)) {
$new = " <span class='small'><b><font color='red'>[NOWY]</font></b></span>";
} else {
$new = "";
}
echo "<i>".showdate("longdate", $data['article_datestamp'])." | ".$data['article_cat_name']."</i><br><a href='".BASEDIR."articles.php?article_id=".$data['article_id']."' class='orange'><b>".$itemsubject."</b></a>$new<br>";
echo "<br />";
}
}
else {
echo "<center>Brak promocji</center>\n";
}
if ($rows > 20) echo "<div align='center' style='margin-top:5px;'>\n".makepagenav($_GET['rowstart'], 20, $rows, 3, FUSION_SELF."?")."\n</div>\n";
}
Tylko dodaj do selecta warunek o artykułach bez daty, bo tego tu nie ma.
|
|
|
|
bynio |
Dodany dnia 02.11.2010 12:22:37
|
Przedszkolak
Postów: 11
Data rejestracji: 23.01.2010 17:44
|
Ok, dzięki za kod. Powstały 2 nowe "problemy".
Może pokrótce o tym co działa. Sklonowałem articles.php pod nazwę ogloszenia.php. Tu dokonałem edycji tak że ogloszenia.php odnosi się do własnej tabeli w bazie i mogę je edytować z PA. Dodałem też pola articles_last_datestamp oraz news_last_datestamp odpowiednio w tabelach fusion_articles, fusion_ogloszenia, fusion_news. Oczywiście dodałem kod który obsługuje te dodatkowe pola w tabeli. No i wszystko jest ok. Zrobiłem to po to aby móc wyświetlać listę ostatnio zmodyfikowanych rzeczy na stronie. Ale tu napotkałem na 2 wyżej wspomniane problemy.
Pierwszy z nich to taki że muszę powyższy kod wykonywać 3-krotnie aby uzyskać wyniki dla artykułów, ogłoszeń i newsów. Czy da się aby kod pobierał z tych 3 tabel na raz i dopiero wówczas ustawiał je wg znacznika articles_last_datestamp oraz news_last_datestamp? (tu mogę to ujednolicić w bazie)
Drugi to taki że kod, jakbym go nie próbował modyfikować nie potrafi pobrać listy z tabeli fusion_news, po prostu nie jest wykonywana pętla wyświetlania wyników tylko od razu przechodzi do else wyświetlającego brak wyników.
Poniżej kod strony lista.php
<?php
require_once "maincore.php";
require_once THEMES."templates/header.php";
openside("Ostatnio dodane\aktualizowane strony");
$result = dbquery(
"SELECT ta.*,tac.* FROM ".$db_prefix."articles ta
INNER JOIN ".$db_prefix."article_cats tac ON ta.article_cat=tac.article_cat_id
WHERE ".groupaccess('article_cat_access')." AND article_last_datestamp > 0
ORDER BY article_last_datestamp DESC LIMIT 20"
);
echo "<div style='text-align: center;'><b><big>Dział Zadania PIW Lubaczów</big></b></div>";
echo "<br />";
if (dbrows($result) != 0) {
while($data = dbarray($result)) {
$itemsubject = trimlink($data['article_subject'], 100);
if ($data['article_datestamp']+604800 > time()+($settings['timeoffset']*3600)) {
$new = " <span class='small'><b><font color='red'>[NOWY]</font></b></span>";
} else {
$new = "";
}
echo "<i>".showdate("longdate", $data['article_last_datestamp'])." | ".$data['article_cat_name']."</i><br><a href='".BASEDIR."articles.php?article_id=".$data['article_id']."' class='orange'><b>".$itemsubject."</b></a>$new<br>";
echo "<br />";
}
}
$result = dbquery(
"SELECT ta.*,tac.* FROM ".$db_prefix."ogloszenia ta
INNER JOIN ".$db_prefix."article_cats tac ON ta.article_cat=tac.article_cat_id
WHERE ".groupaccess('article_cat_access')." AND article_last_datestamp > 0
ORDER BY article_last_datestamp DESC LIMIT 20"
);
echo "<div style='text-align: center;'><b><big>Dział Ogłoszenia</big></b></div>";
echo "<br />";
if (dbrows($result) != 0) {
while($data = dbarray($result)) {
$itemsubject = trimlink($data['article_subject'], 100);
if ($data['article_datestamp']+604800 > time()+($settings['timeoffset']*3600)) {
$new = " <span class='small'><b><font color='red'>[NOWY]</font></b></span>";
} else {
$new = "";
}
echo "<i>".showdate("longdate", $data['article_last_datestamp'])." | ".$data['article_cat_name']."</i><br><a href='".BASEDIR."ogloszenia.php?article_id=".$data['article_id']."' class='orange'><b>".$itemsubject."</b></a>$new<br>";
echo "<br />";
}
}
$result = dbquery(
"SELECT ta.*,tac.* FROM ".$db_prefix."news ta
INNER JOIN ".$db_prefix."news_cats tac ON ta.news_cat=tac.news_cat_id
WHERE ".groupaccess('news_cat_access')." AND news_last_datestamp > 0
ORDER BY news_last_datestamp DESC LIMIT 20"
);
echo "<div style='text-align: center;'><b><big>Dział Aktualności</big></b></div>";
echo "<br />";
if (dbrows($result) != 0) {
while($data = dbarray($result)) {
$itemsubject = trimlink($data['news_subject'], 100);
if ($data['news_datestamp']+604800 > time()+($settings['timeoffset']*3600)) {
$new = " <span class='small'><b><font color='red'>[NOWY]</font></b></span>";
} else {
$new = "";
}
echo "<i>".showdate("longdate", $data['news_last_datestamp'])." | ".$data['news_cat_name']."</i><br><a href='".BASEDIR."news.php?article_id=".$data['article_id']."' class='orange'><b>".$itemsubject."</b></a>$new<br>";
echo "<br />";
}
}
else {
echo "Brak";
}
closeside();
require_once THEMES."templates/footer.php";
?>
Wiadomość doklejona:
Ostatecznie skorzystałem z wtyczki "Latest Additions Panel". Nie jest ona doskonała, też nie potrafi wyświetlać ostatnich modyfikacji na jednej liście a wykonuje się (u mnie) 3-krotnie, ale jako tako wygląda po drobnych modyfikacjach (u mnie lista wyników się rozjeżdzała, trzeba było usunąć kawałek kodu odpowiedzialny za wyświetlanie napisu "nowy").
Edytowane przez bynio dnia 09.11.2010 07:59:40
|
|
|
|
Pawlo_23 |
Dodany dnia 22.04.2013 14:41:56
|
Przedszkolak
Postów: 23
Data rejestracji: 18.05.2010 00:08
|
dante77 skorzystałem z przygotowanego przez Ciebie panelu aktualizacji. Jest super.
Chcę zmodyfikować jeszcze articles.php. Mam problem. Nie umiem wstawić do zmodyfikowanego pliku wyświetlania napisu "nowy" przy świeżo utworzonym artykule. Próbuję tyle razy i wciąż wywala mi same błędy.
Proszę o pomoc.
<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2011 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: articles.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 http://www.gnu.org/licenses/agpl.html. 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";
include LOCALE.LOCALESET."articles.php";
# Breadcrumbs
# Original Code from Rizald "Elyn" Maxwell - Rewritten for 7.02 by MarcusG
$isTrue = false;
$str = "";
if (isset($_GET['article_id'])&& isnum($_GET['article_id'])){
$result = dbquery(
"SELECT ta.article_cat, tac.article_cat_name, ta.article_id, ta.article_subject FROM ".DB_ARTICLES." ta
LEFT JOIN ".DB_ARTICLE_CATS." tac ON ta.article_cat=tac.article_cat_id
WHERE article_id='".$_GET['article_id']."'"
);
if (dbrows($result)) {
$data = dbarray($result);
$str .= "<a href='".FUSION_SELF."'><strong>".$locale['404']."</strong></a>";
$str .= " » <a href='".FUSION_SELF."?cat_id=".$data['article_cat']."'>".$data['article_cat_name']."</a>";
$str .= " » <a href='".FUSION_SELF."?article_id=".$_GET['article_id']."'>".$data['article_subject']."</a>";
$isTrue = true;
}
} elseif (isset($_GET['cat_id']) && isnum($_GET['cat_id'])){
$result = dbquery(
"SELECT article_cat_name FROM ".DB_ARTICLE_CATS."
WHERE article_cat_id='".$_GET['cat_id']."'");
if (dbrows($result)) {
$data = dbarray($result);
$str .= "<a href='".FUSION_SELF."'><strong>".$locale['404']."</strong></a>";
$str .= " » <a href='".FUSION_SELF."?cat_id=".$_GET['cat_id']."'>".$data['article_cat_name']."</a>";
$isTrue = true;
}
}
if($isTrue){
// opentable($locale['405']);
echo "<i>\n";
echo $str;
echo "</i><br><br>\n";
// closetable();
}
# end of breadcrumbs
define("MAX_ARTICLES","7");
add_to_title($locale['global_200'].$locale['400']);
if (isset($_GET['article_id']) && isnum($_GET['article_id'])) {
$result = dbquery(
"SELECT ta.*,tac.*, tu.user_id,user_name FROM ".DB_ARTICLES." ta
INNER JOIN ".DB_ARTICLE_CATS." tac ON ta.article_cat=tac.article_cat_id
LEFT JOIN ".DB_USERS." tu ON ta.article_name=tu.user_id
WHERE ".groupaccess('article_cat_access')." AND article_id='".$_GET['article_id']."' AND article_draft='0'"
);
if (dbrows($result)) {
require_once INCLUDES."comments_include.php";
require_once INCLUDES."ratings_include.php";
$data = dbarray($result);
if (!isset($_GET['rowstart']) || !isnum($_GET['rowstart'])) { $_GET['rowstart'] = 0; }
if ($_GET['rowstart'] == 0) { $result = dbquery("UPDATE ".DB_ARTICLES." SET article_reads=article_reads+1 WHERE article_id='".$_GET['article_id']."'"); }
$article = stripslashes($data['article_article']);
if (ereg('<--PAGEBREAK-->', $article)) {
$article = explode("<--PAGEBREAK-->", $article);
} else {
$article = explode("<!-- pagebreak -->", $article);
}
$pagecount = count($article);
$article_subject = stripslashes($data['article_subject']);
$article_info = array(
"article_id" => $data['article_id'],
"user_id" => $data['user_id'],
"user_name" => $data['user_name'],
"article_date" => $data['article_datestamp'],
"article_breaks" => $data['article_breaks'],
"article_comments" => dbcount("(comment_id)", DB_COMMENTS, "comment_type='A' AND comment_item_id='".$data['article_id']."'"),
"article_reads" => $data['article_reads'],
"article_allow_comments" => $data['article_allow_comments']
);
add_to_title($locale['global_201'].$article_subject);
echo "<!--pre_article-->";
render_article($article_subject, $article[$_GET['rowstart']], $article_info);
echo "<!--sub_article-->";
if ($pagecount > 1) {
echo "<div align='center' style='margin-top:5px;'>\n".makepagenav($_GET['rowstart'], 1, $pagecount, 3, FUSION_SELF."?article_id=".$_GET['article_id']."&")."\n</div>\n";
}
if ($data['article_allow_comments']) { showcomments("A", DB_ARTICLES, "article_id", $_GET['article_id'], FUSION_SELF."?article_id=".$_GET['article_id']); }
if ($data['article_allow_ratings']) { showratings("A", $_GET['article_id'], FUSION_SELF."?article_id=".$_GET['article_id']); }
} else {
redirect(FUSION_SELF);
}
} elseif (!isset($_GET['cat_id']) || !isnum($_GET['cat_id'])) {
opentable($locale['400']);
echo "<!--pre_article_idx-->\n";
$result = dbquery("SELECT * FROM ".DB_ARTICLE_CATS." WHERE ".groupaccess('article_cat_access')." AND article_cat_id NOT IN (4) ORDER BY article_cat_name");
$rows = dbrows($result);
if ($rows) {
// echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr><td>\n";
while ($data = dbarray($result)) {
echo "<table cellpadding='0' cellspacing='0' width='100%' class='tbl-border'><tr><td class='tbl2'><center><strong>
<a href='".FUSION_SELF."?cat_id=".$data['article_cat_id']."'>".$data['article_cat_name']."</a></strong></center></td></tr>";
$cat_res = dbquery("SELECT * FROM ".DB_ARTICLES." WHERE article_cat='".$data['article_cat_id']."' ORDER BY article_datestamp ASC ");
$counter = 0;
while ($data2 = dbarray($cat_res)) {
if ($counter < MAX_ARTICLES) {
if($data2['article_draft'] == '0'){
echo "<tr><td class='tbl1'>".THEME_BULLET." <a href='".FUSION_SELF."?article_id=".$data2['article_id']."' style=\"font-weight: normal\">".$data2['article_subject']."</a></td></tr>";
$counter++;
}
}
else {
echo "<tr><td><hr class='hr'></td></tr>\n\n";
echo "<tr><td class='tbl'><center><strong><a href='".FUSION_SELF."?cat_id=".$data['article_cat_id']."'>- Pokaż wszystkie dostępne pozycje -</a></strong></center></a></td></tr>";
break;
}
}
echo "<tr><td><br /></td></tr>\n";
echo "</table>";
}
// echo "</td></tr>\n</table>\n";
} else {
echo "<div style='text-align:center'><br />\n".$locale['401']."<br /><br />\n</div>\n";
}
echo "<!--sub_article_idx-->\n";
closetable();
} else {
$res = 0;
$result = dbquery("SELECT * FROM ".DB_ARTICLE_CATS." WHERE article_cat_id='".$_GET['cat_id']."'");
if (dbrows($result) != 0) {
$cdata = dbarray($result);
if (checkgroup($cdata['article_cat_access'])) {
$res = 1;
add_to_title($locale['global_201'].$cdata['article_cat_name']);
opentable($locale['400'].": ".$cdata['article_cat_name']);
echo "<!--pre_article_cat-->";
$rows = dbcount("(article_id)", DB_ARTICLES, "article_cat='".$_GET['cat_id']."' AND article_draft='0'");
if (!isset($_GET['rowstart']) || !isnum($_GET['rowstart'])) { $_GET['rowstart'] = 0; }
if ($rows != 0) {
$result = dbquery(
"SELECT ta.article_id, ta.article_subject, ta.article_snippet, ta.article_datestamp FROM ".DB_ARTICLES." ta
WHERE article_cat='".$_GET['cat_id']."' AND article_draft='0' ORDER BY ".$cdata['article_cat_sorting']." LIMIT ".$_GET['rowstart'].",15"
);
$numrows = dbrows($result); $i = 1;
while ($data = dbarray($result)) {
if ($data['article_datestamp'] + 604800 > time() + ($settings['timeoffset'] * 3600)) {
$new = " <span class='small'>".$locale['402']."</span>";
} else {
$new = "";
}
echo "<span style=\"margin-left: 85px; line-height: 20px\">".THEME_BULLET." <a href='".FUSION_SELF."?article_id=".$data['article_id']."'>".$data['article_subject']."</a>$new<br />\n".stripslashes($data['article_snippet']);
echo ($i != $numrows ? "</span>\n" : "\n"); $i++;
}
echo "<!--sub_article_cat-->";
closetable();
if ($rows > 15) echo "<div align='center' style=';margin-top:5px;'>\n".makepagenav($_GET['rowstart'], 15, $rows, 3, FUSION_SELF."?cat_id=".$_GET['cat_id']."&")."\n</div>\n";
} else {
echo "<div style='text-align:center'>".$locale['403']."</div>\n";
echo "<!--sub_article_cat-->";
closetable();
}
}
}
if ($res == 0) { redirect(FUSION_SELF); }
}
require_once THEMES."templates/footer.php";
?>
Pawlo
|
|
|