Установил тему с орга , зелененькую, все было хорошо, пока сегодня не увидел белую страницу , сайт доступен везде кроме фронта, вот ошибка Error: Call to a member function getFileUri() on null в restaurant_zymphonies_theme_get_slider_content(), я так понимаю связано со слайдером, а именно с заменой картинок, может кто сталкивался уже с этой проблемой, вообще у этого автора многие темы с багами на орге, причем подсвечены зеленым, по некоторым могу помочь, знаю уже где косяки
Restaurant Zymphonies Theme. Не работает главная страница, Drupal 8
Главные вкладки
Лучший ответ
1
Вот решение, вдруг кому пригодится, потому что эти ошибки у него во многих темах для Drupal 8:
<?php/**
* Slider
* Implements custom function for get slider content.
*/
function restaurant_zymphonies_theme_get_slider_content() {
$slider_content = array();
for ($i = 1; $i <= theme_get_setting('no_of_slides'); $i++) {
$fid = theme_get_setting('slide_image_path'.$i,'restaurant_zymphonies_theme');
if (!empty($fid)) {
$file = file_load($fid[0]);
if(!empty($file)){
$uri = $file->getFileUri();
$path = file_create_url($uri);
}
else{
$path = base_path() . drupal_get_path('theme', 'restaurant_zymphonies_theme') . theme_get_setting('slide_image_path_' . $i, 'restaurant_zymphonies_theme');
}
}
$slider_content[$i] = '<li>
<img src="' . $path . '" alt="Slider Banner" />
<div class="slider-caption">
<h2 class="slider-title">' . theme_get_setting('slide_title_' . $i, 'restaurant_zymphonies_theme').'</h2>
<div class="clearfix"><p class="slider-description">' . theme_get_setting('slide_description_' . $i, 'restaurant_zymphonies_theme').'</p></div>
<a href=' . theme_get_setting('slide_url_' . $i, 'restaurant_zymphonies_theme') . ' class="more-link">Read more</a>
</div>
</li>';
}
return $slider_content;
}
?>
Комментарии
Вот код слайдера
<?php/**
* Slider
* Implements custom function for get slider content.
*/
function restaurant_zymphonies_theme_get_slider_content() {
$slider_content = array();
for ($i = 1; $i <= theme_get_setting('no_of_slides'); $i++) {
$fid = theme_get_setting('slide_image_path'.$i,'restaurant_zymphonies_theme');
if (!empty($fid)) {
$file = file_load($fid[0]);
$uri = $file->getFileUri();
$path = file_create_url($uri);
}
else {
$path = base_path() . drupal_get_path('theme', 'restaurant_zymphonies_theme') . theme_get_setting('slide_image_path_' . $i, 'restaurant_zymphonies_theme');
}
$slider_content[$i] = '<li>
<img src="' . $path . '" alt="Slider Banner" />
<div class="slider-caption">
<h2 class="slider-title">' . theme_get_setting('slide_title_' . $i, 'restaurant_zymphonies_theme').'</h2>
<div class="clearfix"><p class="slider-description">' . theme_get_setting('slide_description_' . $i, 'restaurant_zymphonies_theme').'</p></div>
<a href=' . theme_get_setting('slide_url_' . $i, 'restaurant_zymphonies_theme') . ' class="more-link">Read more</a>
</div>
</li>';
}
return $slider_content;
}
?>
Кстати, тут кто то спрашивал где удалять в его темах read more, так вот в этой функции)))
Вот решение, вдруг кому пригодится, потому что эти ошибки у него во многих темах для Drupal 8:
<?php/**
* Slider
* Implements custom function for get slider content.
*/
function restaurant_zymphonies_theme_get_slider_content() {
$slider_content = array();
for ($i = 1; $i <= theme_get_setting('no_of_slides'); $i++) {
$fid = theme_get_setting('slide_image_path'.$i,'restaurant_zymphonies_theme');
if (!empty($fid)) {
$file = file_load($fid[0]);
if(!empty($file)){
$uri = $file->getFileUri();
$path = file_create_url($uri);
}
else{
$path = base_path() . drupal_get_path('theme', 'restaurant_zymphonies_theme') . theme_get_setting('slide_image_path_' . $i, 'restaurant_zymphonies_theme');
}
}
$slider_content[$i] = '<li>
<img src="' . $path . '" alt="Slider Banner" />
<div class="slider-caption">
<h2 class="slider-title">' . theme_get_setting('slide_title_' . $i, 'restaurant_zymphonies_theme').'</h2>
<div class="clearfix"><p class="slider-description">' . theme_get_setting('slide_description_' . $i, 'restaurant_zymphonies_theme').'</p></div>
<a href=' . theme_get_setting('slide_url_' . $i, 'restaurant_zymphonies_theme') . ' class="more-link">Read more</a>
</div>
</li>';
}
return $slider_content;
}
?>
Это правильный код слайдера
Не забывайте очистить кеш после того как меняете код!!!