Вы не зашли.
Страницы 1
Юзаю тему как попасть в гуглнюз и столкнулся с проблемой что не все новости попадаю туда (всего пару штук в день) потом начал техничесткие требования искать и наткнулся на таку проблему - гугл хочет чтобы в урл были более 3 цыфр и тогда будет все ок.
Технические требования: URL-адреса статей
Если вы хотите включить URL своих статей в Новости Google, они должны соответствовать следующим требованиям:
Быть уникальными. Каждая из страниц, отображающих полный текст статьи, должна иметь уникальный URL. Мы не можем включить в Новости Google сайты, отображающие несколько статей под одним URL или не имеющие ссылок на страницы, посвященные только одной статье каждая.
Быть постоянными. Например, мы не сможем сканировать страницу www.vash_sait.com/novosti1.html, если ее содержание ежедневно меняется. Чтобы гарантировать надлежащее функционирование наших ссылок на статьи, каждая статья на новостном сайте должна быть связана с одним уникальным URL, и этот URL должен быть постоянным (то есть, он не может использоваться повторно).
Отображать трехзначное число. URL каждой статьи должен содержать уникальный номер, состоящий по крайней мере из трех разрядов. Например, мы не можем сканировать статью с таким URL: http://www.google.com/news/article23.html. Зато можем сканировать статью с таким URL: http://www.google.com/news/article234.html
Примите во внимание, если единственным числом в статье является четырехзначный номер, похожий на год, например, http://www.google.com/news/article2006.html, мы не можем сканировать ее.
Посмотрел свои новости в гугл нюз и действительно в новостях где есть хоть какието цыфри, то они попадают а с простым урл нет(((
Вот я и подумал, что вручную ето конешно сложно будет всегда дописывать а вот если б туда id новости вписать то было б супер
кто что посоветует?
Изменено legenda (2010-03-29 15:51:26)
Не в сети
Trashcka, ето в управление форматом ссилок?
тут сделал так
news - news - /{category}/{altname}_100{id}[/page{page}].html
тепер все ссилки имеют минимум 3 цыфри.
- Вопрос такой несломал ли я етим чтото?
- Вожможен ли какойто другой вариант чтобы действовало только для новых новостей, а то пролучается все старые урл недействительные (((
Не в сети
Trashcka, мне какраз для новых и надо, а вот так неполучается, изменение для все ссилок делается(
или то что я сделал это не то что ты писала? тогда поподробнее напиши...
Изменено legenda (2010-03-29 18:08:36)
Не в сети
~55 строчка /engine/actions/addnews.php:
вместо:
// Check for dup if alt_name is specified
if ($alt_name) {
if ( is_array($mysql->record("select id from ".prefix."_news where alt_name = ".db_squote($alt_name)." limit 1")) ) {
msg(array("type" => "error", "text" => $lang['msge_alt_name'], "info" => $lang['msgi_alt_name']));
return;
}
$SQL['alt_name'] = $alt_name;
} else {
// Generate uniq alt_name if no alt_name specified
$alt_name = strtolower($parse->translit(trim($title), 1));
// Make a conversion:
// * '.' to '_'
// * '__' to '_' (several to one)
// * Delete leading/finishing '_'
$alt_name = preg_replace(array('/\./', '/(_{2,20})/', '/^(_+)/', '/(_+)$/'), array('_', '_'), $alt_name);
// Make alt_name equal to '_' if it appear to be blank after conversion
if ($alt_name == '') $alt_name = '_';
$i = '';
while ( is_array($mysql->record("select id from ".prefix."_news where alt_name = ".db_squote($alt_name.$i)." limit 1")) ) {
$i++;
}
$SQL['alt_name'] = $alt_name.$i;
}
вставить:
// Check for dup if alt_name is specified
if ($alt_name) {
if ( is_array($mysql->record("select id from ".prefix."_news where alt_name = ".db_squote($alt_name)." limit 1")) ) {
msg(array("type" => "error", "text" => $lang['msge_alt_name'], "info" => $lang['msgi_alt_name']));
return;
}
$SQL['alt_name'] = $alt_name.rand(100, 999);
} else {
// Generate uniq alt_name if no alt_name specified
$alt_name = strtolower($parse->translit(trim($title), 1));
// Make a conversion:
// * '.' to '_'
// * '__' to '_' (several to one)
// * Delete leading/finishing '_'
$alt_name = preg_replace(array('/\./', '/(_{2,20})/', '/^(_+)/', '/(_+)$/'), array('_', '_'), $alt_name);
// Make alt_name equal to '_' if it appear to be blank after conversion
if ($alt_name == '') $alt_name = '_';
$i = '';
while ( is_array($mysql->record("select id from ".prefix."_news where alt_name = ".db_squote($alt_name.$i)." limit 1")) ) {
$i++;
}
$SQL['alt_name'] = $alt_name.$i.rand(100, 999);
}
Тогда для старых новостей адрес остается тот же, что и был, а у новых прибавляется произвольное число от 100 до 999 в конце.
Не в сети
Поскажите как эту фишку решить в последних СВН версиях, в релизе 0.9.3 понятно, там вместо файла addnews.php надо news.php и блок такой был, а вот смотрю версия 956 уже даже нету такого блока, где ковирять?
Не в сети
Не в сети
legenda, часть кода /engine/actions/addnews.php ушло в /engine/includes/inc/lib_admin.php
~333 строка, свн не помню у меня какой, по моему 965
Не в сети
legenda, пробовал. Но не могу понять почему тебе не подходит вариант через ЧПУ.
А вообще можно в engine/includes/inc/lib_admin.php после ~434 (SVN версия):
$mysql->query("insert into ".prefix."_news (".implode(",",$vnames).") values (".implode(",",$vparams).")");
$id = $mysql->result("SELECT LAST_INSERT_ID() as id");
добавить:
$SQL['alt_name'] = sprintf("%03u", $id).$SQL['alt_name'];
$mysql->query("update ".prefix."_news set alt_name = ".db_squote($SQL['alt_name'])." where id = ".intval($id));
И тогда во всех новых новостях в начало альт. имени будет добавляться ID новости.
Так пойдёт?
Не в сети
legenda, часть кода /engine/actions/addnews.php ушло в /engine/includes/inc/lib_admin.php
~333 строка, свн не помню у меня какой, по моему 965
спасибо, нашел нужет код там
legenda, пробовал. Но не могу понять почему тебе не подходит вариант через ЧПУ.
через ЧПУ не подходит так как у всех новых старых новостях у меня поменяется урл и все старые новости выпадут из индекса
А вообще можно в engine/includes/inc/lib_admin.php после ~434 (SVN версия):
$mysql->query("insert into ".prefix."_news (".implode(",",$vnames).") values (".implode(",",$vparams).")"); $id = $mysql->result("SELECT LAST_INSERT_ID() as id");
добавить:
$SQL['alt_name'] = sprintf("%03u", $id).$SQL['alt_name']; $mysql->query("update ".prefix."_news set alt_name = ".db_squote($SQL['alt_name'])." where id = ".intval($id));
И тогда во всех новых новостях в начало альт. имени будет добавляться ID новости.
Так пойдёт?
А так уже не плохо, только цыфри идут сначала а потом альтнейм.
Вопшем все ок подходят оба варианта, теперь даже можно выбирать)))!
Изменено legenda (2012-04-01 08:41:55)
Не в сети
vitaly пишет:legenda, пробовал. Но не могу понять почему тебе не подходит вариант через ЧПУ.
через ЧПУ не подходит так как у всех новых старых новостях у меня поменяется урл и все старые новости выпадут из индекса
Вообще можно было бы сделать так, чтобы новость была доступна с и без цифр одновременно, при этом двиг бы генерил ссылки только с цифрами.
Тогда бы старые из индекса не выпали..
А так уже не плохо, только цыфри идут сначала а потом альтнейм.
Тогда делаешь:
$SQL['alt_name'] = $SQL['alt_name'].sprintf("%03u", $id);
или даже:
$SQL['alt_name'] = $SQL['alt_name']."-".sprintf("%03u", $id);
и цифры будут в конце (и даже отделённые символом "-" от альт.имени).
Не в сети
Страницы 1