Complicated ideas. Possible?
Complicated ideas. Possible?
I should start out by saying I'm fairly new to Serendipity as well as PHP and MySQL. I have some pretty specific ideas of what I'd like to do and am not quite sure if this software will let me do it. I'm willing to put in the work to learn and mess around with things, but paying someone to help isn't totally out of the question either.
Here is what I'd like to accomplish:
- To put together a site where a fairly diverse group of people can write about a variety of subjects, where the navigation and organization is such that it remains intuitive for the readers and simple for the authors to post where it best fits.
- Initially 5-10 authors mostly responsible (not full admin rights, but close) for their own blogs. I want this to be fairly scalable, although I can't imagine there ever being more than 50 authors (probably way less).
- A mostly static front page that acts like a portal but is still running Serendipity so I can easily make posts on the front page (embedded?).
The thing that is absolutely killing my brain is the categorization part. Is it possible to have each author maintain their own blog but still allow the readers to easily browse and see "comedy" or "political" posts from all the authors using the built in categories, or am I asking for trouble? Can I get the individual blog installations (or shared installation) to interact with each other that way?
Would it be better to have one single blog with many authors, and then have a way for the readers to easily find posts by a certain author if they desire?
Also, if I wanted to get the site up and running sooner rather than later and decided to do a normal install, how difficult would it be to convert it over to "embedded" if I came up with a better site design a little ways in the future?
Obviously this isn't the typical blog layout, it is almost more of a newspaper type design where there is one paper, different sections, and many authors. I'm just trying to figure out how to make that work. Any input is much appreciated.
Here is what I'd like to accomplish:
- To put together a site where a fairly diverse group of people can write about a variety of subjects, where the navigation and organization is such that it remains intuitive for the readers and simple for the authors to post where it best fits.
- Initially 5-10 authors mostly responsible (not full admin rights, but close) for their own blogs. I want this to be fairly scalable, although I can't imagine there ever being more than 50 authors (probably way less).
- A mostly static front page that acts like a portal but is still running Serendipity so I can easily make posts on the front page (embedded?).
The thing that is absolutely killing my brain is the categorization part. Is it possible to have each author maintain their own blog but still allow the readers to easily browse and see "comedy" or "political" posts from all the authors using the built in categories, or am I asking for trouble? Can I get the individual blog installations (or shared installation) to interact with each other that way?
Would it be better to have one single blog with many authors, and then have a way for the readers to easily find posts by a certain author if they desire?
Also, if I wanted to get the site up and running sooner rather than later and decided to do a normal install, how difficult would it be to convert it over to "embedded" if I came up with a better site design a little ways in the future?
Obviously this isn't the typical blog layout, it is almost more of a newspaper type design where there is one paper, different sections, and many authors. I'm just trying to figure out how to make that work. Any input is much appreciated.
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Re: Complicated ideas. Possible?
Hi!
Actually, you spotted the most vital problem in this stuff yourself.
If you spin a shared installation, each sub-blog will be on its own database. You will no longer have a "full" blog. For that you would need to install one "full blog" sub-blog, where you need to aggregate all postings of all childblogs. You could do that either by creating a plugin/PHP script that periodically imports all entries from all databases of sub-blogs, or you could use the RSS aggregator plugin from Serendipity. The problem of that will still be, that if someone comments on the "full blog", the comments will NOT be added to the real sub-blog. You would need a seperate PHP script for that to do the job as well.
To sum it up, you'll definitely get some serous headache if you want to solve it with Serendipity like that.
You mention the other option already - use a single blog and have "per author" views. Luckily, Serendipity has that feature built-in.
You can see it for yourself in action here:
http://blog.s9y.org/authors/6-Carl-Galloway
http://blog.s9y.org/authors/3-Garvin
Both are links to one single blog, but only show postings by authors. And you still ahve the usual blog/category navigation to browse the "full blog".
Thus, you'd have the "portal frontpage" also easily, which displays just certain posts. Using the "Extended properties for entries" plugin, you have the ability to hide specific entries from the frontpage, if you ever like to exclude some.
"Embedding" a serendipity blog into a static PHP frontpage can be done after a normal installation. It's basically just an add on, or in the even better case just an external PHP script that uses the Serendipity API to fetch articles. So you won't block your way of embedding if you start with a normal installation.
Of course I'm biased towards Serendipity, but I think that for a community portal you might want to look into alternatives at hand. Drupal should be the thing most close to your requirements, so you should go and check it out. Serendipity is really focussed at providing the best blogging application, but Drupal's focus is on a community portal CMS, for which they have more experience. Drupal is IMHO not so intuitive like s9y and IMHO has a harder API to learn and a more obfuscated technique, but you should always evaluate the options you have.
If you come to choose Serendipity for your tool, you can be sure we're here to help you as good as we can!
Best regards,
Garvin
Actually, you spotted the most vital problem in this stuff yourself.
If you spin a shared installation, each sub-blog will be on its own database. You will no longer have a "full" blog. For that you would need to install one "full blog" sub-blog, where you need to aggregate all postings of all childblogs. You could do that either by creating a plugin/PHP script that periodically imports all entries from all databases of sub-blogs, or you could use the RSS aggregator plugin from Serendipity. The problem of that will still be, that if someone comments on the "full blog", the comments will NOT be added to the real sub-blog. You would need a seperate PHP script for that to do the job as well.
To sum it up, you'll definitely get some serous headache if you want to solve it with Serendipity like that.
You mention the other option already - use a single blog and have "per author" views. Luckily, Serendipity has that feature built-in.
You can see it for yourself in action here:
http://blog.s9y.org/authors/6-Carl-Galloway
http://blog.s9y.org/authors/3-Garvin
Both are links to one single blog, but only show postings by authors. And you still ahve the usual blog/category navigation to browse the "full blog".
Thus, you'd have the "portal frontpage" also easily, which displays just certain posts. Using the "Extended properties for entries" plugin, you have the ability to hide specific entries from the frontpage, if you ever like to exclude some.
"Embedding" a serendipity blog into a static PHP frontpage can be done after a normal installation. It's basically just an add on, or in the even better case just an external PHP script that uses the Serendipity API to fetch articles. So you won't block your way of embedding if you start with a normal installation.
Of course I'm biased towards Serendipity, but I think that for a community portal you might want to look into alternatives at hand. Drupal should be the thing most close to your requirements, so you should go and check it out. Serendipity is really focussed at providing the best blogging application, but Drupal's focus is on a community portal CMS, for which they have more experience. Drupal is IMHO not so intuitive like s9y and IMHO has a harder API to learn and a more obfuscated technique, but you should always evaluate the options you have.
If you come to choose Serendipity for your tool, you can be sure we're here to help you as good as we can!
Best regards,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Hi!
I'd be interested in your evaluation results! If there's anything specific to learn for Serendipity to change, I'd love to know what.
Best regards,
Garvin
I'd be interested in your evaluation results! If there's anything specific to learn for Serendipity to change, I'd love to know what.
Best regards,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Seems to me the community blogging aspect could be handled with category-based "sub-blogs" and tag-based "topics". As long as the entries were properly tagged, you could find "humor" articles by any author.
Of course, something designed for the task would probably work better, but it seems you could use Serendipity to achieve what you want.
Of course, something designed for the task would probably work better, but it seems you could use Serendipity to achieve what you want.
-
Kruno Tisljar
- Posts: 4
- Joined: Thu Jan 18, 2007 9:27 pm
Re: Complicated ideas. Possible?
That is not quite true, my Internet presence provider gives me one database, but with tabele prefix I can install everything I like and as many times as I like. That is actually better. For example, you can merge user tables in different programs since they are all similar... ?garvinhicking wrote:Hi!
....... each sub-blog will be on its own database. You will no longer have a "full" blog. For that you would need to install one "full blog" sub-blog.......
Well, true enough: that's the way I run my test blogs.
Nevertheless, the different table prefixes have an effect equivalent to different databases: the s9y code only does the search through a single blog's tables, ignoring tables from other blogs because they've got different names.
It could be done, but it would require a core code update. And we've avoided the "multiple-blog" thing for a variety of pretty good reasons.
Nevertheless, the different table prefixes have an effect equivalent to different databases: the s9y code only does the search through a single blog's tables, ignoring tables from other blogs because they've got different names.
It could be done, but it would require a core code update. And we've avoided the "multiple-blog" thing for a variety of pretty good reasons.
-
Kruno Tisljar
- Posts: 4
- Joined: Thu Jan 18, 2007 9:27 pm
blog system?
Code: Select all
<?
unset($PrefixTablice, $ImeBlogaFile, $yummyy, $yummy, $Vrijeme, $Kod, $SljedeciTjedan,$KorisnickoIme,$KorisnickoCijeloIme,$KorisnickiEmail,$KorisnickaLozinka,$ImeBloga,$OpisBloga,$Moby);
$KorisnickoIme=$KorisnickoCijeloIme=$KorisnickiEmail=$_POST['textfield4'];
$KorisnickaLozinka=$_POST['textfield3'];
$ImeBloga=$_POST['textfield5'];
$OpisBloga=$_POST['textfield6'];
$Moby=$_POST['textfield7'];
function provjera($ProvjeriImeBlogaFile, $ProvjeriKorisnickiEmail)
{
$link = mysql_connect('localhost', 'rudes', '');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$r = mysql_query("USE rudes") or die(mysql_error());
$r = mysql_query("SET NAMES utf8") or die(mysql_error());
$query = sprintf("SELECT count(*) FROM amlog WHERE MlogImeBlogaFile='%s'",
mysql_real_escape_string($ProvjeriImeBlogaFile));
// Perform Query
$result = mysql_query($query);
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
mysql_free_result($result);
if( $row[0]==1) die("greska");
$query = sprintf("SELECT count(*) FROM amlog WHERE MlogKorisnickiEmail='%s'",
mysql_real_escape_string($ProvjeriKorisnickiEmail));
// Perform Query
$result = mysql_query($query);
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
mysql_free_result($result);
if( $row[0]==1) die("greska");
mysql_close($link);
return true;
}
function mysql_import_file($filename, &$yummy, &$PrefixTablice, $Kod, &$errmsg)
{
// print_r($yummy);
/* Read the file */
$lines = file($filename);
if(!$lines)
{
$errmsg = "cannot open file $filename";
return false;
}
$scriptfile = false;
/* Get rid of the comments and form one jumbo line */
foreach($lines as $line)
{
$line = trim($line);
if(!ereg('^--', $line))
{
$scriptfile.="\n".$line;
}
}
if(!$scriptfile)
{
$errmsg = "no text found in $filename";
return false;
}
$healthy = array("/blog/", "rudes" ,"John Doe", "8ec589b23d15565afdad185f82b22353", "john@example.com", "JohnDoes personal blog", "My little place on the web...", "webmajstorrudes.info");
$scriptfile = str_replace($healthy, $yummy, $scriptfile);
$scriptfile = str_replace("mlog_test", &$PrefixTablice, $scriptfile);
/* Split the jumbo line into smaller lines */
// echo $scriptfile;
$queries = explode(";\n", $scriptfile);
/* Run each line as a query */
$link = mysql_connect('localhost', 'rudes', '');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$r = mysql_query("USE rudes") or die(mysql_error());
$r = mysql_query("SET NAMES utf8") or die(mysql_error());
/* Run each line as a query */
unset($queries[321]);
// print_r($queries);
foreach($queries as $query)
{
$query = trim($query);
if($query == "") { continue; }
if(!mysql_query($query.';'))
{
$errmsg = "query ".$query." failed";
return false;
}
}
$r = "INSERT INTO `amlog` ( `amlog_id` , `MlogImeBlogaFile` , `MlogKorisnickiEmail` , `MlogUrlProvjere` , `MlogOmogucen` ) VALUES ( NULL , '" . $yummy[0] . "', '" . $yummy[4] . "', 'http://mlog.hr/provjera/" . $Kod . "', '');";
if(!mysql_query($r))
{
die(mysql_error());
}
mysql_close($link);
return true;
}
function fajlovi($ImeBlogaFile, $PrefixTablice, $Kod)
{
mkdir ($ImeBlogaFile, 0777);
mkdir ($ImeBlogaFile. "/archives",0777);
mkdir ($ImeBlogaFile. "/templates_c",0777);
mkdir ($ImeBlogaFile. "/uploads",0777);
mkdir ("potvrdi/" . $Kod,0777);
symlink ( "../blog/bundled-libs", $ImeBlogaFile . "/bundled-libs");
symlink ( "../blog/deployment", $ImeBlogaFile . "/deployment");
symlink ( "../blog/docs", $ImeBlogaFile . "/docs");
symlink ( "../blog/htmlarea", $ImeBlogaFile . "/htmlarea");
symlink ( "../blog/include", $ImeBlogaFile . "/include");
symlink ( "../blog/lang", $ImeBlogaFile . "/lang");
symlink ( "../blog/plugins", $ImeBlogaFile . "/plugins");
symlink ( "../blog/sql", $ImeBlogaFile . "/sql");
symlink ( "../blog/templates", $ImeBlogaFile . "/templates");
symlink ( "../blog/comment.php", $ImeBlogaFile . "/comment.php");
symlink ( "../blog/exit.php", $ImeBlogaFile . "/exit.php");
symlink ( "../blog/index.php", $ImeBlogaFile . "/index.php");
symlink ( "../blog/rss.php", $ImeBlogaFile . "/rss.php");
symlink ( "../blog/mlog.css.php", $ImeBlogaFile . "/mlog.css.php");
symlink ( "../blog/mlog_admin.php", $ImeBlogaFile . "/mlog_admin.php");
symlink ( "../blog/mlog_admin_image_selector.php", $ImeBlogaFile . "/mlog_admin_image_selector.php");
symlink ( "../blog/mlog_config.inc.php", $ImeBlogaFile . "/mlog_config.inc.php");
symlink ( "../blog/mlog_define.js.php", $ImeBlogaFile . "/mlog_define.js.php");
symlink ( "../blog/mlog_editor.js", $ImeBlogaFile . "/mlog_editor.js");
symlink ( "../blog/wfwcomment.php", $ImeBlogaFile . "/wfwcomment.php");
symlink ( "../blog/.htaccess", $ImeBlogaFile . "/.htaccess");
chmod($ImeBlogaFile, 0777); // octal; correct value of mode
chmod($ImeBlogaFile ."/archives", 0777); // octal; correct value of mode
chmod($ImeBlogaFile ."/templates_c", 0777); // octal; correct value of mode
chmod($ImeBlogaFile ."/uploads", 0777); // octal; correct value of mode
chmod("potvrdi/" . $Kod,0777);
$postavke = str_replace("mlog__", $PrefixTablice, file_get_contents('blog/mlog_config_local.inc.php'));
$filename = $ImeBlogaFile . "/mlog_config_local.inc.php";
if (!$handle = fopen($filename, 'w')) {
echo "Cannot open file ($filename)";
exit;
}
elseif (fwrite($handle, $postavke) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
fclose($handle);
chmod($ImeBlogaFile ."/mlog_config_local.inc.php", 0777); // octal; correct value of mode
$DodajBlog = "\nwget \"http://www.mlog.hr/" . $ImeBlogaFile . "/index.php?/plugin/popfetcher_poll\"";
$filename = "../MOBYFETCH/BLOGOVI";
if (!$handle = fopen($filename, 'a')) {
echo "Cannot open file ($filename)";
exit;
}
elseif (fwrite($handle, $DodajBlog) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
fclose($handle);
$filename = "potvrdi/" . $Kod . "/index.php";
if (!$handle = fopen($filename, 'a')) {
echo "Cannot open file ($filename)";
exit;
}
elseif (fwrite($handle, $DodajBlog) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
fclose($handle);
}
$org = array("@","."," ","Š","Đ","Ž","Ć","Č","š","đ","ž","ć","č");
$nov = array("","","_","S","D","Z","C","C","s","d","z","c","c");
$ImeBlogaFile = str_replace( $org, $nov, $ImeBloga);
if (!provjera("/$ImeBlogaFile/",$KorisnickiEmail)) {
echo "greška";
}
else
{
$Vrijeme=time();
$Kod = rand(1000,9999) . $Vrijeme;
$SljedeciTjedan = date('d. m. Y.', $Vrijeme + (7 * 24 * 60 * 60));
$vart = str_replace( ".", "",str_replace( "@", "", $KorisnickoIme));
$PrefixTablice = "mlog_";
$PrefixTablice .= $vart;
$PrefixTablice .= "_";
$yummyy = array("/$ImeBlogaFile/", $KorisnickoIme, $KorisnickoCijeloIme, md5($KorisnickaLozinka), $KorisnickiEmail, $ImeBloga, $OpisBloga, $Moby);
//print_r ($yummyy);
//echo "\n\n\n\n";
mysql_import_file('s.sql', $yummyy, $PrefixTablice, $Kod, $errmsg);
fajlovi($ImeBlogaFile, $PrefixTablice . "_",$Kod);
mail($KorisnickiEmail,"mlog.hr: potvrda e-mail adrese","Vi, ili netko drugi s IP adrese " . $_SERVER['REMOTE_ADDR'] . ", ste otvorili blog pod imenom \"$ImeBloga\" i adresom http://mlog.hr/$ImeBlogaFile s ovom e-mail adresom na mlog.hr servisu.\n\nKako biste potvrdili da je ovaj blog uistinu vaš u vašem pregledniku otvorite sljedeću poveznicu:\n\nhttp://mlog.hr/potvrdi/$Kod\n\nAko ovo *niste* vi, nemojte otvarati poveznicu.\n\nValjanost ovog potvrdnog koda istječe sljedei tjedan - $SljedeciTjedan." ,"From: mlog.hr <mlog@mlog.hr>\nContent-Type: text/plain; charset=UTF-8");
unset($PrefixTablice, $yummyy, $yummy, $Vrijeme, $Kod, $SljedeciTjedan);
header("Location: http://www.mlog.hr/" . $ImeBlogaFile ."/");
}
?>After spending some time playing around with Drupal I think that s9y actually fits my needs better and will take far less tweaking and administration for what I'm planning on doing.
I think the site organization can be accomplished via categories simply enough, and now that I know that things can also be viewed by author it makes things much simpler as well.
I still have no idea what I'm doing, but I'm heading in the right direction I guess. I have a group of quite disgruntled "popular" myspace bloggers (including myself) that need a better place...so hopefully motivation can make up for my lack of knowledge.
I think the site organization can be accomplished via categories simply enough, and now that I know that things can also be viewed by author it makes things much simpler as well.
I still have no idea what I'm doing, but I'm heading in the right direction I guess. I have a group of quite disgruntled "popular" myspace bloggers (including myself) that need a better place...so hopefully motivation can make up for my lack of knowledge.
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Hi!
Good to hear about that. Let us know how you progress - I think playing/learning by doing is the most easy way with Serendipity
Best regards,
Garvin
Good to hear about that. Let us know how you progress - I think playing/learning by doing is the most easy way with Serendipity
Best regards,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Just checking back with a couple questions. Things are going well for the most part, and I'm getting close to telling people about the site.
One thing that I'm having trouble with is the static pages. It is putting a box with links to every other static page I created towards the top of each static page, and I definitely don't want that (especially since I set a static page to be the front page).
I set "show childpages" as "no", and played around with the order of the plugins to make sure static pages was near the top. No change, even after deleting and recreating the pages.
You can see it here: http://www.horriblybrilliant.com
The other thing that I foresee as potentially being problematic is that it appears that unless I require everyone to register to make comments, that they can pick any display name that they want. That would allow anyone to pose as the original author in the comments. Can I prevent people from choosing author names so that the author's comments are easily identifiable? A lot of the things that will be posted on my site will be designed to prompt comments and discussion....I'd hate for that to become a problem. I'd like to avoid forcing people to register, as that deters a lot of people from getting in on the action.
Those are the only things I can think of at the moment. I'm sure I'll come up with more though.
One thing that I'm having trouble with is the static pages. It is putting a box with links to every other static page I created towards the top of each static page, and I definitely don't want that (especially since I set a static page to be the front page).
I set "show childpages" as "no", and played around with the order of the plugins to make sure static pages was near the top. No change, even after deleting and recreating the pages.
You can see it here: http://www.horriblybrilliant.com
The other thing that I foresee as potentially being problematic is that it appears that unless I require everyone to register to make comments, that they can pick any display name that they want. That would allow anyone to pose as the original author in the comments. Can I prevent people from choosing author names so that the author's comments are easily identifiable? A lot of the things that will be posted on my site will be designed to prompt comments and discussion....I'd hate for that to become a problem. I'd like to avoid forcing people to register, as that deters a lot of people from getting in on the action.
Those are the only things I can think of at the moment. I'm sure I'll come up with more though.
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Hi!
HTH,
Garvin
The output of staticpages can be fully templated, so you could just copy the plugin_staticpage.tpl file to your current template directory and modify that. There you can remove the navigation box!One thing that I'm having trouble with is the static pages. It is putting a box with links to every other static page I created towards the top of each static page, and I definitely don't want that (especially since I set a static page to be the front page).
You can use the "User-Self Registration" plugin to enforce people not being able to use "identity theft". You can disable the other requirements/features of that plugin, so that you only use that restriction if you want.The other thing that I foresee as potentially being problematic is that it appears that unless I require everyone to register to make comments, that they can pick any display name that they want.
HTH,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/