ADD OG для статей
This commit is contained in:
parent
bc987157f6
commit
450196b1c6
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue