Как вывести список сайтов, зарегистрированных на сервере "drupal"?

Главные вкладки

Аватар пользователя romantaran romantaran 30 августа 2007 в 11:09

Вопрос о стандартном модуле "drupal". Мне нужно создать каталог сайтов, зарегистрированных посредством xml-rpc на сайте-сервере. Так, как это сделано на drupal.ru: http://drupal.ru/directory

Как вывести список сайтов?

Комментарии

Аватар пользователя PVasili PVasili 30 августа 2007 в 12:24

Примерно так:
<?php
$out_a = array();
$sites = db_query('SELECT * FROM {client}');

while($site = db_fetch_object($sites)) {
if ( (strpos($site->link, 'http://') === false) && (strpos($site->link, 'https://' ) === false) ) { continue; }
$site_line = "check_plain($site->link). check_plain($site->name). check_plain($site->slogan). strip_tags($site->mission) ....
";
$out_a[] = $site_line;
}
if (count($out_a)) {
echo ' implode('', $out_a)';
}
else {
echo "Облом";
}
?>

Аватар пользователя sas@drupal.org sas@drupal.org 31 августа 2007 в 9:30

Если хотите избавиться от дублирования записей при выводе, лучше так

<?php
$out_a = array();
$sites = db_query('SELECT * FROM {client}');
// sas 28_05_07
$sites_link_unique = array();
$sites_name_unique = array();
// sas 28_05_07
while($site = db_fetch_object($sites)) {
// check for bad urls (because url must include 'http://' or 'https://' prefix)
$site_test .= check_plain($site->name);
if ( (strpos($site->link, 'http://') === false) &&
(strpos($site->link, 'https://' ) === false) ) { continue; }
if (
(strpos($site->link, 'http://localhost' ) !== false) ||

// sas 28_05_07 check site for unique site->name
(strpos($site->link, '.' ) === false) ||

(array_key_exists(strtoupper(check_plain($site->name)),$sites_name_unique)) ||

(array_key_exists(strtoupper(check_plain($site->link)),$sites_link_unique))
)
{ continue; }

else
{
$sites_name_unique[strtoupper(check_plain($site->name))]='';
$sites_link_unique[strtoupper(check_plain($site->link))]='';
}
// sas 28_05_07 check site for unique in array

$site_line = "

  • link).
    "\">". check_plain($site->name). "
    "
    . ' (link). '">'.
    check_plain($site->link). '
    )

    '
    . ''. check_plain($site->slogan). '
    ';
    $site_line .= strip_tags($site->mission). '
  • ';
    $out_a[] = $site_line;
    }

    if (count($out_a)) {
    shuffle($out_a);
    echo '

      '. implode('', $out_a) . '

    ';
    }
    else {

    echo '

    Статистика в настоящее время не доступна.

    ';
    }
    ?>

    Аватар пользователя romantaran romantaran 1 сентября 2007 в 11:33

    Спасибо! Меня все-таки удивляет, что функция сайта-сервера в Друпале реализована, а как выводить список сайтов-клиентов надо придумывать самому.

    Аватар пользователя sas@drupal.org sas@drupal.org 4 сентября 2007 в 8:08

    Этот скрипт выводит инфу например в блоке, как часто будете вызывать эту страницу с блоком так часто и инфа обновляется , можно "повеситиь" на cron, вообщем ситуаций смого, напишите как конкретно часто и по какому событию надо ?!

    Аватар пользователя sas@drupal.org sas@drupal.org 4 сентября 2007 в 10:48

    И у одного сайта инфо не обновляется ("Новый сайт"), хотя фактически название, слоган и миссия уже изменились.
    1) Механизм оповещения настраивается на сайте "доноре" через core возможность Drupal (подробно написано на странице "каталог сайтов" внизу ).
    2) На сайте "приемнике" через xmlrpc.php информация записывается в таблицу "client";
    3) Script читает ее из таблицы, каждый раз при вызове в вашем случае адреса http://philosophystorm.org/page/709, конечно если она у вас не кеширована ( не могу знать)

    P.S. проверьте информацию в таблице client, тогда все станет понятно.