Нов сайт за обяви

bgtrader

New Member
Здравейте!

Извинете ме ако съм сбъркал раздела за постването на темата.

Направих си сайт, bgtrader.net. Той е за безплатни обяви, но самите обяви не се индексират от гугъл. Сигурен съм, че съм допуснал много грешки при изграждането на сайта, затова ще ви бъда много благодарен ако ми дадете някои съвети и мнения.

Предварително ви благодаря :)
 
От: Нов сайт за обяви

Да, имам проблем, но не откривам решение за него. Търсих какви ли не съвети за решаването на този проблем, но - нищо
 
От: Нов сайт за обяви

Как извикваш обявите в списъка - SQL, XML, File?
 
От: Нов сайт за обяви

PHP:
<?php
    global $database;
	$database->setQuery("SELECT a.id, a.category, a.ad_headline, a.ad_condition"
	. "\n FROM #__marketplace_ads AS a, "
	. "\n #__marketplace_categories AS b WHERE b.published='1' AND a.category = b.id > '0'"
	. "\n ORDER BY a.id DESC "
	. "\n LIMIT 15 ");
    $meslist = $database->loadObjectList();
	foreach ($meslist as $mes){
	echo "<ul><li><a href=".sefRelToAbs( "index.php?option=com_marketplace&amp;page=show_ad&amp;catid=$mes->category&amp;adid=$mes->id&amp;Itemid=$Itemid").">";
	if ( strlen($mes->ad_headline)>28){
	echo substr($mes->ad_headline , 0, 28);
	}
	else {
	echo $mes->ad_headline;
	}
	echo "</a></li></ul>";
	}
?>
 
От: Нов сайт за обяви

Значи трябва да стане, като замениш substr със utf8_substr, както пише в линка на netsurfer

Ето кода:
Код:
<?php
    global $database;
    $database->setQuery("SELECT a.id, a.category, a.ad_headline, a.ad_condition"
    . "\n FROM #__marketplace_ads AS a, "
    . "\n #__marketplace_categories AS b WHERE b.published='1' AND a.category = b.id > '0'"
    . "\n ORDER BY a.id DESC "
    . "\n LIMIT 15 ");
    $meslist = $database->loadObjectList();
    foreach ($meslist as $mes){
    echo "<ul><li><a href=".sefRelToAbs( "index.php?option=com_marketplace&amp;page=show_ad&amp;catid=$mes->category&amp;adid=$mes->id&amp;Itemid=$Itemid").">";
    if ( strlen($mes->ad_headline)>28){
    echo utf8_substr($mes->ad_headline , 0, 28);
    }
    else {
    echo $mes->ad_headline;
    }
    echo "</a></li></ul>";
    }
?>
Кажи дали е станало
 
От: От: Нов сайт за обяви

при мен с това се оправи :) mb_substr()
Значи трябва да стане, като замениш substr със utf8_substr, както пише в линка на netsurfer

Ето кода:
Код:
<?php
    global $database;
    $database->setQuery("SELECT a.id, a.category, a.ad_headline, a.ad_condition"
    . "\n FROM #__marketplace_ads AS a, "
    . "\n #__marketplace_categories AS b WHERE b.published='1' AND a.category = b.id > '0'"
    . "\n ORDER BY a.id DESC "
    . "\n LIMIT 15 ");
    $meslist = $database->loadObjectList();
    foreach ($meslist as $mes){
    echo "<ul><li><a href=".sefRelToAbs( "index.php?option=com_marketplace&amp;page=show_ad&amp;catid=$mes->category&amp;adid=$mes->id&amp;Itemid=$Itemid").">";
    if ( strlen($mes->ad_headline)>28){
    echo utf8_substr($mes->ad_headline , 0, 28);
    }
    else {
    echo $mes->ad_headline;
    }
    echo "</a></li></ul>";
    }
?>
Кажи дали е станало
 
От: Нов сайт за обяви

Всъщност точно това е правилно:

PHP:
<?php 
    global $database; 
    $database->setQuery("SELECT a.id, a.category, a.ad_headline, a.ad_condition" 
    . "\n FROM #__marketplace_ads AS a, " 
    . "\n #__marketplace_categories AS b WHERE b.published='1' AND a.category = b.id > '0'" 
    . "\n ORDER BY a.id DESC " 
    . "\n LIMIT 15 "); 
    $meslist = $database->loadObjectList(); 
    foreach ($meslist as $mes){ 
    echo "<ul><li><a href=".sefRelToAbs( "index.php?option=com_marketplace&amp;page=show_ad&amp;catid=$mes->category&amp;adid=$mes->id&amp;Itemid=$Itemid").">"; 
    if ( strlen($mes->ad_headline)>28){ 
    echo mb_substr($mes->ad_headline , 0, 28); 
    } 
    else { 
    echo $mes->ad_headline; 
    } 
    echo "</a></li></ul>"; 
    } 
?>
 
От: Нов сайт за обяви

Отново така ги извежда ... с по-малко грешки е, но има си има ромбчетата. В базата данни всичко е ОК. При работа само с джумлата - няма проблеми, но намеша ли се компонента Маркетплейс - грешкие започват. А когато преправя кода на utf8_substr ми изкарва съобщение Fatal error: Call to undefined function utf8_substr() in ... и никакви обяви.
 
От: Нов сайт за обяви

ht*p://img39.imageshack.us/img39/3751/shoto.png

извини ме за адреса, но не мога да поствам линкове
 
От: Нов сайт за обяви

Аз наскоро имах същият проблем.
За PHP стринга е масив от байтове. При UTF-8 един символ е 2 байта.
Ако вземеш първите 5 байта от стринг с substr ще ти изкара 2 символа и половина. Баш този половиния символ е проблема.
Заменяш
Код:
еcho substr($mes->ad_headline , 0, 28);
със
Код:
echo substr($mes->ad_headline , 0, 27);
или
Код:
echo substr($mes->ad_headline , 0, 29);

и си готов!:clap:
 
Последно редактирано:
От: Нов сайт за обяви

Аз също имах този проблем, та като видях темата, ме подсетихте да го реша. Но не стана по нито един от гореописаните начини, а трябваше следното:

1) substr се замества с mb_substr
2) преди затварящата скоба добавяте 'UTF8', т.е. във вашия случай трябва да стане

Код:
echo mb_substr($mes->ad_headline , 0, 28,'UTF8');
 

Горе