ADD OG для статей

This commit is contained in:
Krivchikov Dmitry 2015-09-11 13:56:48 +03:00
parent bc987157f6
commit 450196b1c6
5 changed files with 80 additions and 12 deletions

View File

@ -123,4 +123,18 @@ class Helper
return $og;
}
public static function buildArticleOG($article)
{
$og = array();
$og['title'] = str_replace('"', 'ʺ', $article->title) . ' [wikipoints.ru]';
$article->text = Markdown::getClear(str_replace('"', 'ʺ', $article->text));
$og['description'] = mb_substr($article->text, 0, 97, 'UTF-8') . '...';
$og['site_name'] = 'WikiPoints: Лучшие выходные - это выходные в путешествии!';
$og['type'] = 'website';
$og['url'] = 'http://wikipoints.ru/page/article/id/' . $article->id;
$og['image'] = $article->getImg('middle');
return $og;
}
}

View File

@ -60,4 +60,53 @@ class Markdown
$rep = '<a href="$0" title="$0" target="_blank">$1</a>';
return preg_replace($pr, $rep, $string);
}
static function getClear($string)
{
// Headers
for ($index = 3; $index > 0; $index--) {
$pr = '/(^#{' . $index . '} .{1,})/m';
preg_match_all($pr, $string, $headers);
if (isset($headers[0][0])) {
foreach ($headers[0] as $header) {
$hI = $index+1;
$string = str_replace($header, '', $string);
}
}
}
// Bold & Italic
$pr = '(\*{1,3}(.+?)\*{1,3})';
$rep = '$1';
$string = preg_replace($pr, $rep, $string);
// Uderline
$pr = '(\_{1}(.+?)\_{1})';
$rep = '$1';
$string = preg_replace($pr, $rep, $string);
// Images
$pr = '(\[img[\|]#(\d+)\])';
$rep = ' ';
$string = preg_replace($pr, $rep, $string);
// \n & \r
$string = str_replace(array("\n","\r"), ' ', $string);
// multi-space
$pr = '(\s{2,})';
$rep = ' ';
$string = preg_replace($pr, $rep, $string);
// URL
$pr = '((https{0,1}:\/\/[\da-z\.-]+\.[a-z]{2,6})[\/\w\?=&#%+\.,-]*\/?)';
$rep = '<a href="$0" title="$0" target="_blank">$1</a>';
$string = preg_replace($pr, $rep, $string);
return $string;
}
}

View File

@ -199,7 +199,7 @@ class PageController extends Controller
self::render('article.php', array(
'article' => $article,
'randomPoint' => Point::model()->getRandom(),
// 'og' => Helper::buildOG($point),
'og' => Helper::buildArticleOG($article),
// 'user' => App::$user,
));
} else {

View File

@ -15,4 +15,20 @@ class Article extends Model
return new self();
}
public function getImg($size = 'small')
{
$imgId = (int)$this->photoId;
if ($imgId) {
$img = ArticlePhotos::model()->getByPK($imgId);
if ($img) {
return '/photos/articles/' . $size . '/' . $img->name;
}
}
return '/img/logo.png';
}
}

View File

@ -16,15 +16,4 @@
</div>
</div>
</div>
<!-- hr/>
<div class="row">
<div class="col-md-12">
<a href="/page/point/id/<?= $randomPoint->id ?>" style="float: left; margin: 0 20px 0 0;"><img src="<?= $randomPoint->getImg() ?>" style="width: 200px;"/></a>
<h3 style="margin-top: 0;">Это интересно: <?= $randomPoint->name ?></h3>
<p>
<?= mb_substr($randomPoint->description, 0, 400, 'UTF-8') ?>...
<a class="" href="/page/point/id/<?= $randomPoint->id ?>" role="button"><nobr> читать далее »</nobr></a>
</p>
</div>
</div -->
</div>