У меня есть два блока агрегатора Drupal на моей странице, один для канала Twitter, другой для канала блога. Они оба предоставляют информацию немного по-разному.
Я бы хотел, чтобы в ленте блога отображался заголовок, а затем первые 80 символов поста в качестве тизера.
Я бы хотел, чтобы в твиттере отображалось описание и ничего больше. Причина этого в том, что заголовок представляет собой целую ссылку на статус, тогда как описание помещает его в стандартный текст и связывает любые URL-адреса, включенные в него.
Пока у меня есть это:
function mythemename_aggregator_block_item($item, $feed = 0) {
// Target p, div and images and preg_replace them with nothing
$tagstoreplace[0] = '/<p>/';
$tagstoreplace[1] = '/<div(.*?)>(.*?)<\/div>/im';
$tagstoreplace[2] = '/<img[^>]*>/';
// Generate output
$output = '<p class="feed-item-title"><a href="'. check_url($item->link) .'">'. check_plain($item->title) ."</a></p>\n";
$output .= '<p class="feed-item-description">' . substr(preg_replace($tagstoreplace, '', $item->description),0,80) . '...</p>';
return $output;
}
Что отлично подходит для моего блога, отлично. Тем не менее, это, очевидно, сократит мой канал Twitter до 80 символов. Я попробовал компромисс из 140 символов, но с html и всем прочим, <a href="..."></a>
включен в strlen()
, так что это не очень реально, особенно если у меня есть несколько ссылок там, как это сделал бы мой блог Описание тизера слишком длинное.
Итак, наконец, мой вопрос таков: могу ли я настроить вывод в зависимости от того, на какой агрегатный канал я хочу его поставить?
Я думал об этом, получив идентификатор контейнера div на странице, но похоже, что это не пойдет. В идеале я получу такой код:
function mythemename_aggregator_block_item($item, $feed = 0) {
// Target p, div and images and preg_replace them with nothing
$tagstoreplace[0] = '/<p>/';
$tagstoreplace[1] = '/<div(.*?)>(.*?)<\/div>/im';
$tagstoreplace[2] = '/<img[^>]*>/';
// Get feed type
$blog = //something;
$twitter = //something;
// Generate output
if($blog) {
$output = '<p class="feed-item-title"><a href="'. check_url($item->link) .'">'. check_plain($item->title) ."</a></p>\n";
$output .= '<p class="feed-item-description">' . substr(preg_replace($tagstoreplace, '', $item->description),0,80) . '...</p>';
}
if($twitter) { $output .= '<p class="feed-item-description">' . $item->description . '</p>'; }
return $output;
Извините за длительность этого вопроса, и спасибо за настойчивость!