Page 1 of 1

Volgende en vorige artikel in CGBlog binnen categorie

Posted: Thu Mar 16, 2017 3:10 pm
by timdebuurman
Hoi,

In de detail sjabloon van CGBlog staat al een mooie code om naar het Vorige en Volgende artikel te gaan.
Ik wil dit echter alleen binnen de huidige categorie doen en standaard gaat hij alle artikelen langs.

Dit is de code:

Code: Select all

{$article_id=$entry->id}
{* find the id of the next viewable blog article (by post date) *}
{cgblog_relative_article article=$article_id dir='next' assign='next_id'}
{if $next_id}

  <a  class="photonav" href="{module_action_link module=CGBlog action=detail articleid=$next_id urlonly=1}">Vorige foto</a>
{else}
<span  class="photonav" href="{module_action_link module=CGBlog action=detail articleid=$next_id urlonly=1}">Vorige foto</span>
{/if}


{* find the id of the prev viewable blog article (by post date) *}

{cgblog_relative_article article=$article_id dir='prev' assign='prev_id'}
{if $prev_id}

  <a class="photonav" href="{module_action_link module=CGBlog action=detail articleid=$prev_id urlonly=1}">Volgende foto</a>
{else}
<span class="photonav" href="{module_action_link module=CGBlog action=detail articleid=$prev_id urlonly=1}">Volgende foto</span>
{/if}
Eerst even geprobeerd om 'category=...' toe te voegen, maar dat doet niets.

Iemand een idee?

gr Tim

Re: Volgende en vorige artikel in CGBlog binnen categorie

Posted: Thu Mar 16, 2017 3:17 pm
by Rolf
Een beetje omslachtiger, maar ik *denk* dat het bij deze methode wel werkt:
https://www.cmscanbesimple.org/blog/add ... tail-pages

Ik heb het eens gebruikt bij de Company Directory module en daar werkt het in ieder geval.

Re: Volgende en vorige artikel in CGBlog binnen categorie

Posted: Wed Mar 22, 2017 11:24 am
by Gregor
Binnen mijn site (http://www.uisge-beatha.eu het ik het ooit op deze manier opgelost:

Code: Select all

 <h5>Artikelen binnen dezelfde categorie</h5>
{prev_next pageid=$page_id currid=$entry->id currdate=$entry->postdate}
<div class="prevnext">
   {if $cgblog_next_url}<a href="{$cgblog_next_url}"><< Vorig artikel in deze categorie</a> | {/if}
   {if $cgblog_prev_url}<a href="{$cgblog_prev_url}">Volgend artikel in deze categorie >></a>{/if }
</div>

Re: Volgende en vorige artikel in CGBlog binnen categorie

Posted: Thu Mar 23, 2017 4:43 pm
by timdebuurman
Hoi Gregor,

Het lijkt er op dat je dan nog een UDT hebt genaamd 'prev_next' waarnaar de tag verwijst?

gr Tim

Re: Volgende en vorige artikel in CGBlog binnen categorie

Posted: Thu Mar 23, 2017 5:04 pm
by Gregor
Wel handig als je die dan ook hebt ;)

Code: Select all

$gCms = cmsms();
$db = cmsms()->GetDb();    // changed this line.
$cgblog = cms_utils::get_module('CGBlog');  // changed this line.

// call from cgblog detail_template: {prev_next pageid=$page_id currid=$entry->id currdate=$entry->postdate}
$pageid = ($_REQUEST['pageid']) ? $_REQUEST['pageid'] : $params['pageid'];
$currid = ($_REQUEST['currid']) ? $_REQUEST['currid'] : $params['currid'];  // added this line.
$currdate = $params['currdate'];
if(!$currdate) return;

// call from cgblog detail_template: {prev_next pageid=$page_id currid=$entry->id currdate=$entry->postdate}

// For performance, added an index over two columns on ".cms_db_prefix()."module_cgblog_blog_categories

// get all CGBlog articles sorted by ascending date
$query_next = "
SELECT cgblog_id, cgblog_title
FROM ".cms_db_prefix()."module_cgblog
WHERE cgblog_date > ?
AND status = 'published'
AND (end_time >= CURRENT_DATE OR end_time IS NULL) 
AND cgblog_id IN
   ((SELECT blog_id
   FROM ".cms_db_prefix()."module_cgblog_blog_categories
   WHERE category_id IN
     (SELECT category_id 
     FROM ".cms_db_prefix()."module_cgblog_blog_categories
     WHERE blog_id = ".$currid.")))
ORDER BY cgblog_date
ASC LIMIT 1";


$result_next =& $db->GetRow($query_next,array($currdate)); 

$query_prev = "
SELECT cgblog_id, cgblog_title
FROM ".cms_db_prefix()."module_cgblog
WHERE cgblog_date < ?
AND status = 'published'
AND (end_time >= CURRENT_DATE OR end_time IS NULL) 
AND cgblog_id IN
   ((SELECT blog_id
   FROM ".cms_db_prefix()."module_cgblog_blog_categories
   WHERE category_id IN
     (SELECT category_id 
     FROM ".cms_db_prefix()."module_cgblog_blog_categories
     WHERE blog_id = ".$currid.")))
ORDER BY cgblog_date
DESC LIMIT 1";

/* //echo "next-p = ";
//echo "$query_prev";

// end of get all CGBlog items */


$result_prev = &$db->GetRow($query_prev,array($currdate));
/* echo "prev = "; 
print_r($result_prev); */
//date -> id


if($result_next['cgblog_id']) {
$aliased_title = munge_string_to_url($result_next['cgblog_title']);
$prettyurl = 'logboek/' . $result_next["cgblog_id"] .'/'.$pageid."/$aliased_title";
$next_uri = $cgblog->CreateLink('cntnt01', 'detail', $pageid, '', array('articleid' => $result_next["cgblog_id"]) ,'', true, false, '', true, $prettyurl);
}else{
$next_uri = "";
}


if($result_prev['cgblog_id']) {
$aliased_title = munge_string_to_url($result_prev['cgblog_title']);
$prettyurl = 'logboek/' . $result_prev["cgblog_id"] .'/'.$pageid."/$aliased_title";
$prev_uri = $cgblog->CreateLink('cntnt02', 'detail', $pageid, '', array('articleid' => $result_prev["cgblog_id"]) ,'', true, false, '', true, $prettyurl);
}else{
$prev_uri = "";
}

$smarty->assign('cgblog_next_url', $next_uri);
$smarty->assign('cgblog_next_text', $cgblog->lang("next"));
$smarty->assign('cgblog_prev_url', $prev_uri);
$smarty->assign('cgblog_prev_text', $cgblog->lang("prev"));

Re: Volgende en vorige artikel in CGBlog binnen categorie

Posted: Sat Mar 25, 2017 4:43 pm
by Rolf
Rolf wrote:Een beetje omslachtiger, maar ik *denk* dat het bij deze methode wel werkt:
https://www.cmscanbesimple.org/blog/add ... tail-pages

Ik heb het eens gebruikt bij de Company Directory module en daar werkt het in ieder geval.
Ik gebruik in het sjabloon 2 extra regels zie ik nu:

Code: Select all

{foreach from=$items item=the_entry}
    {if $the_entry->hier_id|trim == $currentHIER} <------
        {capture append='allIDs'}{$the_entry->id}{/capture}
        {capture append='allURLs'}{$the_entry->detail_url}{/capture}
    {/if} <------
{/foreach}

Re: Volgende en vorige artikel in CGBlog binnen categorie

Posted: Thu Mar 30, 2017 10:18 am
by timdebuurman
@Gregor

Het is gelukt met je UDT en code, THX

Re: Volgende en vorige artikel in CGBlog binnen categorie

Posted: Thu Mar 30, 2017 10:56 am
by Gregor
Graag gedaan Tim. Misschien wel goed nog even mee te lezen in dit topic viewtopic.php?f=13&t=76404&p=332673&e=332673 ivm problemen om PHP 7 draaiend te krijgen.