Jump to content

Question about comparing Pagefields of a Page and sorting them


Michael Steinmann
 Share

Recommended Posts

Hello everyone,

i guess my php knowledge is not good enough to find a solution for the following problem:

I'm building a website where i have projects. Each project has tags like "webdesign, responsive, cms, print, flyer" etc. At the end of a project i want to recommend other projects, which have similar tags. I want to limit the recommendations to three other projects sorted by the hightest amount of same tags.

This is how far i got:

I'm using

<?php $interessantes = $pages->find("tags=$page->tags, id!=$page->id"); ?>

to find other projects with the same tags, excluding the page i'm already on.

Then i'm using three foreach-functions to go through the projects i found, the tags they have and compare them with the tags of the project i'm looking at. If i have two identical tags, i count up a variable.

<?php

// Projects i have found
foreach($interessantes as $interessant):

	$i = 0;

	// Tags of the projects i have found
	foreach($interessant->tags as $tag):

		// Tags of the project i'm looking at
		foreach($page->tags as $tagreferenz):

			if($tag == $tagreferenz):

				$i++;

			endif;

		endforeach;

	endforeach;

endforeach; 

?>

You can see what it looks like in the screenshot with a bit of HTML. I marked the tags of the current project green and the identical tags of other projects red with the amount of hits below. So in this example i would want to have three projects with three similar tags and get rid of those with only two and one.

59638598b25e1_Bildschirmfoto2017-07-10um15_28_35.thumb.png.e4da7ff689bac07de52411559deaf8a1.png

I guess i have to put my pages into an array (with the number of hits?), sort them and echo them with "limit=3"? Unfortunately i have no idea how to do this. You probably have an even better/shorter solution. Links to other topics are welcome to and i'll try to get my head around it.

If you need further explanation, i'll try my best.

Best regards

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...