vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   [cinq's vbArticles v1.0 Hack] - The development process (https://vborg.vbsupport.ru/showthread.php?t=69906)

cinq 12-22-2004 12:45 AM

thks HiDeo :)

infiniterb 12-30-2004 09:13 PM

Looking good. There's a dire need for a good articles system.

cinq 01-04-2005 01:11 PM

1 Attachment(s)
Well, some screenshots on my progress.

Backend :

1: options galore ( 3/4 of the list shown with more expected )
2: articles management ( featured/orphaned/draft )
3: view all articles ( plus search for article )
4: adding an article ( wysiwyg is my paid script though )
5: category manager
6: adding category ( with category icon disabled - can be toggled at vboptions )

cinq 01-04-2005 01:15 PM

1 Attachment(s)
Some front end shots :

7: Main article home page
8: article view

cinq 01-04-2005 01:25 PM

Quote:

Originally Posted by +d-cipher
I rarely post, but I'd like to throw in a few suggestions/ideas....

Thanks for the feedback, +d-cipher :)

1. Pagination is in place, with options to set the delimiting field ( for article content to break into pages ) as well as number of articles shown per category before breaking into pages too.

2. Not going to do that. Can be changed through templates though.

3. Article images and category images implemented. Category images are an option ( can be toggled on or off )

4. Plan to set access/add article/comment/rate by usergroup permissions. Not done yet but something I will add.

5. I don't plan to do this. I think linear rows is still neater. Also comments can be limited in number ( in options ) to restrict number shown in an article before a link to click to view all is shown.

6. I would like this too. But I have no idea where to begin, in order to allow for custom fields. Any tips, anyone ?

cinq 01-05-2005 04:39 AM

Problem Number 1

I would like a similar articles feature as part of this hack.
This means that, when viewing an article, at the bottom of the page, there should list the titles ( with links of course ) of articles which have similar content to what you are currently reading.

There are a couple of ways to implement this.
These are some of the ways I thought of :


- When adding/editting an article in the AdminCP, you manually select all related articles via a multiple dropdown list. However, this presents a problem. Going through a long list of articles just to select a couple of related ones is not easy.

- Let the system auto search for related articles.
  1. use the title of the current article you are reading to provide the search keywords to search the title and contents of all other articles in the database. A problem with this is that common words in the current article ( eg. of, in etc. ) get searched too and may turn up too many irrelevant results.
  2. enter keywords when adding/editting articles, and these keywords would be used as the search keywords to search the title and contents of all other articles in the database.

Are there any other suggestions as to how this feature can be implemented ? :)

cinq 01-05-2005 04:58 AM

1 Attachment(s)
Problem Number 2

I implemented a 'Previous article Next article' feature at the top of each article page which provides an easy means to quickly navigate to another article.

This is the code currently in place:
PHP Code:

# previous and next article links
$nextone $artid+1;
$chknextonequery $DB_site->query("SELECT articles_articleid FROM " TABLE_PREFIX "articles_article WHERE articles_articleid=$nextone");
if(
$DB_site->num_rows($chknextonequery)>0)
    {
        
$nextarticle 1;
    }
else
    {
        
$nextarticle 0;
    }

$previousone $artid-1;
$chkpreonequery $DB_site->query("SELECT articles_articleid FROM " TABLE_PREFIX "articles_article WHERE articles_articleid=$previousone");
if(
$DB_site->num_rows($chkpreonequery)>0)
    {
        
$prearticle 1;
    }
else
    {
        
$prearticle 0;
    } 

The template where it appears :
Code:

<span class="smallfont" style="float:$stylevar[right]">
<if condition="$prearticle==1">
<a href="articles.php?$session[sessionurl]action=viewarticle&artid=$previousone">< Previous Article</a></if>
<if condition="$nextarticle==1 && $prearticle==1">
&nbsp;&nbsp;|&nbsp;&nbsp;
</if>
<if condition="$nextarticle==1">
<a href="articles.php?$session[sessionurl]action=viewarticle&artid=$nextone">Next Article ></a></if>
</span>

Now this code works fine, BUT it assumes that all the rows in the database for articles are present in running order. eg. articleid=1,2,3,4....,100.. It presents a problem when there is a missing articleid in between. for eg. articleid=1,2,3,5,8,10,...,100...

How can I change things to make this work ?
Also if possible combine queries ?

rake 01-05-2005 06:52 AM

Quote:

Originally Posted by cinq
Problem Number 1

I would like a similar articles feature as part of this hack.
This means that, when viewing an article, at the bottom of the page, there should list the titles ( with links of course ) of articles which have similar content to what you are currently reading.

There are a couple of ways to implement this.
These are some of the ways I thought of :


- When adding/editting an article in the AdminCP, you manually select all related articles via a multiple dropdown list. However, this presents a problem. Going through a long list of articles just to select a couple of related ones is not easy.

- Let the system auto search for related articles.
  1. use the title of the current article you are reading to provide the search keywords to search the title and contents of all other articles in the database. A problem with this is that common words in the current article ( eg. of, in etc. ) get searched too and may turn up too many irrelevant results.
  2. enter keywords when adding/editting articles, and these keywords would be used as the search keywords to search the title and contents of all other articles in the database.

Are there any other suggestions as to how this feature can be implemented ? :)

For mysql 3 users: Research the LIKE syntax and find a way to implement it (for example: split thread title into individual words, filter out words that consist of less than 4 characters, then loop through the remaining words and make a list of conditions: OR title LIKE '%$word%' )

For mysql 4 users: Research the MATCH ... AGAINST syntax and you're all set.

And, if you really want to take it to the next level, there was a function that could produce equally sounding words, so you could even search for miswritten words. How cool is that? You should look that up, i forgot it's name..

rake 01-05-2005 06:57 AM

Quote:

Originally Posted by cinq
Problem Number 2

I implemented a 'Previous article Next article' feature at the top of each article page which provides an easy means to quickly navigate to another article.

This is the code currently in place:
PHP Code:

# previous and next article links
$nextone $artid+1;
$chknextonequery $DB_site->query("SELECT articles_articleid FROM " TABLE_PREFIX "articles_article WHERE articles_articleid=$nextone");
if(
$DB_site->num_rows($chknextonequery)>0)
    {
        
$nextarticle 1;
    }
else
    {
        
$nextarticle 0;
    }

$previousone $artid-1;
$chkpreonequery $DB_site->query("SELECT articles_articleid FROM " TABLE_PREFIX "articles_article WHERE articles_articleid=$previousone");
if(
$DB_site->num_rows($chkpreonequery)>0)
    {
        
$prearticle 1;
    }
else
    {
        
$prearticle 0;
    } 

The template where it appears :
Code:

<span class="smallfont" style="float:$stylevar[right]">
<if condition="$prearticle==1">
<a href="articles.php?$session[sessionurl]action=viewarticle&artid=$previousone">< Previous Article</a></if>
<if condition="$nextarticle==1 && $prearticle==1">
&nbsp;&nbsp;|&nbsp;&nbsp;
</if>
<if condition="$nextarticle==1">
<a href="articles.php?$session[sessionurl]action=viewarticle&artid=$nextone">Next Article ></a></if>
</span>

Now this code works fine, BUT it assumes that all the rows in the database for articles are present in running order. eg. articleid=1,2,3,4....,100.. It presents a problem when there is a missing articleid in between. for eg. articleid=1,2,3,5,8,10,...,100...

How can I change things to make this work ?
Also if possible combine queries ?

if($next = $DB_site->query_first("SELECT whatever FROM table WHERE articles_articleid > $artid ORDER BY artid ASC"))
{
$nextarticle = 1;
}

if($previous = $DB_site->query_first("SELECT whatever FROM table WHERE articles_articleid < $artid ORDER BY artid DESC"))
{
$prearticle = 1;
}


TADA! :D

cinq 01-05-2005 03:10 PM

Quote:

Originally Posted by rake

PHP Code:

if($next $DB_site->query_first("SELECT whatever FROM table WHERE articles_articleid > $artid ORDER BY artid ASC"))
{
    
$nextarticle 1;
}

if(
$previous $DB_site->query_first("SELECT whatever FROM table WHERE articles_articleid < $artid ORDER BY artid DESC"))
{
    
$prearticle 1;



Doesn't seem to do the job, rake :(


All times are GMT. The time now is 11:11 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.02482 seconds
  • Memory Usage 1,781KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (3)bbcode_php_printable
  • (4)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (3)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete