Forum CMS Made Simple FR

Version complète : Problème de lien suivant, précédent dans les articles
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.

Iwa

Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS: 1.6.x
#~ Nom de l'hébergeur :
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.6.6
#~ Installed Modules:
#~ * CMSMailer: 1.73.14
#~ * FileManager: 1.0.1
#~ * MenuManager: 1.6.2
#~ * ModuleManager: 1.3.1
#~ * News: 2.10.3
#~ * nuSOAP: 1.0.1
#~ * Printing: 1.0.4
#~ * Search: 1.6.1
#~ * ThemeManager: 1.1.1
#~ * TinyMCE: 2.5.5
#~ * FormBuilder: 0.6
#~ * TruetypeText: 2.1.1
#~ * CGExtensions: 1.13
#~ * SiteMapMadeSimple: 1.1.3
#~ * EditArea: 0.2.9
#~ * CGSimpleSmarty: 1.4.4
#~ * Captcha: 0.4
#~ * GoogleMaps: 0.1.8
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * max_upload_size: 16000000
#~ * default_upload_permission: 664
#~ * assume_mod_rewrite: true
#~ * page_extension: .html
#~ * internal_pretty_urls: false
#~ * use_hierarchy: true
#~ Php Information:
#~ * phpversion: 5.2.13
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * memory_limit: 128M
#~ * max_execution_time: 30
#~ * safe_mode: Off (Faux)
#~ * session_save_path: /tmp (1777)
#~ * session.use_cookies: On (Vrai)
#~ Server Information:
#~ * Server Api: cgi
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 5.0.90
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
Bonjour à tous,

Après avoir parcouru nombreux postes sur le site en anglais et en français je ne trouve toujours pas de solution. Je me décide donc à poser mes questions.

Mais je vais commencer par le début et poser une question à la fois Wink.

Voilà mon problème.

J'ai une catégorie d'article Offres d'Emplois dans laquelle j'ai rangé plusieurs articles.
Je voudrais à présent faire en sorte que d'un article de type "Offres d'Emplois" je puisse accéder à son prédécesseur ou son successeur.

J'ai tenté d'utiliser cms_selflink dans le gabarit des articles en faisant ceci:

Citation :{cms_selflink dir="previous" label='Précédent '} || {cms_selflink dir='next' label='Suivant'}
Mais voilà ce qu'il se passe :

Screen


Pour mieux comprendre voici un résumé de ma hiérarchie au niveau des Pages :

Citation :1. ...
2. ...
3. ...
4. Etablissements Contenu
.
.
.
4.23.Etablissement W Lien page interne
4.23.1 Activités-Missions Contenu

5. Emplois Contenu

6. Documentation Lien page interne
6.1 Ressources hebdo Contenu
......
Etablissements et Emplois sont des Pages de type Contenu listants respectivement :
-les établissements concernés de A à W (qui sont des pages)
-les offres d'emplois (qui sont des articles de type Offres d'emploi)

Documentation est un Lien interne pointant directement sur la Page de type Contenu Hebdo qui liste tous les Articles de type Ressources hebdomadaires.

Donc voici le comportement de mon cms_selflink :
Il va récupérer en page précédente la toute dernière page des Etablissements c'est à dire le 4.23.1 et pour page suivante la liste des Ressources Hebdo c'est à dire le 6.1.

Comment faire pour faire en sorte que mes attributs dir de cms_selflink se cantonne aux articles de la catégorie dans laquelle je suis (ici Offres d'Emplois)?

Je ne sais pas si tout ce que je raconte est clair, n'hésitez pas à demander des précisions.

Merci d'avance de me lire et d'essayer de m'aider.
re,

> Cms Version: 1.6.6
Il semble que cela ne soit pas une version actuelle
http://www.cmsmadesimple.fr/forum/viewtopic.php?id=2426

Iwa

jce76350 a écrit :re,

> Cms Version: 1.6.6
Il semble que cela ne soit pas une version actuelle
http://www.cmsmadesimple.fr/forum/viewtopic.php?id=2426
Tout à fait, cependant c'est un travail pour mon boulot et je n'ai pas le choix de la version de CMS ms Sad. Mais j'en toucherai deux mots Smile.

Jean le Chauve a écrit :http://forum.cmsmadesimple.org/index.php?topic=33554.0
Merci beaucoup pour le coup de main je vais tenter de me dépatouiller avec tout ça Smile.

Merci pour l'aide en tout les cas, je vous tiens au courant.
Bonjour à tous,

Et excellent année 2012 (j'ai pas eu l'occase de le dire par ici) !
Je me permets de relancer le post, car j'utilise http://forum.cmsmadesimple.org/viewtopic...ic=33554.0 pour afficher les liens précédents et suivants d'un site en V1.9.4.3 sans problème.
Code :
[== Indéfini ==]
if (!function_exists('MyGetModuleInstance'))
{
        function &MyGetModuleInstance($module)
        {
                global $gCms;
                if (isset($gCms->modules[$module]) &&
                        $gCms->modules[$module]['installed'] == true &&
                        $gCms->modules[$module]['active'] == true)
                {
                        return $gCms->modules[$module]['object'];
                }
                // Fix only variable references should be returned by reference
                $tmp = FALSE;
                return $tmp;
        }
}
global $gCms;
$db = &$gCms->db;

$news = MyGetModuleInstance('News');

$pageid = ($_REQUEST['pageid']) ? $_REQUEST['pageid'] : $params['pageid'];
$currdate = $params['currdate'];
if(!$currdate) return;

// get all news articles PUBLISHED sorted by ascending date
$query_next = "SELECT news_id,news_title,news_url FROM  ".cms_db_prefix()."module_news WHERE news_date > ? AND status = 'published' ORDER BY news_date ASC LIMIT 1";
$query_prev = "SELECT news_id,news_title,news_url FROM ".cms_db_prefix()."module_news WHERE news_date < ? AND status = 'published' ORDER BY news_date DESC  LIMIT 1";
$query_uri = "SELECT news_id,news_title,news_url FROM ".cms_db_prefix()."module_news WHERE news_date = ? AND status = 'published' ";

$result_next = &$db->GetRow($query_next,array($currdate));
$result_prev = &$db->GetRow($query_prev,array($currdate));
$result_uri = &$db->GetRow($query_uri,array($currdate));

if($result_next['news_id']) {
if($result_next['news_url']) {
$prettyurl = $result_next["news_url"];
}else{
$aliased_title = munge_string_to_url($result_next['news_title']);
$prettyurl = 'news/' . $result_next["news_id"] .'/'.$pageid."/$aliased_title";}
$next_uri = $news->CreateLink('cntnt01', 'detail', $pageid, '', array('articleid' => $result_next["news_id"])  ,'', true, false, '', true, $prettyurl);
$next_text=$result_next["news_title"];
}else{
$next_uri = "";
}

if($result_prev['news_id']) {
if($result_prev['news_url']) {
$prettyurl = $result_prev["news_url"];
}else{
$aliased_title = munge_string_to_url($result_prev['news_title']);
$prettyurl = 'news/' . $result_prev["news_id"] .'/'.$pageid."/$aliased_title";}
$prev_uri = $news->CreateLink('cntnt02', 'detail', $pageid, '', array('articleid' => $result_prev["news_id"]) ,'', true, false, '', true, $prettyurl);
$prev_text=$result_prev["news_title"];
}else{
$prev_uri = "";
}

if($result_uri['news_id']) {
if($result_uri['news_url']) {
$uri_page= $result_uri["news_url"];
}else{
$aliased_title = munge_string_to_url($result_uri['news_title']);
$uri_page= 'news/' . $result_uri["news_id"] .'/'.$pageid."/$aliased_title";}
}else{
$uri_page = "";
}

$smarty->assign('news_next_url', $next_uri);
$smarty->assign('news_next_text', $next_text);
$smarty->assign('news_prev_url', $prev_uri);
$smarty->assign('news_prev_text', $prev_text);
$smarty->assign('news_uri_page', $uri_page);

La même chose pour un site en V10.2 m'indique :
Code :
[== Indéfini ==]
Fatal error: Call to a member function GetRow() on a non-object in /homez.309/orthodonr/www1/lib/classes/class.usertagoperations.inc.php(260) : eval()'d code on line 35
J'ai cru comprendre qu'il y avait quelque chose à modifier dans le code (cf. http://www.cmsmadesimple.fr/forum/viewto...=3649&p=2), mais j'ai du mal à suivre honnêtement...

Quelqu'un pourrait-il éclairer ma lanterne svp ?

Merci d'avance,
Emmanuelle
http://www.cmsmadesimple.fr/forum/viewto...972#p24972
Ne plus employer
Code :
global $gCms;
Mais
Code :
$gCms = cmsms();
Hello,

Et merci pour ta réponse rapide !
Mais après modif, j'ai toujours le même message d'erreur (Fatal error: Call to a member function GetRow() on a non-object in /homez.309/orthodonr/www1/lib/classes/class.usertagoperations.inc.php(260) : eval()'d code on line 31)...
Code :
[== Indéfini ==]
if (!function_exists('MyGetModuleInstance'))
{
        function &MyGetModuleInstance($module)
        {
                $gCms = cmsms();
                if (isset($gCms->modules[$module]) &&
                        $gCms->modules[$module]['installed'] == true &&
                        $gCms->modules[$module]['active'] == true)
                {
                        return $gCms->modules[$module]['object'];
                }
                // Fix only variable references should be returned by reference
                $tmp = FALSE;
                return $tmp;
        }
}
$gCms = cmsms();
$db = &$gCms->db;

$news = MyGetModuleInstance('News');

$pageid = ($_REQUEST['pageid']) ? $_REQUEST['pageid'] : $params['pageid'];
$currdate = $params['currdate'];
if(!$currdate) return;

// get all news articles PUBLISHED sorted by ascending date
$query_next = "SELECT news_id,news_title,news_url FROM  ".cms_db_prefix()."module_news WHERE news_date > ? AND status = 'published' ORDER BY news_date ASC LIMIT 1";
$query_prev = "SELECT news_id,news_title,news_url FROM ".cms_db_prefix()."module_news WHERE news_date < ? AND status = 'published' ORDER BY news_date DESC  LIMIT 1";
$query_uri = "SELECT news_id,news_title,news_url FROM ".cms_db_prefix()."module_news WHERE news_date = ? AND status = 'published' ";

$result_next = &$db->GetRow($query_next,array($currdate));
$result_prev = &$db->GetRow($query_prev,array($currdate));
$result_uri = &$db->GetRow($query_uri,array($currdate));

if($result_next['news_id']) {
if($result_next['news_url']) {
$prettyurl = $result_next["news_url"];
}else{
$aliased_title = munge_string_to_url($result_next['news_title']);
$prettyurl = 'news/' . $result_next["news_id"] .'/'.$pageid."/$aliased_title";}
$next_uri = $news->CreateLink('cntnt01', 'detail', $pageid, '', array('articleid' => $result_next["news_id"])  ,'', true, false, '', true, $prettyurl);
$next_text=$result_next["news_title"];
}else{
$next_uri = "";
}

if($result_prev['news_id']) {
if($result_prev['news_url']) {
$prettyurl = $result_prev["news_url"];
}else{
$aliased_title = munge_string_to_url($result_prev['news_title']);
$prettyurl = 'news/' . $result_prev["news_id"] .'/'.$pageid."/$aliased_title";}
$prev_uri = $news->CreateLink('cntnt02', 'detail', $pageid, '', array('articleid' => $result_prev["news_id"]) ,'', true, false, '', true, $prettyurl);
$prev_text=$result_prev["news_title"];
}else{
$prev_uri = "";
}

if($result_uri['news_id']) {
if($result_uri['news_url']) {
$uri_page= $result_uri["news_url"];
}else{
$aliased_title = munge_string_to_url($result_uri['news_title']);
$uri_page= 'news/' . $result_uri["news_id"] .'/'.$pageid."/$aliased_title";}
}else{
$uri_page = "";
}

$smarty->assign('news_next_url', $next_uri);
$smarty->assign('news_next_text', $next_text);
$smarty->assign('news_prev_url', $prev_uri);
$smarty->assign('news_prev_text', $prev_text);
$smarty->assign('news_uri_page', $uri_page);

J'ai oublié quelque chose ?
Merci encore.
il n'y a pas que cela

$gCms->modules[$module] n'existe plus
&$gCms->db; non plus ($gCms->getDb(); à la place)

reprend les topics de l'annonce de la sortie béta 1.10.0, il y a la liste des changements ainsi que le code qu'il faut appliquer maintenant.

d'ailleurs si l'on creuse un peu ton code n'a pas à être ainsi

Code :
if (!function_exists('MyGetModuleInstance'))
{
        function &MyGetModuleInstance($module)
        {
                $gCms = cmsms();
                if (isset($gCms->modules[$module]) &&
                        $gCms->modules[$module]['installed'] == true &&
                        $gCms->modules[$module]['active'] == true)
                {
                        return $gCms->modules[$module]['object'];
                }
                // Fix only variable references should be returned by reference
                $tmp = FALSE;
                return $tmp;
        }
}

il existe des solutions tout en un qui fait la même chose en mieux, vérifie les topics dans "Annonces" sur ce forum, j'avais écrit des astuces sur le sujet
Ok, merci, je cherche...

Franchement, je trouve pas, là... pourtant, je les ouvre tous un par un...
T'aurais pas un lien pas loin pleaaaaaase ?

Franchement, pour info, les upgrade vers la V1.10.2, c'est vraiment pas évident...
http://www.cmsmadesimple.fr/forum/viewtopic.php?id=3649
Les informations sont éparpillées dans les messages de ce post.
Hum... oui, j'avais déjà vu.
Et franchement, j'ai vraiment du mal...

Bon, après avoir bien transpiré, j'ai un truc qui semble fonctionner... mais Bess, pourrais-tu me dire si le code te convient mieux comme ça ?

Code :
[== Indéfini ==]
$gCms = cmsms();
$db = &$gCms->GetDb();

if(isset($gCms->modules))
{
    $mod = $gCms->modules['News']['object'];
} else {
    $modops = cmsms()->GetModuleOperations();
    $mod = $modops->get_module_instance('News');
}

$pageid = ($_REQUEST['pageid']) ? $_REQUEST['pageid'] : $params['pageid'];
$currdate = $params['currdate'];
if(!$currdate) return;

// on crée la requête SQL, en s'assurant de se libérer du préfixe cms_ qui peut différer d'une installation à une autre
$sql = 'SELECT nom,prenom,email FROM '.cms_db_prefix().'`module_monmodule_user` ORDER BY `nom`';

// get all news articles PUBLISHED sorted by ascending date
$query_next = "SELECT news_id,news_title,news_url FROM  ".cms_db_prefix()."module_news WHERE news_date > ? AND status = 'published' ORDER BY news_date ASC LIMIT 1";
$query_prev = "SELECT news_id,news_title,news_url FROM ".cms_db_prefix()."module_news WHERE news_date < ? AND status = 'published' ORDER BY news_date DESC  LIMIT 1";
$query_uri = "SELECT news_id,news_title,news_url FROM ".cms_db_prefix()."module_news WHERE news_date = ? AND status = 'published' ";
$result_next = &$db->GetRow($query_next,array($currdate));
$result_prev = &$db->GetRow($query_prev,array($currdate));
$result_uri = &$db->GetRow($query_uri,array($currdate));

if($result_next['news_id']) {
if($result_next['news_url']) {
$prettyurl = $result_next["news_url"];
}else{
$aliased_title = munge_string_to_url($result_next['news_title']);
$prettyurl = 'news/' . $result_next["news_id"] .'/'.$pageid."/$aliased_title";}
$next_uri = $mod->CreateLink('cntnt01', 'detail', $pageid, '', array('articleid' => $result_next["news_id"])  ,'', true, false, '', true, $prettyurl);
$next_text=$result_next["news_title"];
}else{
$next_uri = "";
}

if($result_prev['news_id']) {
if($result_prev['news_url']) {
$prettyurl = $result_prev["news_url"];
}else{
$aliased_title = munge_string_to_url($result_prev['news_title']);
$prettyurl = 'news/' . $result_prev["news_id"] .'/'.$pageid."/$aliased_title";}
$prev_uri = $mod->CreateLink('cntnt02', 'detail', $pageid, '', array('articleid' => $result_prev["news_id"]) ,'', true, false, '', true, $prettyurl);
$prev_text=$result_prev["news_title"];
}else{
$prev_uri = "";
}

if($result_uri['news_id']) {
if($result_uri['news_url']) {
$uri_page= $result_uri["news_url"];
}else{
$aliased_title = munge_string_to_url($result_uri['news_title']);
$uri_page= 'news/' . $result_uri["news_id"] .'/'.$pageid."/$aliased_title";}
}else{
$uri_page = "";
}

$smarty->assign('news_next_url', $next_uri);
$smarty->assign('news_next_text', $next_text);
$smarty->assign('news_prev_url', $prev_uri);
$smarty->assign('news_prev_text', $prev_text);
$smarty->assign('news_uri_page', $uri_page);

Merci encore à tous les 2 !
ça m'a l'air d'être bon

si ton module est destiné pour du 1.10.x est sup, tu peux réduire à


$db = cmsms()->GetDb();
$modops = cmsms()->GetModuleOperations();
$mod = $modops->get_module_instance('News');

et virer les occurances de $gCms pour cmsms()
Yes, ok, c'est fait !
Merci beaucoup ! Smile