Salut,
ça paraît probable comme tes foreach sont imbriqués l’un dans l’autre
sur le premier, tout va bien, le second ne s’exécute qu’une fois puisque tu attaques en fait un tableau de 1 élément,
le deuxième tableau doit en revanche en avoir 5 et, tu exécutes donc 5 fois le foreach à suivre
sors tes foreach les uns des autres pour les exécuter individuellement et ça devrait rentrer dans l’ordre, en gros un truc du genre
(fait vite et à la volée mais l’idée est dans les commentaires)
<?php
$parent = "4730";
$c = $modx->newQuery('modResource');
$c->where(array(
'parent' => $parent,
));
$resources = $modx->getCollection('modResource',$c);
foreach ($resources as $resource)
{
$id = $resource->get("id");
$ArrChild = $modx->getChildIds($id);
$ArrChild = count($ArrChild);
}
if ($ArrChild > 0)
{
$idparent = $id;
$c = $modx->newQuery('modResource');
$c->where(array(
'parent' => $idparent,
));
$resources2 = $modx->getCollection('modResource',$c);
foreach ($resources2 as $resource2)
{
$id2 = $resource2->get("id");
$ArrChild2 = $modx->getChildIds($id2);
$ArrChild2 = count($ArrChild2);
}//ferme le deuxième avant de traiter le tableau qui en résulte
if ($ArrChild2 > 0) {
$idparent2 = $id2;
$c = $modx->newQuery('modResource');
$c->where(array(
'parent' => $idparent2,
));
$resources3 = $modx->getCollection('modResource',$c);
//et là, le foreach de renommage ne devrait s'éxécuter qu'une fois
foreach ($resources3 as $resource3)
{
$alias = $resource3->get("alias");
$idPage = $resource3->get("id");
$doc = $modx->getObject("modResource",array(
"id"=>$idPage
));
$alias = "femme-de-menage-".$alias;
$doc->set('alias',$alias);
$doc->save();
}
}
}
return true;
j’espère que ça sera utile à qque chose
haves swing