Page 1 of 2
How can we mark new articles with a "NEW" label?
Posted: Fri 31. Mar 2006, 15:08
by Nik2004
Hi.
I would like the system to automatically add a "NEW" (or other customizable) text label or icon, next to ALL newly added or edited articles/categories, for a specified period.
For example, when I add a new article, I want for one week a label "NEW" next to it, so people know that this is new material in the site.
Likewise, when I add a new category, I want for, e.g. a week, a label "NEW" next to the menu line for this category, so that can people can directly recognize new material.
Can this be done somehow and if yes, how??
Posted: Sat 1. Apr 2006, 04:46
by Pappnase
About isNew.php
Posted: Mon 3. Apr 2006, 10:10
by Nik2004
Thanks Pappnase for your reply.
I read the thread you sent me. However, I would like to ask:
1. The code posted at that thread is the whole content of a file named isNew.php ?
2. So, I can create a file named isNew.php with that content, but where do I put isNew.php?
3. Do I need to modify any other files of phpwcms?
4. Does it work with phpwcms_1.1-RC4_2004-06-22 ?
Thanks for your help.
Posted: Mon 3. Apr 2006, 10:15
by jscholtysik
Hi Nik2004,
if you want to use the isNew.php file, look into the folder
phpwcms_template/inc_script/frontend_render.
this file is already in there. The only thing is that you have to rename the existing file from isNew.php_ to isNew.php. That's all!
Joachim
File is NOT already there!
Posted: Mon 3. Apr 2006, 10:53
by Nik2004
Sorry, folder phpwcms_template/inc_script does not exist in phpwcms_1.1-RC4_2004-06-22.
Is there a way I can use the script in my version and how ? (It's too difficult to upgrade in my case.)
Thanks for your reply, anyway.
Posted: Mon 3. Apr 2006, 12:46
by jscholtysik
Hi Nik2004,
unfortunately not, I think, the frontend_render and frontend_init folders have been introduced after the 1.1-RC4 release...
Upgrading to the lastest version 1.2.6 is not that diffcult, why not trying it? What are the problems?
Joachim
Upgrade dificult!
Posted: Mon 3. Apr 2006, 23:03
by Nik2004
Due to many modified pieces of code for better support of greek and many other changes which I don't know if the new version supports them! See my thread:
http://www.phpwcms.de/forum/viewtopic.php?t=10582
Thanks for your interest.
Posted: Tue 4. Apr 2006, 06:54
by DeXXus
To support using the replacement tag
...just add *another* modification to your list...
In
"content.func.inc.php" choose a similar and easy to FIND place such as:
Code: Select all
// include external HTML page but only part between <body></body>
$content["all"] = preg_replace('/\{URL:(.*?)\}/ie', 'include_url("$1");', $content["all"]);
// -------------------------------------------------------------
REPLACE with:
Code: Select all
// include external HTML page but only part between <body></body>
$content["all"] = preg_replace('/\{URL:(.*?)\}/ie', 'include_url("$1");', $content["all"]);
// -------------------------------------------------------------
// include isNew image at location of replacement tag with format {D:startdate,duration,imagename}
$content["all"] = preg_replace('/\{D:(.*?)\}/ie', 'myRT1("$1")', $content["all"]);
// -------------------------------------------------------------
AND in
"front.func.inc.php" FIND:
Code: Select all
// -------------------------------------------------------------
function include_url($url) {
// include given URL but only take content between <body></body>
$k = '';
$url = trim($url);
if($url && function_exists('file_get_contents')) {
$GLOBALS['include_urlparts'] = parse_url($url);
if(isset($GLOBALS['include_urlparts']['path']) && $GLOBALS['include_urlparts']['path']) {
$GLOBALS['include_urlparts']['path'] = dirname($GLOBALS['include_urlparts']['path']);
$GLOBALS['include_urlparts']['path'] = str_replace("\\", '/', $GLOBALS['include_urlparts']['path']);
}
$k = @file_get_contents($url);
$k = preg_replace("/.*<body[^>]*?".">(.*?)<\/body>.*/si", "$1", $k);
$k = str_replace('<?', '<?', $k);
$k = str_replace('?>', '?>', $k);
$k = str_replace('<%', '<%', $k);
$k = str_replace('%>', '%>', $k);
//$k = preg_replace_callback('/(href|src|action)=[\'|"](.*?)[\'|"]/i', 'make_absoluteURL', $k);
$k = preg_replace_callback('/(href|src|action)=[\'|"]{0,1}(.*?)[\'|"]{0,1}( .*?){0,1}>/i', 'make_absoluteURL', $k);
$GLOBALS['include_urlparts'] = '';
}
return $k;
}
// -------------------------------------------------------------
and REPLACE with:
Code: Select all
// -------------------------------------------------------------
function include_url($url) {
// include given URL but only take content between <body></body>
$k = '';
$url = trim($url);
if($url && function_exists('file_get_contents')) {
$GLOBALS['include_urlparts'] = parse_url($url);
if(isset($GLOBALS['include_urlparts']['path']) && $GLOBALS['include_urlparts']['path']) {
$GLOBALS['include_urlparts']['path'] = dirname($GLOBALS['include_urlparts']['path']);
$GLOBALS['include_urlparts']['path'] = str_replace("\\", '/', $GLOBALS['include_urlparts']['path']);
}
$k = @file_get_contents($url);
$k = preg_replace("/.*<body[^>]*?".">(.*?)<\/body>.*/si", "$1", $k);
$k = str_replace('<?', '<?', $k);
$k = str_replace('?>', '?>', $k);
$k = str_replace('<%', '<%', $k);
$k = str_replace('%>', '%>', $k);
//$k = preg_replace_callback('/(href|src|action)=[\'|"](.*?)[\'|"]/i', 'make_absoluteURL', $k);
$k = preg_replace_callback('/(href|src|action)=[\'|"]{0,1}(.*?)[\'|"]{0,1}( .*?){0,1}>/i', 'make_absoluteURL', $k);
$GLOBALS['include_urlparts'] = '';
}
return $k;
}
// -------------------------------------------------------------
function myRT1($rtinfo) {
$dateImage = '';
$rtinfo = explode(',', $rtinfo);
$startDate = strtotime($rtinfo[0]);
$timeout = isset($rtinfo[1]) ? intval($rtinfo[1]) : 0;
$timeout = $timeout * 24 * 3600;
if(time() - $timeout < $startDate) {
$dateImage = '<img src="picture/myRT1/'.$rtinfo[2].'" alt="'.$rtinfo[0].'" border="0">';
}
return $dateImage;
}
// -------------------------------------------------------------
How we use the tag with articles?
Posted: Tue 4. Apr 2006, 13:15
by Nik2004
Thank you all guys for your prompt reply and for all the support.
I have done these changes, then placed the tag in the category title, and it works! Great.
Yet, how I can use the tag (or modify something) so that the "NEW" icon is automatically placed next to ALL articles (that satisfy a date condition of course) included in a category WITHOUT having to modify the title of each?
In essence, what I would like to do is to automatically make all articles include in their title the {D:...} tag with start date the last_edit_date of each article. What should I do???
I would like to have the icon displayed next to article title in the category list of articles (which is always displayed when a visitor goes to the category page and also in artlicle lists produced by the following tag: {NEWCATID:X:X}.
Posted: Tue 4. Apr 2006, 22:56
by DeXXus
Do you mean like was suggested by OliverG for applying GT Mod to all article titles??
http://www.phpwcms.de/forum/viewtopic.php?p=23450#23450
{D:...} In all article titles
Posted: Wed 5. Apr 2006, 08:37
by Nik2004
Thanks Dexxus,
I see that I can use tags in article templates. Unfortunately, I am using many templates, so I have to modify things in many, I guess. But this is the solution, thanks.
I hope I'll have things working soon.
Can a date parameter be used in {D:...} tag?
Posted: Thu 6. Apr 2006, 22:17
by Nik2004
Please, would someone know: In the {D} tag, for example in {D:2005/9/4,30,newR.gif}, can I use a variable/parameter instead of a particular date?
In particular:
If I use the {D} tag in an article template (in the title) or in:
Code: Select all
$template_default["article"]["title_before"] = '<span class="articleHead">';
$template_default["article"]["title_after"] = ' {D:start_date,30,newR.gif} </span>';
...Can I somehow reference the article date as a start_date in the {D} tag, so that periods of displaying the NEW icon count automatically from the date each article was last edited?
Otherwise, if I use the same hard-coded date in an article template, all articles would appear new for the same period, which is not true.
Thanks for all the help.
Posted: Fri 7. Apr 2006, 00:36
by DeXXus
Just a WILD guess.
I wonder if you could get by with using {DATE_ARTICLE} embedded in your other Rep Tag somehow? Like:
Code: Select all
$template_default["article"]["title_before"] = '<span class="articleHead">';
$template_default["article"]["title_after"] = ' {D:{DATE_ARTICLE},30,newR.gif} </span>';
You would UNDO and REDO like this: (
moves {D:startdate,duration,imagename} Rep Tag "parsing" to right after {DATE_ARTICLE} "parsing" ):
In
"content.func.inc.php"
REPLACE:
Code: Select all
// date replacement
if( ! ( strpos($content["all"],'{DATE_')===false ) ) {
$content["all"] = str_replace('{DATE_LONG}', international_date_format($template_default["date"]["language"], $template_default["date"]["long"]), $content["all"]);
$content["all"] = str_replace('{DATE_MEDIUM}', international_date_format($template_default["date"]["language"], $template_default["date"]["medium"]), $content["all"]);
$content["all"] = str_replace('{DATE_SHORT}', international_date_format($template_default["date"]["language"], $template_default["date"]["short"]), $content["all"]);
$content["all"] = str_replace('{DATE_ARTICLE}', international_date_format($template_default["date"]["language"], $template_default["date"]["article"], $content["article_date"]), $content["all"]);
}
// -------------------------------------------------------------
WITH:
Code: Select all
// date replacement
if( ! ( strpos($content["all"],'{DATE_')===false ) ) {
$content["all"] = str_replace('{DATE_LONG}', international_date_format($template_default["date"]["language"], $template_default["date"]["long"]), $content["all"]);
$content["all"] = str_replace('{DATE_MEDIUM}', international_date_format($template_default["date"]["language"], $template_default["date"]["medium"]), $content["all"]);
$content["all"] = str_replace('{DATE_SHORT}', international_date_format($template_default["date"]["language"], $template_default["date"]["short"]), $content["all"]);
$content["all"] = str_replace('{DATE_ARTICLE}', international_date_format($template_default["date"]["language"], $template_default["date"]["article"], $content["article_date"]), $content["all"]);
}
// -------------------------------------------------------------
// include isNew image at location of replacement tag with format {D:startdate,duration,imagename}
$content["all"] = preg_replace('/\{D:(.*?)\}/ie', 'myRT1("$1")', $content["all"]);
// -------------------------------------------------------------
NOTE: Even just moving to anywhere after the {DATE_ARTICLE} code in "
content.func.inc.php" would suffice.
{DATE_ARTICLE} nested in {D:start_date,duration,image}
Posted: Fri 7. Apr 2006, 09:13
by Nik2004
Thanks DeXXus,
Your trick worked! I did in:
Code: Select all
$template_default["article"]["title_after"] = ' {D:{DATE_ARTICLE},30,new_icon1.gif} </span>';
But the NEW icon appears
only in the full article listing and nowhere else. For example see (I know you cannot read greek, but you'll see what I mean):
http://www.unborn.gr/unborn1/unborn/ind ... 93,0,0,1,0
(the NEW icon appears next to the title).
However the NEW icon does not appear next to the article title in the category:
http://www.unborn.gr/unborn1/unborn/ind ... rentevents (it is the first article, the only one which appears with a summary)
What should I change so that the NEW icon is displayed in the article title when the category is displayed (both when the article is displayed with a summary and when it is displayed only in the list)?
Additionally, the NEW icon is not displayed when a list is displayed using the {NEWCATID:X:X}. See:
http://www.unborn.gr/unborn1/unborn/index.php (it is the article with this title: "8.3.2006 - Ίδρυση του Συλλόγου Προστασίας Αγέννητου Παιδιού Πτολεμαΐδος" (it appears without a NEW icon).
What should I change to make the icon appear here as well?
Also, one question: what is exactly the DATE_ARTICLE? The article_creation_date or the Last_Edit_date?
Posted: Fri 7. Apr 2006, 09:26
by pepe
Have you tried, to put that code:
{D:{DATE_ARTICLE},30,new_icon1.gif}
into the article.tmpl ? Don't now, if it works, but would give it a chance.