dede : Que dois-je faire si la balise d'article likearticle et la balise tag sont associées de manière incorrecte ?
DreamWeaver 5.7 a une balise dede:likearticle qui est utilisée pour associer des articles, mais pendant le processus d'utilisation, nous avons constaté que cette association est vraiment inutile, mais l'auteur a constaté que tout le monde utilise DreamWeaver Est-ce toujours acceptable lors de la recherche de 5.7 ? L'auteur a remplacé la fonction de recherche de dede par cet article similaire, et cela semble être bien meilleur.
Apprentissage recommandé : Dreamweaver cms
Introduction au code
L'auteur a modifié les mots-clés par défaut pour associer les articles à des balises, et un jugement a été ajouté. Après avoir exécuté la requête floue basée sur les balises, si les données de la requête sont vides, interrogez à nouveau directement tous les articles recommandés sous cette colonne. C'est mieux, c'est-à-dire que la valeur de retour est toujours conservée.
L'auteur considère que certains articles n'ont pas de balises, et certains articles ont des balises mais aucun article n'est trouvé, il détermine donc d'abord s'il y a des balises. Sinon, il interroge directement les articles recommandés dans cette colonne. S'il y a des balises, l'article n'est pas trouvé. Si des articles vides sont trouvés, les articles recommandés dans la colonne actuelle seront également renvoyés.
Solutions/étapes pour associer les balises likearticle et tag
Étape 1 : Utilisez le Bloc-notes ou certains outils pour ouvrir le fichier "répertoire racine includetagliblikearticle.lib.php".
Étape 2 : Recherchez "['keywords']", remplacez tout par ['tags'] et enregistrez.
Remarque du réseau d'entraide informatique :
Ligne de code originale 55 : $keyword = ( !empty($refObj->Fields['keywords']) ? $refObj->Fields[ 'keywords'] : '' );
Ligne de code d'origine 75 : if(!empty($refObj->Fields['keywords']))
Ligne de code d'origine 77 : $ mots-clés = éclater(',' , trim($refObj->Fields['keywords']));
Étape 3 : Ajoutez "$keyword .= $keyword=='' sous la ligne 87 ? " CONCAT(arc.title,arc.keywords,arc.shorttitle) REGEXP '($k)'": " OU CONCAT(arc.title,arc.keywords,arc.shorttitle) REGEXP '($k)'"; "
Déconnexion à la ligne 87 du code source : //$keyword .= ($keyword=='' ? " CONCAT(arc.keywords,' ',arc.title) LIKE '%$k%' " : " OR CONCAT(arc.keywords,' ',arc.title) LIKE '%$k%' ");
Réseau d'entraide informatique Ajouter un code Signification : Original Flou En ce qui concerne l'instruction de requête, l'auteur a ajouté un titre court ici et voulait également l'interroger. Cependant, je n'aime pas utiliser linke, une requête floue, je l'ai donc changé en requête REGEXP ici.
Étape 4 : Ajoutez le code suivant sous la ligne 107 et enregistrez.
Le code est le suivant :
/** 按tag标签关联文章内容 query2为备用,如果query为空的话,第二个就直接显示出来 */ $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule, tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath FROM `dede_archives` arc LEFT JOIN `dede_arctype` tp on arc.typeid=tp.id WHERE $keyword and arc.ismake = 1 and arc.id <> $arcid ORDER BY arc.sortrank desc LIMIT 0,$row"; $typeids=$refObj->Fields['typeid'];//取出当前栏目ID $query2 = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule, tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath FROM `dede_archives` arc LEFT JOIN `dede_arctype` tp on arc.typeid=tp.id WHERE FIND_IN_SET('c', arc.flag)>0 and arc.ismake = 1 And (arc.typeid in ($typeids) or arc.typeid2 in($typeids) or CONCAT( ',', arc.typeid2, ',' ) LIKE '%,$typeids,%' ) And arc.arcrank > -1 ORDER BY arc.sortrank desc LIMIT 0,$row"; /*query3是判断是否为空用的*/ $query3 = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule, tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath FROM dede_archives arc LEFT JOIN dede_arctype tp on arc.typeid=tp.id WHERE $keyword and arc.ismake = 1 and arc.id <> $arcid ORDER BY arc.sortrank desc LIMIT 0,$row";//这里的SQL具体按自己的数据库的表字段写吧,我这是直接写死了,哎没办法,能力有限。 /* 这里是判断tags标签查询的是否为空值,如果是空值,就全部使用推荐返回值,如果有值,就直接显示tags关联。 */ $result =mysql_query($query3);//query36判断专用的,主要是作者不会用SetQuery呀,郁闷。我是直接拼的SQL if(mysql_num_rows($result)<1){ $dsql->SetQuery($query2); }else{ $dsql->SetQuery($query); }
Ce qui suit est une image de toutes les déconnexions des lignes 101 à 107 du code source :
La signification du code ci-dessus : la requête2 associée au contenu de l'article par tag tag est une sauvegarde Si les données interrogées par tag tags sont vides, la seconde peut être utilisée.
Étape 5 : Ajoutez le code suivant sous la ligne 117 du code d'origine et enregistrez.
Le code est le suivant :
$typeids=$refObj->Fields['typeid'];//取出当前栏目ID $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule, tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath FROM `dede_archives` arc LEFT JOIN `dede_arctype` tp on arc.typeid=tp.id WHERE FIND_IN_SET('c', arc.flag)>0 and arc.ismake = 1 And (arc.typeid in ($typeids) or arc.typeid2 in($typeids) or CONCAT( ',', arc.typeid2, ',' ) LIKE '%,$typeids,%' ) And arc.arcrank > -1 ORDER BY arc.sortrank desc LIMIT 0,$row"; $dsql->SetQuery($query);
Ce qui suit est une image de toutes les déconnexions des lignes 111 à 117 du code source :
La signification du code ci-dessus : La cinquième étape est de vérifier quand la balise tags a du contenu. La cinquième étape est le SQL exécuté lorsque la balise tags n'est pas vide.
Étape 6 : Une fois terminé, téléchargez-le dans l'espace. L'auteur ne démontrera pas l'effet du code. Si vous voulez vraiment voir l'effet, lisez simplement les articles associés sur le côté droit de cet article. .
Parce que certains internautes ne sont pas sensibles à SQL, ils peuvent penser qu'ils ne comprennent rien de ce qui est écrit dans cet article et qu'ils ne peuvent pas le modifier. Ceci n'a pas d'importance. Ceci est l'adresse de téléchargement : likearticle. .lib.rar
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!