1 zom Feb 12, 2006 19:22
3 fala Feb 23, 2006 17:41
Salut
Merci pour ce tuto mais le probleme qui se pose est que deux blogs se créént ! par exemple
laura laural
maxime maximl
Merci de m'aider
4 madz Feb 23, 2006 18:30
Oui deux blogs se créent et c'est tout à fait normal car j'ai choisi de créer un blog et un blog de liens par utilisateur ;).
Cependant si tu ne veux pas créer de blog de liens c'est tout à fait possible et le code devient alors:
// début du hack
$new_blog_stub = $new_User->login;
$new_blog_locale = $new_User->locale;
$new_blog_name = 'Blog de ' . $new_blog_stub;
// création du blog
$query = "INSERT INTO $tableblogs ( ";
$query .= "blog_access_type, ";
$query .= "blog_stub, ";
$query .= "blog_name, ";
$query .= "blog_shortname, ";
$query .= "blog_locale) ";
$query .= "VALUES ( ";
$query .= "'stub', ";
$query .= "'".$DB->escape($new_blog_stub)."', ";
$query .= "'".$DB->escape($new_blog_name)."', ";
$query .= "'".$DB->escape($new_blog_stub)."', ";
$query .= "'".$DB->escape($new_blog_locale)."' )";
$DB->query( $query );
// récupération de l'ID du blog
$query = "SELECT blog_ID from $tableblogs WHERE blog_stub = ";
$query .= "'".$DB->escape($new_blog_stub)."'";
$new_blog_ID = $DB->get_var($query);
// création de la première catégorie du blog
$query = "INSERT INTO $tablecategories ( ";
$query .= "cat_name, ";
$query .= "cat_blog_ID ) ";
$query .= "VALUES ( ";
$query .= "'".$DB->escape($new_blog_stub)."', ";
$query .= "'".$DB->escape($new_blog_ID)."' )";
$DB->query( $query );
// récupération de l'ID du nouveau membre
$query = "SELECT ID from $tableusers WHERE user_login = ";
$query .= "'".$DB->escape($new_blog_stub)."'";
$new_blogger_ID = $DB->get_var($query);
// On donne les droits d'administration au nouvel inscrit (blog)
$query = "INSERT INTO $tableblogusers ( ";
$query .= "bloguser_blog_ID, ";
$query .= "bloguser_user_ID, ";
$query .= "bloguser_ismember, ";
$query .= "bloguser_perm_poststatuses, ";
$query .= "bloguser_perm_delpost, ";
$query .= "bloguser_perm_comments, ";
$query .= "bloguser_perm_cats, ";
$query .= "bloguser_perm_properties ) ";
$query .= "VALUES ( ";
$query .= "'".$DB->escape($new_blog_ID)."', ";
$query .= "'".$DB->escape($new_blogger_ID)."', ";
$query .= "1, 'published,protected,private,draft,deprecated', 1, 1, 1, 1 )";
$DB->query( $query );
$now = date('Y-m-d H:i:s');
//on crée le fichier stub
$texte="<?php\n";
$texte .= "\$blog=".$new_blog_ID.";\n";
$texte .= "\$timestamp_max = 'now';\n";
$texte .= "require(dirname(__FILE__).\"/b2evocore/_blog_main.php\");\n";
$texte .= "?>";
$stubfile = dirname(__FILE__)."/../".$new_blog_stub.".php";
$fichier = fopen($stubfile,"w");
fwrite($fichier,$texte);
fclose($fichier);
//et un petit email pour la route
$sujet="Bienvenue " . $login . " !";
$message="Bienvenue " . $login . " !\n\n\n";
$message.="Tes codes d'accès:\n\n";
$message.="\tIdentifiant:\t" . $login . "\n";
$message.="\tMot de passe:\t" . $pass1 . "\n\n\n";
$message.="Merci de t'être inscrit et à très bientôt !";
send_mail( $email, $sujet, $message, $notify_from );
$redirect_to = $admin_url.'/b2edit.php?blog='.$new_blog_ID;
// fin du hack
Bon blogging et bonne soirée ...
5 fala Feb 23, 2006 20:08
Bravo et surtout MERCI :D
6 gaeil Mar 10, 2006 14:30
EN tout cas c'est génial, depuis le temps que je cherchais comment faire fonctionner la création de blogs de manière automatique ! ça marche !
mais, bien que n'ayant rien touché à ce fichier j'ai maintenant une erreur quand la page principale (celle qui contient l'ensemble des blogs) s'affiche.
en haut il y a une ligne :
Notice: Undefined variable: show_statuses in c:\program files\easyphp1-8\www\blogs\b2evocore\_blog_main.php on line 201
puis le reste s'affiche très bien en dessous.
avez-vous une idée :?:
merci
7 madz Mar 10, 2006 17:07
Ce message d'erreur vient de php qui est configuré en mode débogage, il t'avertit que la variable show_statuses n'est pas initialisée (ce qui n'a je pense aucun rapport avec le hack, j'ai beau regarder en long, en large et en travers je vois pas d'où ça pourrait venir).
La solution serait de placer ceci dans un .htaccess à la racine de ton site (en plus du reste, au tout début, si tu as déjà un .htaccess):
php_flag display_errors on
php_value error_reporting 1
Si le serveur te dit erreur 500 essaie de supprimer l'une ou l'autre des commandes.
Si aucune ne fonctionne ajoute
$show_statuses=0;
à la ligne qui précède la ligne 201 c'est à dire avant ça:
// Note: even if we request the same post, the following will do more restrictions (dates, etc.)
$MainList = & new ItemList( $blog, $show_statuses, $p, $m, $w, $cat, $catsel, $author, $order,
Cette solution est très moche alors essaie de ne l'utiliser qu'en dernier recours ;)
Bonne soirée
8 gaeil Mar 10, 2006 19:58
Et bien super, merci
la première instruction (2lignes) dans le htaccess ont suffis ;)
merci !
9 gaeil Mar 10, 2006 20:12
Harrr! :(
je te rassure plus d'erreur...
mais revenons à l'origine de ce poste et de ta réponse. tout fonctionne mais quand un utilisateur (qui a été créé avec cette méthode automatique) veut accéder à partir de son blog,ou un visiteur, sur la partie droite à un article (catégorie..Sous catégorie..)
il y a une page "impossible de trouver la page".
J'ai vu que sur les articles fournis d'origine, le chemin était (pour mon poste en local) :
http://localhost/blogs/index.php?blog=2&cat=3
(blog2 est l'un des blogs d'origine...)
alors que pour les nouveaux blogs l'adresse est :
http://localhost/blogs/gaeil1?cat=27
alors qu'elle devrait être :
http://localhost/blogs/index.php?gaeil1&cat=27
(si je tape en manuel dans la barre d'adresse ça affiche la bonne page demandée).
même problème par exemple avec le choix de l'habillage (un certain nombre est proposé par défaut à droite)
donc c'est un problème global de chemin par défaut pour les noouveaux users
as-tu une idée de la ligne de code qui pêche ?
merci
10 madz Mar 11, 2006 02:31
Alors tout d'abord l'adresse générée est correcte si le script fonctionne comme il faut ^^.
Pour que ce soit plus clair je t'explique comment ça marche en résumé:
- le visiteur se connecte au blog de x via http://tonsite.com/x, et ensuite mod_rewrite de apache prend le relais pour remplacer ça par http://tonsite.com/x.php (si x.php existe). x.php est un fichier "stub" qui a été créé lors de la création du blog de l'utilisateur, il donne les bons paramètres à b2evolution (le blog demandé en fait) et le laisse faire le travail (cad afficher le blog/article). On peut dire que x.php remplace index.php en quelque sorte.
- ensuite lors de la visite le visiteur peut changer de page, voir la suite d'un article, changer de catégorie, etc et pour ça le fichier stub est appelé avec les bons paramètres.
- donc l'url est normalement correcte si tu as suivi jusqu'ici :p car dans ce cas si tout fonctionne gaeil1.php sera appelé, avec les informations sur la catégorie en plus (cat=27 )
Après cette explication on passe aux solutions:
- soit le fichier stub n'existe pas (il n'a donc pas été créé lors de l'ajout du blogueur), vérifie alors qu'il existe bien un fichier gaeil1.php dans /blogs: s'il n'existe pas il faut que tu ajoutes les droits d'écriture dans ce dossier (chmod 777), et crée un fichier gaeil1.php pour "réparer" l'utilisateur courant avec ça dedans:
<?php
$blog=22;
//remplace ce numéro par l'id du blog
//(colonne blog_ID de la table evo_blogs,
//visible dans phpmyadmin par exemple)
$timestamp_max = 'now';
require(dirname(__FILE__)."/b2evocore/_blog_main.php");
?>
(tu peux aussi supprimer le blog et l'utilisateur puis les recréer ^^)
- soit mod_rewrite est désactivé (peu probable car tu devrais avoir une erreur 500) ou surtout le fichier .htaccess n'est pas présent/pas au bon endroit: n'oublie pas de mettre ça dans un fichier .htaccess dans /blogs:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -s
RewriteCond %{QUERY_STRING} ^$
RewriteRule ([^-]+) $1.php
Ce code est à insérer après le code pour les erreurs php si c'est le même .htaccess, mais avant tout autre code dans ce fichier.
Questions subsidiaires pour mieux comprendre le problème: quand tu vas sur http://localhost/blogs/gaeil1 ça marche? tu es hébergé ? sur un serveur dédié? sous linux ou sous windows avec easyphp et autres?
Tiens moi au courant des résultats des solutions que je te propose et bon courage :D
11 gaeil Mar 11, 2006 13:52
merci pour ses explications ho combien pédagogiques !
donc d'abord les renseignements:
j'utilise la version 0.9.1 - en local sous win xp avec EasyPhp 1.8, Apache, SQL etc...
pour être sûr de ne pas être pollué par d'ultérieures manips. J'ai réinstallé complètement b2evol. j'ai mis le .htaccess comme indiqué (mod rewrite +gestion erreur)
j'ai fait les modifs que tu préconises dans les différents fichiers. (j'ai l'impression que j'ai encore plus de problème qu'hier ! :'(
on essaye !
Donc je m'inscris en tant que nouvel utilisateur ex : gaeil2. OK -
il y a bien un fichier stub gaeil2.php qui se crée dans la racine du rep b2evolution
voici son contenu :
<?php
$blog=6;
$timestamp_max = 'now';
require(dirname(__FILE__)."/b2evocore/_blog_main.php");
?>
info (je présume): blog = 6 car c'est le sixième utilisateur (4 blogs d'origine + gaeil1 + gaeil2 (le petit nouveau !)
essai de connexion via la boîte d'identification.
une fois le mot de passe entré, dans la barre d'adresse, il se connecte à :
http://127.0.0.1/b2eblogs/admin/b2edit.php?blog=6
une fois dans l'interface administration de gaeil2, si je clique en haut à droite "retour aux blogs" je reviens bien à son blog (noté en titre BLOG de gaeil2) mais via l'adresse :
http://127.0.0.1/b2eblogs/?blog=6
je te confirme que si je tape directement l'adresse :
http://127.0.0.1/b2eblogs/gaeil2
je tombe bien sur le blog de gaeil2
il subsiste donc pour moi 2 problèmes. Quand un utilisateur se connecte, ne devrait-il pas arriver sur son blog plutôt que sur l'interface administration de son blog ? (je sais pas...c'est peut-être normal..) et c'est mineur...
non, le défaut qui reste , c'est bien celui qui fait que j'ai une page d'erreur (page introuvable), chaque fois qu'à partir de blog je veux choisir un habillage dans la liste, ou quand je veux accéder à l'un des articles via l'un des liens dispo ans la partie droite du blog.
peut-être tout bêtement un prob de config adresses des liens du côté des droits des utilisateurs ? ou parceque c'est en local ? mais j'ai pas trouvé...
il faut aussi noter que si je me trouve sur l'un des blogs All, A, B...tout fonctionne parfaitement au niveau des liens ou du choix habillage. ça ne pose problème qu'avec les nouveaux.
merci :roll:
12 gaeil Mar 11, 2006 19:04
voir la copie d'écran ici
http://perso.wanadoo.fr/chemin-compostelle/stub.htm
bref, il faut aller dans la zone administration, blogs, onglet Général (les autres onglets sont permissions et options avancées).
Il y a la zone paramètre généraux, puis la zone Paramètres d'accès.
Dans cette zone, le nom du fichier stub est
sous la forme par exemple gaeil1. Il faut pour que tout fonctionne écrire gaeil1.php ;)
je ne sais pas comment rajouter ce .php dans cette zone , si tu sais....
merci
13 madz Mar 11, 2006 19:55
Ok on tient le bon bout je crois :D
Je pense que c'est une différence de comportement de mod_rewrite sur nos deux serveurs apache, ce qui fait que chez toi il ne transforme pas gaeil1 en gaeil1.php lorsqu'il y a une "query string" (cad ?id=blabla etc)...
Alors pour corriger ça c'est assez rapide:
Remplace ce bloc
// début du hack
$new_blog_stub = $new_User->login;
$new_blog_locale = $new_User->locale;
$new_blog_name = 'Blog de ' . $new_blog_stub;
// création du blog
$query = "INSERT INTO $tableblogs ( ";
$query .= "blog_access_type, ";
$query .= "blog_stub, ";
$query .= "blog_name, ";
$query .= "blog_shortname, ";
$query .= "blog_locale) ";
$query .= "VALUES ( ";
$query .= "'stub', ";
$query .= "'".$DB->escape($new_blog_stub)."', ";
$query .= "'".$DB->escape($new_blog_name)."', ";
$query .= "'".$DB->escape($new_blog_stub)."', ";
$query .= "'".$DB->escape($new_blog_locale)."' )";
$DB->query( $query );
Par celui-là
// début du hack
$new_blog_stub = $new_User->login . ".php";
$new_blog_shortname = $new_User->login;
$new_blog_locale = $new_User->locale;
$new_blog_name = 'Blog de ' . $new_blog_stub;
// création du blog
$query = "INSERT INTO $tableblogs ( ";
$query .= "blog_access_type, ";
$query .= "blog_stub, ";
$query .= "blog_name, ";
$query .= "blog_shortname, ";
$query .= "blog_locale) ";
$query .= "VALUES ( ";
$query .= "'stub', ";
$query .= "'".$DB->escape($new_blog_stub)."', ";
$query .= "'".$DB->escape($new_blog_name)."', ";
$query .= "'".$DB->escape($new_blog_shortname)."', ";
$query .= "'".$DB->escape($new_blog_locale)."' )";
$DB->query( $query );
Voilà tes blogueurs pourront donc toujours accéder à leur blog sous la forme /b2eblogs/utilisateur et b2evolution changera ensuite tous les liens vers /b2eblogs/utilisateur.php?truc=machin etc...
Il te faut par contre corriger tous les mebres déjà créés à la main...
Cette fois-ci ça devrait être au point n'hésite pas à revenir crier victoire :D
PS: Un expert en .htaccess et mod_rewrite pour se pencher sur le problème?
EDIT: J'avais oublié de te répondre mais oui le fait que l'utilisateur qui se connecte arrive sur l'interface d'administration c'est le comportement standard de b2evolution, si l'utilisateur veut rester sur son blog il ne se connecte pas ^^
14 gaeil Mar 11, 2006 20:19
merci pour la réponse.
Je dois passer sur un vrai hébergement...j'attendrai donc pour tout modifier car si ça dépend du serveur....
mais je ne manquerai pas de donner le résultat..ça va juste prendre un peu de temps...d'ici une bonne quinzaine
@+
merci pour tout ;) :lol:
15 bd71 Mar 22, 2006 13:00
Bonjour,
:D
je suis un nouveau, et j'ai longtemps chercher une solution pour installer une "plateforme" de blogs.
J'ai suivi la procédure et cela semble marcher, sauf pour certains liens:
http://lesindispensables.com/tonblog/index.php/all?cat=19 marche
http://lesindispensables.com/tonblog/princesse48 ne marche pas
de plus je ne voudrai pas que les nouveaux blogs s'affichent dans le menu du haut mais sur une autre page comme sur http://www.flmspirit.com/blogs
je suis sur que c'est simple pour vous, alors que pour moi :crazy:
Si en plus vous vouliez me donner des conseils, je suis preneur, en tout cas merci et bravo pour ce que vous faites.
16 madz Mar 23, 2006 06:09
Salut,
pour ton lien qui ne marche pas c'est un problème de htaccess qui n'en fait qu'à sa tête (enfin plutôt lle serveur), que tu as mis au mauvais endroit ou quelque chose du genre...
Par contre j'ai testé princess48.php fonctionne donc le script a bien créé ce qu'il fallait, pas de souci de ce côté, relis bien la procédure, pour ton cas le htaccess doit être placé dans /tonblog/et contenir quelque chose qui devrait ressembler à :
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -s
RewriteCond %{QUERY_STRING} ^$
RewriteRule ([^-]+) $1.php
Tiens moi au courant du résultat j'essaierai de voir ce qu'il est possible de faire si ça ne fonctionne toujours pas (erreur 500, rien qui ne se passe, etc)
Ca me fait penser qu'il faudrait que je poste une version plus claire de ce topic ^^
Pour le code qui liste les blogs je posterai ça ici plus tard car il est pas propre du tout et je compte bien optimiser ça avant tout.
Voilà bonne journée ...
17 fabcbien Apr 04, 2006 01:21
salut
j'ai suivi toute la procedure est ca a bien fonctionner !
je fais un post juste pour te remercier
j'ai juste un pb probleme de trackback le lien affiche une page blanche lorsque je l'ouvre , mais je vais chercher je vais bien trouver
merci encore
18 silver24 Jul 13, 2006 01:21
Moi j'ai toujour des problèmes !
Mon but est d'offrire des blogs gratuits au membre de mon site, mais evidement, ils ne doivent rien pouvoir modifier sauf LEUR blog !
1er : Je n'arrive pas à acceder à mes blogs par blogs.monsite.com/leblog . Je peux seulement y acceder par blogs.monsite.com/index.php/all?cat=02
2ème : Es que je doit configurer quelque chose en particulier pour untiliser des fichiers Stub pour les blogs.
3ème : L'utilisateur qui crée sont blog à acces à au paramettre généraux de son blog et peux en faire le blog par defaut de mon site...
4ème : Je souhaiterai modifier ma page d'accueil comme par exemple sur http://blogs.simssuisse.com
Merci d'avance pour votre aide ! Je suis une vrai... tanche... :roll:
19 madz Jul 17, 2006 13:40
Salut,
Avant toute chose, peux-tu préciser la version de b2evolution que tu utilises, et la méthode que tu as essayé de suivre ?
20 silver24 Jul 17, 2006 14:01
Oui, bien sure :!:
J'utilise la version 0.9.1 et j'ai essayer la metode de ce topic ! :)
21 kof Oct 22, 2006 05:29
Salut tout le monde,
Donc voila.
Je veux les mêmes objectifs que pour le sujet de ce topic. Mais pour la version 1.8.2
Alors c'est quoi les modifications a faire (surtout que y'as pas mal de changement niveau fichier).
Merci d'avance, et désolé si ce sujet est déjà été posé (pourtant j'ai bien chercher). :oops:
A+
22 madz Oct 22, 2006 05:34
Pour la version 1.8, un plugin se charge de gérer ça, sans qu'il soit nécessaire de hacker quoi que ce soit: ça se passe [url=http://www.fralenuvol.com/albero/servizi/webmaster/scripts/b2evolution_autoblog_plugin.php]ici[/url].
Si tu as des questions sur son fonctionnement n'hésite pas ;)
23 kof Oct 22, 2006 05:39
Waoo,
Merci pour ta réponse, et plus encore pr sa vitesse.
je vais voir ca ...
Respect
24 kof Oct 23, 2006 05:49
Cette fois c'est une question idiote :oops: puisque j'ai commencé avec la plus dur ^^
Comment je fais pour que chaque nouveau membre une fois connecté, il peut écrire des articles ?
(est ce que c'est possible et sans qu'il passe par la page admin ? si oui comment, et c'est quoi les permissions souhaité ?)
Merci d'avance pour tt
Salut à toi jeune padawan courageux et plein d'ambition!
Bon alors pour faire ce que tu veux faire c'est très simple: ce n'est pas possible sans mettre (un peu) les mains dans le cambouis.
Je vais te faire partager le code que j'utilise pour offrir un blog aux visiteurs de mon site, je précise que ce n'est probablement pas la meilleure méthode (enfin j'ai pas trouvé mieux pour le moment), c'est simplement la mienne. Il te faut un serveur tournant sous Apache (1.3 ou 2.0), avec mod_rewrite activé, et de préférence une installation fraîche de b2evolution 0.9.1 (testé aussi avec les 0.9.0.11 et 0.9.0.12).
Tout t'abord essaie de lire et de comprendre ce tutorial (je me suis basé dessus): http://forums.b2evolution.net/viewtopic.php?t=5042
Prêt ? Alors on y va !!
Il faut commencer par limiter le nombre de caractères du pseudo du nouveau membre pour les mêmes raisons que dans le tutorial cité plus haut, sauf que j'ai choisi de rajouter un 'l' à la fin du pseudo pour le nom du blog de liens, donc je limite à 11 caractères: ouvre htsrv/_reg_form.php et cherche :
Et remplace le tout par ça:
Ensuite vient le gros du hack: ça se passe dans htsrv/register.php. Cherche ça:
Et après ce bloc insère ça:
Attention: j'ai choisi de créer un fichier stub (un raccourci pour simplifier l'accès des membres): le dossier racine de b2evolution (par exemple dans mon cas /blogs/ doit être inscriptible (chmod 777) pour pouvoir créer ce fichier.
Au final chaque membre peut accéder à son blog via tonsite.com/cheminb2evolution/pseudo.php mais '.php' c'est trop compliqué alors on simplifie un peu à l'aide d'un fichier .htaccess, placé à la racine de b2evolution lui aussi:
Ce qui fait que si un fichier .php avec le pseudo demandé existe, le serveur remplacera pseudo par pseudo.php: on y est :D
En résumé: un utilisateur s'enregistre avec 'pseudo': deux blogs sont crées avec le nom 'pseudo' et 'pseudol'; lui seul en est l'administrateur et il ne peut administrer d'autres blogs, ni accéder aux statistiques et à la configuration générale.
Un autre hack bien pratique pour ressortir de l'interface d'administration dans le blog que l'on était en train d'éditer au lieu de retourner à la page d'accueil: ouvre admin/_menutop.php et cherche:
Et remplace ce bloc par:
Comme ça dès qu'un utilisateur sort de l'interface d'administration il sort sur le blog qu'il était en train d'éditer (donc le sien).
Voilà essaie déjà avec tout ça et vois où ça coince car ce serait trop simple sinon, on pourra parler de l'utilisation des sous-domaines quand tu auras déjà réussi à faire fonctioner ça.
Le seul problème de ce hack est qu'on ne peut pas supprimer simplement un utilisateur il faut aussi supprimer les blogs associés (mais je suis sûr qu'un petit hack le résoudrait).
Bon courage !!!