Codd

Codd
Рейтинг
65
Регистрация
13.01.2011
Возможно каким то запросом проапдейтить базу или может есть другие варианты ?

Запросом не получится, в mysql нет операций изменения значений ячеек с помощью регулярных выражений.

Возможно не хватает памяти, попробуйте увеличить значение memory_limit в php.ini.

Добавляете в meta.ini своего шаблона


[Актёры]
options_key = actors
type = textfield
description = "Актёры"
default = ""

В index.php шаблона добавляете

elseif (mso_segment(1)=='actors') require('type/actors.php'); 

Получится

	

# анализ сегментов URL, где переопределяется файл типа
if ($mso_type_file == 'users')
{
if (mso_segment(3)=='edit') $mso_type_file = 'users-form'; // редактирование комюзера
elseif (mso_segment(3)=='lost') $mso_type_file = 'users-form-lost'; // восстановление пароля комюзера
elseif (mso_segment(2)=='') $mso_type_file = 'users-all'; // список всех комюзеров
elseif (mso_segment(1)=='actors') require('type/actors.php');
}

В папке type создаёте файл actors.php, в него копируете данные из tag.php

В начале файла параметры заменяете на это


// параметры для получения страниц
$par = array( 'limit' => mso_get_option('limit_post', 'templates', '7'),
'cut' => mso_get_option('more', 'templates', t('Читать полностью »')),
'type'=>false,
'custom_type'=>'tag',
'meta_key'=>'actors',
'function_add_custom_sql' => 'set_actors'
);

function set_actors(){
$CI = &get_instance();
$CI->db->ar_where[3] = preg_replace("| = '(.*?)'|", " LIKE '%$1%'", $CI->db->ar_where[3]);
}

В месте, где надо выводить актеров вставляете это (в файл page.php)


echo '<div class="info">';

// указан в meta раздел?
if ($rasz = mso_page_meta('actors', $page_meta, '', '', '', false))
{
// формируем ссылку
$link = array();
$rasz = explode(',', $rasz);
foreach($rasz as $value){
$value = trim($value);
$link[] = '<a href="' . getinfo('siteurl') . 'actors/' . $value . '">' . $value . '</a>';
}


// выводим
echo '<span>Актёры:</span> ' . implode(', ', $link) ;
}

echo '</div>';

Поставьте сайт на локалку и воспользуйтесь сниффером (fiddler2, wireshark, HTTP Analyzer) - увидите все обращения к внешним ресурсам.

Варианты вроде Firebug, Drаgonаly помогут только если данные подгружаются с помощью js скрипта, что в вашем случае маловероятно.

На примере http://www.phpbb2.ru/forums.html

<?php

$forum = file_get_contents('http://www.phpbb2.ru/forums.html');

preg_match('|Наши пользователи оставили <b>(.*?)</b> сообщений.|', $forum, $count_message);
preg_match('|Всего <b>(.*?)</b> зарегистрированных пользователей|', $forum, $count_users);

$count_message = $count_message[1]; // количество сообщений
$count_users = $count_users[1]; // количество юзеров

# вывод информации
echo "$count_users пользователей оставили $count_message сообщений";
?>

Можно парсить по разделам на сайте, например

http://yandex.ru/yandsearch?text=http://newsland.ru/news&site=newsland.ru&lr=46

http://yandex.ru/yandsearch?text=http://newsland.ru/page&site=newsland.ru&lr=46

подойдет, но ограничение на 1000 ссылок в результатах поиска по 1 запросу и здесь не обойти.

Я так понимаю, меняем $cat на ID родительской рубрики.. как его получить?


$cat = get_category(get_query_var('cat'),false);
$cat_parent = $cat->parent; // ID родительской категории

Пользуюсь уже более года услугами ruweb, нареканий к ним нет.

Ндас, весь этот гемор можно избежать, написав несколько строк кода:

<?php
$abc = array();
# получаем все посты
$posts = get_posts('numberposts=-1');

# создаём массив с алфавитом
foreach($posts as $post){
$sub_title = mb_substr($post->post_title, 0, 2);
$abc[$sub_title][] = $post;
}

# выводим алфавит: "первые 2 буквы - количество постов"
foreach($abc as $key => $value){
echo $key. ' - ' .count($value);
}

?>

это создаст такую пагу http://ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F:%D0%90%D0%BB%D1%84%D0%B0%D0%B2%D0%B8%D1%82%D0%BD%D1%8B%D0%B9_%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C

для вывода записей по определённым буквам, нужно будет написать ещё несколько строчек...

Всего: 77